簡介與其他資料:
http://www.mobile01.com/topicdetail.php?f=510&t=3734550
其他範例:
http://www.mobile01.com/topicdetail.php?f=510&t=4487462
參考資料
FFmpeg 官方資料:
https://trac.ffmpeg.org/wiki/Concatenate
直接串聯相同編碼參數的檔案
如果媒體檔案有完全相同的編碼與編碼參數,可以直接將它們串連起來,而不需要經過重新編碼。
使用 `concat` protocol 串聯 clip1 clip2 clip3:
ffmpeg -i "concat:clip1.mp4|clip2.mp4|clip3.mp4" -c copy -bsf:a aac_adtstoasc output.mp4
使用 `concat` demuxer 串聯檔案列表 mylist.txt 中的檔案:
ffmpeg -f concat -i mylist.txt -c copy output.mp4
檔案列表格式:
# 這是一個註解
file '路徑\檔案1'
file '路徑\檔案2'
file '路徑\檔案3'
※ 文字編碼格式必須是 ANSI 或 UTF-8
CMD 快速建立檔案列表
將工作目錄下所有 m2ts 檔案的路徑寫入 mylist.txt:
chcp 65001
(for %%i in (*.m2ts) do @echo file '%%i') > mylist.txt
路徑字元限制
`concat` demuxer 預設會拒絕"不安全"的檔案路徑 (安全檔名組成為英、數、底線、句點、連接號)。
使用 `-safe 0` 來接受所有檔名:
ffmpeg -f concat -safe 0 -i mylist.txt -c copy output.mkv
串聯不同編碼參數的檔案
如果媒體檔案沒有完全相同的編碼與編碼參數,可以直接將它們重新編碼為相同的編碼與編碼參數,再直接串聯。
先將片源統一參數重新編碼再使用 `concat` protocol 串聯影片:
ffmpeg -i input.mp4 -s 1280x720 -ac 2 -c:v libx264 -c:a libfdk_aac clip1.mp4
ffmpeg -i input.avi -s 1280x720 -ac 2 -c:v libx264 -c:a libfdk_aac clip2.mp4
ffmpeg -i input.mkv -s 1280x720 -ac 2 -c:v libx264 -c:a libfdk_aac clip3.mp4
ffmpeg -i "concat:clip1.mp4|clip2.mp4|clip3.mp4" -c copy -bsf:a aac_adtstoasc output.mp4
使用 `concat` demuxer 串聯輸入並統一參數重新編碼:
ffmpeg -f concat -i mylist.txt -s 1280x720 -ac 2 -c:v libx264 -c:a libfdk_aac output.mp4
將不同寬高比的影片以自動填充黑邊方式統一比例:
ffmpeg -f concat -i mylist.txt -vf "scale='w=min(1280,trunc((720*dar)/2+0.5)*2):h=min(720,trunc((1280/dar)/2+0.5)*2)',pad='w=1280:h=720:x=(ow-iw)/2:y=(oh-ih)/2',setsar='r=1'" -c:v libx264 -c:a libfdk_aac output.mp4
自動填充黑邊: http://www.mobile01.com/topicdetail.php?f=510&t=4038239