如何使用ffmpeg合并两个avi文件?

时间:2013-03-03 14:05:39

标签: video join merge ffmpeg cat

我无法将两个avi视频合并在一起。 谷歌充满了以下例子:

cat file1.avi file2.avi file3.avi > video_draft.avi
after appending the data together using cat above, you need to re-index the draft movie like this:

mencoder video_draft.avi -o video_final.avi -forceidx -ovc copy -oac copy
Now you're video_final.avi file will be right to go.

但它对我不起作用,第一个视频被转换,就是这样。

3 个答案:

答案 0 :(得分:54)

您应该查看ffmpeg 1.1中添加的concat demux and concat protocol。假设编解码器是相同的,您可以创建一个文件(例如mylist.txt):

file '/path/here/file1.avi'
file '/path/here/file2.avi'
file '/path/here/file3.avi'

然后将该文件传递给ffmpeg

ffmpeg -f concat -i mylist.txt -c copy video_draft.avi

您可以使用此命令制作列表:

ls *.avi | while read each; do echo "file '$each'" >> mylist.txt; done

链接页面有更多高级示例,用于处理不同编解码器/格式等问题。

答案 1 :(得分:2)

您可以使用以下单个命令行:

ffmpeg -i "concat:input1.avi|input2.avi|input3.avi" -c copy output.avi

答案 2 :(得分:0)

您需要为ffmpeg的最新版本添加-safe 0,并且必须在文件列表之前。

ffmpeg -f concat -safe 0 -I mylist.txt ...