如何使用 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命令的使用(来自一线的经验,视频合并&avi转MP4&补空白音频收藏下来一定用的到)
实战详细讲解ffmpeg命令的使用(来自一线的经验,视频合并&avi转MP4&补空白音频收藏下来一定用的到)