我想连接一些.flv文件(每个文件都是用相同设置编码的h264 / adpcm_swf)。理想情况下,我想在文件之间添加类似切入的内容 - 黑屏1秒或2秒就足够了。
我尝试过使用avconv的“concat”协议,如下所示:
avconv -i concat:1.flv\|2.flv\|3.flv result.flv
这给了我一个结果,它只包含1.flv的内容,似乎用默认的flv-settings重新编码。通过提供适当的输出选项可以实现这一点,但理论上应该可以在不重新编码的情况下连接文件吗?
我的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
答案 0 :(得分: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
答案 1 :(得分:1)
使用ffmpeg连接文件而不需要在txt文件中存储所有文件名的另一种方法如下:
ffmpeg -f concat -i <(for f in *.flv; do echo "file '$f'"; done) -c copy result.flv
您可以将* .flv替换为您想要的任何文件类型。在这种情况下,不要忘记更改结果文件的扩展名。