ffmpeg 中是否有一个选项可以让它从文件的开始到结束按顺序读取,而不尝试检查文件末尾是否最终有元数据?
背景是我似乎面临这样一种情况:.mxf 文件中仅存在页脚(加上索引重复)就会导致大量的处理错误。
实际上,这与 ffmpeg.exe 无关,而是与某些第三方软件使用的 libavcodec 有关,但该第三方软件确实允许我指定用于打开 mxf 文件的 ffmpeg 选项。
删除几个字节(例如 40Gb 输入文件末尾的 10kb)会导致正确处理文件,这就是我要求强制顺序读取的方法的原因。
我尝试使用 -re 选项,但它仍然解析“页脚”信息。
答案1
您可以尝试通过管道传输文件:cat file.mxf | ffmpeg -f mxf -i - out.mp4
但一般来说,ffmpeg 没有通用的读取文件例程。ffmpeg 首先根据探测器识别输入的格式,然后依靠格式特定的模块(解复用器)来解析它。如果该解复用器中的某个例程寻找恰好位于末尾的数据,但它会去那里。
第二种方法是使用子文件协议。这允许您向 ffmpeg 呈现受限文件,即您可以指定文件的“开始”和“结束”应该在哪里,例如
ffmpeg -i "subfile,,start,183241728,end,366490624,,:file.mxf"
这告诉 ffmpeg 提取从文件字节偏移量开始到183241728
偏移量结束的段366490624
作为输入。