命令行很简单:
ffmpeg -f concat -i filelist.txt -c copy outputVideo.mp4
其中filelist.txt是一个文本文件。里面列了需要合并的文件列表。格式类似这样:
file 'input1.mp4'
file 'input2.mp4'
很简单吧,然而并不!(总是有然而)这里有两个坑。
1.视频的分辨率和格式必须一样。因为这是简单的拼接,并没有再次转码。(所以速度很快)如果视频格式不同就会出现拼接失败,比如只有头一个文件或者后面的文件花屏等。(不同格式视频进行重新编解码拼接的话要使用concat滤镜的命令,这个速度就慢些了,待我回头研究下先。)
2.以上命令,如果头一个文件没有声音,那么后面的视频也会没有声音。这就很尴尬了。所以要保留后面文件的声音,则第一个视频必须有声音。(好诡异的坑,难道是因为直接拼接的如果前面没有音频就无法封装音频流?)