使用FFmpeg concat过滤器代替协议,结果不同

时间:2015-11-18 08:03:18

标签: ffmpeg concatenation

我有两个需要合并的文件。

我可以使用ffmpeg concat协议

来做到这一点

创建文本文件并在其中设置文件。

像这样:

files_to_be_merged.txt

file '/home/user/Videos/video1.mov'
file '/home/user/Videos/video2.mov'

他们使用以下命令。

ffmpeg -f concat -i mylist.txt -c copy output.mov

但我想在不创建文本文件的情况下这样做。

我试过这个命令:

ffmpeg -i 'concat:video1.mov|video2.mov' -codec copy output.mov

但结果文件只是第一个视频,而不是两者一起。

我在执行此命令时收到此警告;

  

[mov @ 0x35933c0]流0的编解码器不使用全局头,但是   容器格式需要全局标题

     

[mov @ 0x35933c0]流1的编解码器不使用全局头   容器格式需要全局标题

1 个答案:

答案 0 :(得分:1)

这两种方法不同。

使用文本文件(-f concat)的是 concat demuxer ,它更灵活。如果您使用相同的编解码器但接受不同的容器,并且更重要的是使用任何容器格式,则它可以工作。

第二个(-i 'concat:file1|file2')是 concat协议。它仅适用于可以直接连接的格式,例如mpgmpegts

mov格式无法直接连接,因此必须通过解复用程序。

有关详细信息,请参阅wiki

如果您不想使用文本文件,只需扩展existing demuxer即可添加功能。毕竟,它是一个开源项目。