FFMPEG - не найти параметры кодека

Я пытаюсь преобразовать последовательность изображений в mpeg-фильм через FFMPEG, хотя я все время получаю сообщение об ошибке, что он не может найти параметры кода (Video: mjpeg). Поиск Google не принес много полезного.

ffmpeg -f image2 -i /tmp/img%03d.jpg video.mpgFFmpeg version SVN-r0.5.1-4:0.5.1-1ubuntu1, Copyright (c) 2000-2009 Fabrice Bellard, et al.
  configuration: --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
  built on Mar  4 2010 12:35:30, gcc: 4.4.3
[mjpeg @ 0x9069870]dqt: 16bit precision
[mjpeg @ 0x9069870]mjpeg: unsupported coding type (c9)
[mjpeg @ 0x9069870]mjpeg: unsupported coding type (cf)
[mjpeg @ 0x9069870]only 8 bits/component accepted
[mjpeg @ 0x9069870]dqt: 16bit precision
[mjpeg @ 0x9069870]huffman table decode error
[mjpeg @ 0x9069870]mjpeg: unsupported coding type (ca)
[mjpeg @ 0x9069870]mjpeg: unsupported coding type (ce)
[mjpeg @ 0x9069870]mjpeg: unsupported coding type (cb)
[mjpeg @ 0x9069870]decode_sos: invalid len (60581)
[mjpeg @ 0x9069870]only 8 bits/component accepted
[mjpeg @ 0x9069870]decode_sos: invalid len (56833)
[mjpeg @ 0x9069870]invalid id 207
[mjpeg @ 0x9069870]mjpeg: unsupported coding type (cd)
[mjpeg @ 0x9069870]huffman table decode error
[image2 @ 0x90682c0]Could not find codec parameters (Video: mjpeg)
/tmp/img%03d.jpg: could not find codec parameters

Изображения находятся в каталоге /tmp с именами, такими как img001.jpg и img002.jpg.

Любые идеи?

Спасибо -Tanner

Ответ 1

На самом деле ffmpeg пытается сказать вам, что ваш файл имеет расширение jpeg, но файл фактически является BMP или другим форматом.

Убедитесь, что файл закодирован в jpeg, и проблема исчезнет.

Ответ 2

Некоторые люди здесь говорят, что это потому, что кодек mjpeg действительно не может быть найден. Они предложили установить его из источника. Я чувствую, что более вероятно, что mjpeg не установлен. Я считаю, что для этого есть два решения.

  • Вы можете попробовать установить этот кодек и посмотреть, помогает ли он MJpeg Загрузить для Win
  • Вы можете попытаться заставить ffmpeg экспортировать его в другой кодек Попробуйте: ffmpeg -f image2 -i/tmp/img%03d.jpg -vcodec mpeg2video video.mpg

Ответ 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

Ответ 4

Попробуйте следующее:

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.

Ответ 5

Там может быть несколько проблем, FFmpeg не может декодировать ваше изображение. Другие ответы решили большинство проблем (например, не jfif, mjpeg не найдено). Но никто не обращался к проблеме неподдерживаемых алгоритмов кодирования.


Стандарт JPEG предусматривает использование нескольких типов алгоритмов кодирования. Но почти никто не следовал всем им, вместо этого они следовали стандарту JFIF.

Стандарт JFIF определяет только использование алгоритмов кодирования Хаффмана [citation needed]. Большинство реализаций следовали этому стандарту и не реализовали ничего, кроме кодирования Хаффмана.


Я никогда не заглядывал в исходный код, но я предполагаю, что его кодировщик mjpeg использует только алгоритм кодирования Хаффмана для декодирования данных JPEG. Все, кроме Хаффмана, может быть нестандартным.

СОВЕТ: используйте exiftool для извлечения информации из файла JFIF.

# On a UNIX based system (Linux or MacOS)
exiftool image.jpg | grep -i "encoding"

# On a NT based system (Windows)
exiftool.exe image.jpg | findstr /i /c:"encoding"