ffmpeg concat命令错误

时间:2017-06-20 01:10:18

标签: shell command-line ffmpeg concatenation

我正在尝试使用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标志组合,但却无法使其工作。有没有人见过这个错误?

6 个答案:

答案 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。文本文件列出了要连接的文件。

请参阅concat demuxer documentationFFmpeg Wiki: Concat

答案 3 :(得分:1)

几年后,但答案是,您的文本文件很可能以例如UTF-16编码。

修复:(Windows 10)

  • 打开文本文件
  • 选择“另存为”
  • 通过“保存”按钮,您会看到一个带有下拉框的编码,然后选择UTF-8。
  • 保存并再次运行ffmpeg。

我在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

在这里你可以自己阅读:https://trac.ffmpeg.org/wiki/Concatenate#demuxer

答案 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