32

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

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

4

3 回答 3

65

您应该查看在 ffmpeg 1.1 中添加的concat demux 和 concat 协议。假设编解码器相同,您将创建一个文件(示例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

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

于 2013-03-03T14:19:43.977 回答
17

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

ffmpeg -i "concat:input1.avi|input2.avi|input3.avi" -c copy output.avi
于 2019-12-03T08:38:39.560 回答
-2

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

ffmpeg -f concat -safe 0 -i mylist.txt ...
于 2018-12-06T17:08:29.463 回答