1、需要重新編解碼的方案:
ffmpeg -c:v h264_cuvid -i A.mp4 -i B.mp4 -i C.mp4 -i D.mp4 -c:v h264_nvenc -b:v 4096k output.mkv
上述命令的作用是使用nvidia加速的h264_cuvid解碼器對4個mp4檔案進行解碼,並使用h264_nvenc編碼器進行編碼,位元率4096k。合併後的檔案為output.mkv。
此命令呼叫Nvidia的GPU進行編解碼。2060的卡、原影片1080P的解析度、6000k的源位元率,速度大約是10-15x左右。
選擇解碼器之前,需要使用ffprobe -show_streams -print_format json XXX.mp4的命令,檢視下原影片的編碼方式和位元率。選定正確的解碼器。
解碼器的檢視命令是:ffmpeg -codecs | findstr "h264"
2、不需要重新編解碼的方案:
先建立一個文字檔案filelist.txt:
file 'input1.mkv'
file 'input2.mkv'
file 'input3.mkv'
然後使用ffmpeg -f concat -i filelist.txt -c copy output.mkv進行合併。
直接合並檔案,不重新編解碼,也不呼叫GPU。速度最快(受限磁碟IO)。需要注意的是檔案需要是同尺寸、同編碼型別。
本文參考了《ffmpeg 硬體加速影片轉碼指南》、《使用ffmpeg拼接影片踩坑記錄》、《ffmpeg拼接影片方法concat詳解》