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

Posted

技术标签:

【中文标题】如何使用 ffmpeg 合并两个 avi 文件?【英文标题】:Howto merge two avi files using ffmpeg? 【发布时间】:2013-02-17 15:39:18 【问题描述】:

我无法将两个 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.

但这对我不起作用,第一个视频已转换,仅此而已。

【问题讨论】:

FFmpeg wiki: How to concatenate (join, merge) media files 【参考方案1】:

您应该查看在 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

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

【讨论】:

你能告诉我如何在我的android项目中设置ffmpeg 这个过程给我以下错误:Unknown input or output format: concat 更新 ffmpeg 到最新版本以避免Unknown input or output format: concat 如果您使用avconv b/c ffmpeg 不是您的Linux 发行版提供的,请参阅this answer 了解如何避免Unknown input or output format: concat 错误。【参考方案2】:

你可以使用这个单一的命令行:

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

【讨论】:

【参考方案3】:

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

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

【讨论】:

1) -safe 0 仅在某些情况下需要。有关详细信息,请参阅concat demuxer documentation。 2)您的示例中有错字:将-I更改为-i

以上是关于如何使用 ffmpeg 合并两个 avi 文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何在ffmpeg中合并音频和两个视频文件?

ffmpeg如何控制fps tbr tbn tbc参数

实战详细讲解ffmpeg命令的使用(来自一线的经验,视频合并&avi转MP4&补空白音频收藏下来一定用的到)

实战详细讲解ffmpeg命令的使用(来自一线的经验,视频合并&avi转MP4&补空白音频收藏下来一定用的到)

实战详细讲解ffmpeg命令的使用(来自一线的经验,视频合并&avi转MP4&补空白音频收藏下来一定用的到)

在 php 中通过 ffmpeg 命令将 avi 文件转换为 mp4 文件