精通
英语
和
开源
,
擅长
开发
与
培训
,
胸怀四海
第一信赖
锐英源精品开源心得,转载请注明:“锐英源www.wisestudy.cn,孙老师作品,电话13803810136。”需要全文内容也请联系孙老师。
这里所说的合并,是将多个视频片段连接起来,形成一个连续的视频文件,而不是类似于ffmpeg将音频与视频的叠加合并,ffmpeg的多输入文件(叠加合并)好像也只是针对此目的,将视频和音频混合编辑到一起,视频合并的方式有很多,比如一种是多段视频一段播放完之后再播放一段,这种叫concat。 还有就是将两个视频在同一个窗口里播放,类似画中画的效果。这种方式叫做overlay。下面我们来分析关于concat的三种方法。
这种方式的适用场景是:视频容器是MPEG-1, MPEG-2 PS或DV等可以直接进行合并的。换句话说,其实可以直接用cat或者copy之类的命令来对视频直接进行合并。很多文章介绍了这种方法,但适用性却没有提及。这并不是一个通用的方法。典型的命令示例如下:
ffmpeg -i concat:"intermediate1.mpg|intermediate2.mpg" -c copy intermediate_all.mpg
这种合并方式的适用场景是:当容器格式不支持文件层次的合并,而又不想(不需要)进行再编码的操作的时候。这种方式对源视频同样有同格式同性质的要求。其详细语法参见 这里 。典型的命令示例如下:
ffmpeg -f concat -i Cam01.txt -c copy Cam01.mp4其中,Cam01.txt 为包含了输入文件的描述文件。
当需要进行任意程度的重新编解码时,官方推荐使用的方法即是用concat滤镜来进行视频文件的合并处理。详细说明参见 这里 。典型命令示例如下:
ffmpeg -i opening.mkv -i episode.mkv -i ending.mkv -filter_complex \
'[0:0] [0:1] [0:2] [1:0] [1:1] [1:2] [2:0] [2:1] [2:2]
concat=n=3:v=1:a=2 [v] [a1] [a2]' \
-map '[v]' -map '[a1]' -map '[a2]' output.mkv
这段命令目的是将三段双语格式的视频合并至最终的一段视频(output.mkv)。参数n=3说明待合成的视频有三段,v=1说明视频流为一,a=2说明音频流为二。 -map参数的详细说明可以从Filtergraph文档中找到。