打开主菜单

更改

添加“合并两段视频”
{{如何使用 FFmpeg 进行视频转码:导航栏}}

FFmpeg 能够被用来进行简单或复杂的视频转码,可它的功能并不仅限于此。在这一章,我将介绍 FFmpeg 能做的几个实用的工作。

不过值得注意的是,下面涉及的一些概念可能需要较强的逻辑能力,所以请确保前面的章节都已经读过再开始阅读本章。

== 合并两段视频 ==

视频能够被切割,那也能够被合并。这里说的“合并”就是指将视频头尾连接起来,比如我有两段视频,一个是 10 秒,另一个 20 秒,合并起来就是 30 秒。

要合并视频,首先我们得创建一个文本文件,叫什么名字都可以,我这里以 <code>list.txt</code> 为例。用任意一种你喜欢的文本编辑器,按顺序逐行写上 <code>file <file name></code> ,比如我要将 <code>01.mp4</code> 与 <code>02.mp4</code> 合并起来,就写上这些内容:

<syntaxhighlight lang="text">
file 01.mp4
file 02.mp4
</syntaxhighlight>

注意如果文件名包含空格,则必须用'''单引号'''将文件名包起来,比如 <code>file 'file name with space.mp4'</code> 。我不确定它能不能使用中文的文件名,特别是在[http://www.zhihu.com/question/20650946 字符集、编码混乱的 Windows] 中,所以为了保险起见,尽量使用英文的文件名。

保存好 <code>list.txt</code> 之后,就可以在命令行中执行 <code>ffmpeg -f concat -i list.txt -c copy 输出文件名</code> 了。如果一切顺利,最后的输出文件就会是 <code>list.txt</code> 中所写的文件按顺序连接起来的成果。

这样做有一条限制,那就是被合并的视频必须都是一样编码、一样封装格式的,如果你想合并不同编码的视频,最好先转换成统一的编码。

当然,你也可以用同样的方式合并不止两个视频,要这样做,只要在列表的文本文件中(也就是上述的 <code>list.txt</code> )多写几行就可以了,比如:

<syntaxhighlight lang="text">
file 'first file.mp4'
file 'second file.mp4'
file 'third file.mp4'
...
</syntaxhighlight>