FFMPEG - 找不到编解码器参数

15

我正在尝试通过FFMPEG将一系列图像转换成mpeg电影,但是我不断收到错误提示,说它找不到编码参数(视频:mjpeg)。谷歌搜索并没有提供有用的信息。

ffmpeg -f image2 -i /tmp/img%03d.jpg video.mpg
FFmpeg版本SVN-r0.5.1-4:0.5.1-1ubuntu1,版权所有(c)2000-2009年法布里斯·贝拉德等人。
配置:--extra-version=4:0.5.1-1ubuntu1 --prefix=/usr --enable-avfilter --enable-avfilter-lavf --enable-vdpau --enable-bzlib --enable-libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-pthreads --enable-zlib --disable-stripping --disable-vhook --enable-runtime-cpudetect --enable-gpl --enable-postproc --enable-swscale --enable-x11grab --enable-libdc1394 --enable-shared --disable-static
libavutil     49.15. 0 / 49.15. 0
libavcodec    52.20. 1 / 52.20. 1
libavformat   52.31. 0 / 52.31. 0
libavdevice   52. 1. 0 / 52. 1. 0
libavfilter    0. 4. 0 /  0. 4. 0
libswscale     0. 7. 1 /  0. 7. 1
libpostproc   51. 2. 0 / 51. 2. 0
构建于2010年3月4日12:35:30,使用gcc:4.4.3
[mjpeg @ 0x9069870]dqt:16位精度
[mjpeg @ 0x9069870]mjpeg:不支持的编码类型(c9)
[mjpeg @ 0x9069870]mjpeg:不支持的编码类型(cf)
[mjpeg @ 0x9069870]只接受8位/分量[mjpeg @ 0x9069870]dqt: 16bit precision
[mjpeg @ 0x9069870]huffman表解码错误
[mjpeg @ 0x9069870]mjpeg:不支持的编码类型(ca)
[mjpeg @ 0x9069870]mjpeg:不支持的编码类型(ce)
[mjpeg @ 0x9069870]mjpeg:不支持的编码类型(cb)
[mjpeg @ 0x9069870]decode_sos:无效的长度(60581)
[mjpeg @ 0x9069870]仅接受8位/组件
[mjpeg @ 0x9069870]decode_sos:无效的长度(56833)
[mjpeg @ 0x9069870]无效的标识符207
[mjpeg @ 0x9069870]mjpeg:不支持的编码类型(cd)
[mjpeg @ 0x9069870]huffman表解码错误
[image2 @ 0x90682c0]找不到编解码器参数(Video:mjpeg)
/tmp/img%03d.jpg:找不到编解码器参数
图片位于/tmp目录中,文件名类似于img001.jpg和img002.jpg。
有什么想法吗?
谢谢 - Tanner

基准JPEG不支持16位精度,但JPEG 2000支持。 - tripulse
5个回答

9

实际上,ffmpeg试图告诉您的是,您的文件扩展名是jpeg,但实际上该文件可能是bmp或其他格式。

确保文件以jpeg编码,问题将消失。


运行以下命令 -i /path/to/single_image.jpg 可以对您的图像进行一次健全性检查,因为不正确地设置输入列表可能会导致误导,这可能会让您看到此帖子。 -i 和相关的 image2 标志、pattern_typestart_number 等可能会在初始阶段有些困惑,请参见 https://ffmpeg.org/ffmpeg-formats.html#image2-1 - dave thompson

5
一些人在这里说,这是因为mjpeg编解码器实际上无法找到。他们建议从源代码安装它。我认为更有可能的是没有安装mjpeg。我认为有两个解决方案。
  1. 您可以尝试安装该编解码器并查看是否有所帮助。Win平台下的MJpeg下载
  2. 您可以尝试强制ffmpeg将其导出为不同的编解码器
    尝试:ffmpeg -f image2 -i /tmp/img%03d.jpg -vcodec mpeg2video video.mpg

我从源代码编译并安装了它,但仍然出现错误。似乎 MJPG 不同于仅适用于 Windows 的版本。我正在 Ubuntu 机器上进行编译和执行。 - Tanner Smith
我会尝试使用-vcodec强制使用不同的编解码器,至少看看是否有效。 - Jimmie Clark
我会进行一些测试,然后再与您联系。 - Jimmie Clark

3

FFmpeg可能无法解码您的图像,可能存在几个问题。其他答案对此问题没有深入见解,没有涉及不支持编码算法的问题。

JFIF标准允许使用霍夫曼或算术编码( 附录B.1.1.5)。然而,FFmpeg的实现并未考虑算术编码,它输出类似于您的错误消息。


# query the coding type
exiftool image.jpg | grep -i "encoding"

这是正确的方法,我能够识别图像具有不支持的编码(或者在我的情况下没有显示任何编码算法),然后将其转换为“哈夫曼”。 - hakuna1811
ImageMagick支持除霍夫曼编码算法以外的其他编码算法。 - tripulse

3

在处理图像序列时,有必要指定输入编解码器。请注意,在第二个示例中添加了-c:v gif,需要放在输入源之前:

$ ffmpeg -f image2 -i %03d.gif zzz.webm
# Error: %03d.gif: could not find codec parameters

$ ffmpeg -f image2 -c:v gif -i %03d.gif zzz.webm
# Works! ffmpeg version 2.7

这是我第一次看到可以指定要使用的输入编解码器的地方。它解决了我的类似问题。 - hazzey

0

试试这个:

ffmpeg -f image2 -i /tmp/img%03d.**jpeg** video.mpg

其实,我这里也有一个类似的问题...(并且已经解决了)。

我有一系列命名为file-001、file-002等(.tiff文件)的图像序列。我忘记给它们加上扩展名".tiff",所以在运行ffmpeg命令时出现了错误。

ffmpeg -f image2 -i file-%03d.tiff video.mpg

当我添加“.tiff”扩展名重命名文件时,问题得到了解决。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接