使用ffmpeg合併影片檔案的一些問題記錄

Mrcoool發表於2024-03-21

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詳解

相關文章