如何使用 ffmpeg 拼接 2 個影片檔?

如何使用 ffmpeg 拼接 2 個影片檔?

我使用以下命令從照片創建了一些延時影片:

ffmpeg -i IMG_%03d.JPG -s 1440x1080 -sameq video.MP4

而且效果很好。現在我想加入幾個延時影片來製作一個更長的影片(所有輸入影片都具有完全相同的格式)。我已經嘗試使用:

cat video1.MP4 video2.MP4 > stitch.MP4

但輸出最終等於 video1.MP4

我不想轉碼也不想更改影片的任何參數,我只想進行端到端拼接,就好像這些影片位於播放清單上一樣。

謝謝!

答案1

使用最新版本的 ffmpeg,您可以使用 concat 解復用器。建立一個名為 input.txt 的文件,其中包含以下行:

file 'input1.mp4'
file 'input2.mp4'
file 'input3.mp4'
file 'input4.mp4'

使用 bash shell,您可以使用 for 循環來建立文件,如下所示:

rm inputs.txt
for f in input{1..4}.mp4; do echo "file '$f'" >> inputs.txt; done

然後,

ffmpeg -f concat -i inputs.txt -c copy output.mp4

既然使用了-c copy,這將是完全無損的。

答案2

輸出不會等於 video1.mp4,但影片的頁首/頁尾將在 video1.mp4 周圍開始和結束,因此您的播放器不會進入 video2.mp4。假設視訊具有相同的位元率/編解碼器等:

cat video1.MP4 video2.MP4 | ffmpeg -y -i - -genpts -vcodec copy -acodec copy stitch.MP4

請記住,這不一定是最好的方法(最好在一個影片中同時進行所有時間間隔),就好像編解碼器有損一樣,您會導致發電損失

答案3

我知道你用 ffmpeg 說過,但我很幸運地使用 mp4box 將檔案簡單地拼接在一起。你可以在這裡下載。

http://gpac.wp.mines-telecom.fr/mp4box/

這是命令列範例:

mp4box -cat <file> -cat <file> dest.mp4

相關內容