ffmpeg concat 命令错误

Sco*_*ttF 5 shell command-line ffmpeg concatenation

我正在尝试使用 ffmpeg 连接两个视频文件,但收到错误消息。

为了消除两个视频之间的兼容性问题,我一直将同一个视频与其自身连接起来,但同样的错误仍然存​​在。

ffmpeg -f concat -safe 0 -i intro_prepped.avi intro_prepped.avi -c copy concat.avi  
Run Code Online (Sandbox Code Playgroud)

我收到的错误输出是....

[concat @ 0x220d420] 第 1 行:未知关键字 'RIFFf??' intro_prepped.avi:处理输入时发现无效数据

我尝试了 concat 标志的各种组合,但未能使其正常工作。有没有人见过这个错误?

小智 11

我尝试了上述所有方法,但没有成功。

看起来列表中的文件名必须经过特殊格式化,如下所示:

文件“/path/to/file1.wav”

包含一个word文件。我花了很多时间试图猜测为什么 ffmpeg 在尝试读取文件名时遇到错误。它们是在列表中还是在命令行中并不重要。所以只有在我使用命令之后

for f in *.wav; do echo "file '$f'" >> mylist.txt; done
Run Code Online (Sandbox Code Playgroud)

从 ffmpeg 手册中列出我成功了。唯一的区别是一个额外的 Word文件

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


mda*_*ari 8

您可以在以下链接中找到多种连接文件的方法:

https://trac.ffmpeg.org/wiki/Concatenate

供您参考,以下是我用来连接视频的示例命令:

ffmpeg -i "concat:input1.avi|input2.avi|input3.avi" -c:a copy -c:v copy output.avi
Run Code Online (Sandbox Code Playgroud)

  • 我尝试过: ` ffmpeg -i "concat:media3.mp4|media4.mp4|media5.mp4" -c:a copy -c:v copy output.mp4` 它只是生成了 media3.mp4 的副本,没有任何串联。但是,您链接中的这个版本有效: ` ffmpeg -f concat -safe 0 -i mylist.txt -c copy output.mp4` 有效,其中 `mylist.txt` 是: ` # 这是一个注释文件 'media3.mp4 ' 文件 'media4.mp4' 文件 'media5.mp4'` 知道这里有什么区别吗? (3认同)

小智 6

这对于原始帖子来说有点晚了,但我只是在寻找相同问题的答案,所以我认为它仍然相关,而且我还没有找到任何最近的帖子来回答相同的问题。

我发现我的.txt文件编码错误。我在记事本中打开了文件并执行了“另存为...”我将编码更改为UTF-8并且ffmpeg concat命令起作用了。


小智 6

您的文本文件可能采用 UTF-16 编码。

修复:(Windows 10)

  • 打开文本文件
  • 选择“另存为”
  • 查看“保存”按钮,您可以通过下拉框选择编码,选择“UTF-8”。
  • 保存并再次运行 ffmpeg。

我使用ffmpegs网页上的Powershell代码制作了一个带有文件名的文本文件,Powershell似乎将文本文件保存为UTF-16的某种变体,所以我选择了更安全的UTF-8。