使用ffmpeg合并视频文件的一些问题记录
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详解》