在ffmpeg上禁用扩展名错误的文件类型检测


2

我正在尝试使用进行mjpeg文件转码,ffmpeg并且它错误地检测到设置。如果文件没有扩展名或未知扩展名,则ffmpeg将正确检测mjpeg格式并读取任意数量的帧。

当文件具有.jpg扩展名时,不起作用。这导致ffmpeg仅从文件读取一帧,而忽略任何其他帧。

有什么办法告诉ffmpeg停止基于文件扩展名的猜测,或者至少实际上使用了mjpeg模块,而不仅仅是读取一帧?

我知道,-f image2pipe -i -但是那将需要跳过其他箍以将文件传递给命令,而不仅仅是将文件名提供给进程,因为我是从没有shell的另一个进程执行文件的。


1
如果在mjpeg输入之前指定输入格式,这会有什么不同吗?(-f mjpeg -i image.jpg
bertieb 2015年

@bertieb确实如此。以为我也尝试过,但是我想我只将mjpeg用作编解码器,而不使用格式说明符。请添加它作为答案
Sami Kuhmonen

1
完成!我有类似的经历有ffmpeg:“试试这个......尝试......试试其他的......好了,建议等等,这工作?我可以发誓,它没有5分钟前...”
bertieb

Answers:


1

我如何告诉ffmpeg使用的格式想要的吗?

(而不是它认为应该使用的那个)

ffmpeg对参数的位置很挑剔。听起来您想强制将其mjpeg用作输入格式,这意味着-f需要在参数之前-i。例如:

$ ffmpeg -f mjpeg -i mjpeg_image.jpg <other_options> output

您还可以通过调用获取支持格式的列表ffmpeg -formats;其中,D表示解码(输入)能力,E表示编码(输出)能力。


2
我有错误是,我只试图用MJPEG的编解码器-i image2 -c:v mjpeg并没有意识到,我还可以用MJPEG的格式-f mjpeg。因此,这完美地解决了我的问题。
Sami Kuhmonen 2015年

@SamiKuhmonen听起来像是输入与输出的关系,我在结尾处略加说明,但可能会进一步扩展。
bertieb 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.