我正在尝试使用ffmpeg连接两个视频文件,我收到错误。
为了消除两个视频之间的兼容性问题,我一直在连接相同的视频,同样的错误仍然存在。
ffmpeg -f concat -safe 0 -i intro_prepped.avi intro_prepped.avi -c copy concat.avi
我收到的错误输出是....
[concat @ 0x220d420]第1行:未知关键字'RIFFf�?' intro_prepped.avi:处理输入时发现的数据无效
我尝试了各种concat标志组合,但却无法使其工作。有没有人见过这个错误?
答案 0 :(得分:3)
您可以在以下链接中找到几种连接文件的方法:
https://trac.ffmpeg.org/wiki/Concatenate
供您参考,下面是我用来连接视频的示例命令:
ffmpeg -i "concat:input1.avi|input2.avi|input3.avi" -c:a copy -c:v copy output.avi
答案 1 :(得分:2)
这对于原始帖子来说有点晚了,但是我只是在寻找相同问题的答案,所以我认为它仍然很重要,而且我还没有发现更多新的帖子可以回答相同的问题。
我发现我的 .txt 文件编码错误。我在记事本中打开文件,然后执行“另存为...”。 我将编码更改为 UTF-8 ,并且 ffmpeg concat 命令起作用了。
答案 2 :(得分:1)
输入文件应该是文本文件,而不是avi。文本文件列出了要连接的文件。
答案 3 :(得分:1)
几年后,但答案是,您的文本文件很可能以例如UTF-16编码。
修复:(Windows 10)
我在ffmpegs网页上使用了Powershell代码制作了一个带有文件名的文本文件,而Powershell似乎将文本文件另存为UTF-16的某种变体,所以我选择了更安全的UTF-8。
答案 4 :(得分:1)
我尝试了上述所有方法,但没有奏效。
看起来列表中的文件名必须经过特殊格式化才能看起来像:
文件'/path/to/file1.wav'
包含一个词文件。我花了很多时间试图猜测为什么 ffmpeg 在尝试读取文件名时遇到错误。它们是在列表中还是在命令行中都没有关系。所以只有在我使用命令之后
for f in *.wav; do echo "file '$f'" >> mylist.txt; done
从 ffmpeg 的手册中列出我成功了。唯一的区别是多了一个词file。
答案 5 :(得分:0)
没人在任何地方都有完整的,可运行的concat文本文件批处理文件。所以我要发布
md ts
for %%x in (input\*.m4a) do (ffmpeg -i "%%x" -c copy -bsf:v h264_mp4toannexb ts\%%~nx.ts)
for %%c in ("ts\*ts") do (echo file '%%c')>>list.txt
for %%f in (input\*.m4a) do (set fn=%%~nf)
ffmpeg -f concat -safe 0 -i "list.txt" -c copy "%cd%\%fn%".m4a