ffmpeg拼接视频报错 ,Found duplicated MOOV Atom. Skipped 的解决方法

​ 问题出现在使用concat协议进行拼接两个mp4视频的时候, 使用了下面的命令进行拼接,结果出现了如上的报错,Found duplicated MOOV Atom. Skipped ,结果只是把第一个视频拷贝一遍就结束了。

ffmpeg -i "concat:001.mp4|002.mp4" -c copy out.mp4

​ 原理上是因为 concat协议,实际上就只是把两个视频直接拼接,把后一个视频直接贴到前一个视频后面而已,因此只会适用于ts和flv等一些格式。mp4格式整体有一层容器,而不像ts这类格式可以直接拼接,需要先解开容器再对提取的视频流进行拼接。

​ 之前我在查ffmpeg视频拼接的方法的时候,就了解到两种方法。当时我知道平时用的其他工具比如下载m3u8的视频,或者下载b站的视频分段的时候都是用的第二种方法,就是创建一个新文件,把文件列出来执行concat命令。当时我就发现了第一种方法的一个缺陷是,文件太多的时候不适用。文件名会拼起来很长。

​ 现在了解到了第一种方法只是简单的拼接。而第二种还会对容器进行处理,具体操作方式如下

创建一个mylist.txt文件如下:

file '/path/to/file1'
file '/path/to/file2'
file '/path/to/file3'

执行下面的命令

ffmpeg -f concat -safe 0 -i mylist.txt -c copy output
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容