4

我想连接一些 .flv 文件(每个文件都是使用相同设置编码的 h264/adpcm_swf)。理想情况下,我想在文件之间添加类似剪辑的内容——黑屏 1 或 2 秒就足够了。

我试过使用 avconv 的“concat”-protocol,像这样:

avconv -i concat:1.flv\|2.flv\|3.flv result.flv

这给了我一个结果,它只包含 1.flv 的内容,并且似乎使用默认的 flv 设置重新编码。这可以通过提供适当的输出选项来处理,但理论上应该可以在没有太多重新编码的情况下连接文件?

我的 avconv 版本:

avconv version 0.8.6-6:0.8.6-0ubuntu0.12.10.1, Copyright (c) 2000-2013 the Libav developers
  built on Apr  2 2013 17:02:16 with gcc 4.7.2
avconv 0.8.6-6:0.8.6-0ubuntu0.12.10.1
libavutil    51. 22. 1 / 51. 22. 1
libavcodec   53. 35. 0 / 53. 35. 0
libavformat  53. 21. 1 / 53. 21. 1
libavdevice  53.  2. 0 / 53.  2. 0
libavfilter   2. 15. 0 /  2. 15. 0
libswscale    2.  1. 0 /  2.  1. 0
libpostproc  52.  0. 0 / 52.  0. 0
4

2 回答 2

4

您可以将 ffmpeg 用于此连接电影。首先通过运行检查您是否安装了 ffmpeg ffmpeg。如果第一行以“FFmpeg 开发人员”结尾,那就没问题了。如果是“Libav 开发者”,那么 ffmpeg 暗中是 avconv 的别名(在 Ubuntu 上就是这种情况)。如果您没有 ffmpeg 并且真正的 ffmpeg 不在您的存储库中,则您必须自己编译 ffmpeg。

现在您已经拥有了真正的 ffmpeg,请使用以下文本创建文件 inputs.txt:

file 1.flv
file 2.flv
file 3.flv

并运行:

ffmpeg -f concat -i inputs.txt -c copy result.flv
于 2013-07-05T10:52:22.763 回答
1

另一种使用 ffmpeg 连接文件而不需要将所有文件名存储在 txt 文件中的方法如下:

ffmpeg -f concat -i <(for f in *.flv; do echo "file '$f'"; done) -c copy result.flv

您可以将 *.flv 替换为您想要的任何文件类型。在这种情况下,不要忘记更改结果文件的扩展名。

于 2014-08-14T09:06:57.963 回答