用ffmpeg串接多個影音檔案

官方文件其實有寫怎麼做串接影音檔案
http://ffmpeg.org/ffmpeg-formats.html#concat

1. 產生要串接的檔案列表
(for %%i in (*.wav) do @echo file '%%i') > mylist.txt
2. 執行串接指令
ffmpeg -f concat -safe 0 -i mylist.txt -c copy output.wav


我手動產生串接檔案DJI_0098_list.txt內容,還要寫file空格加上檔案路徑,路徑要注意跳脫字元的問題或是加上單引號''讓字串不處理
file E:\\20191217\\DJI_0098_001.MP4
file E:\\20191217\\DJI_0098_002.MP4
file E:\\20191217\\DJI_0098_003.MP4

執行指令
ffmpeg.exe -f concat -safe 0 -i DJI_0098_list.txt -c copy DJI_0098.MP4

-safe 0是不檢查指定的檔案路徑中是否含有不合法字元

比較懶的方式是寫好串接文字檔後,丟進下面這個script讓他跑,就會用文字檔名當作串接後的MP4檔名
另外官方針對一些視訊, 需要再調整的部分可以參考下面
http://www.ffmpeg.org/faq.html#How-can-I-concatenate-video-files_003f

下面這個寫法在我的案例(H.264 4k MP4)是無法成功的,影片長度跟第一個檔案的一樣。
ffmpeg -i "concat:input1.avi|input2.avi|input3.avi" -c copy output.avi

留言