Где находится документация для кодека Mjpeg, используемого в mencoder, VLC и FFMpeg? - PullRequest
0 голосов
/ 16 августа 2011

Mencoder имеет прекрасный вариант для преобразования файла mjpeg в файл avi с кодеком 'MJPG', который воспроизводится в VLC.

Командная строка для этого:

mencoder filename.mjpeg -oac copy -ovc copy -o outputfile.avi -speed 0.3

, где 0.3 - это отношениежелаемая частота кадров воспроизведения по умолчанию 25 кадров в секунду.Все, что это делает, это делает копию файла mjpeg, помещает заголовок avi сверху и в конце, что похоже на индекс позиций кадров в файле.

Я хочу повторить это в моемсобственный код, но я нигде не могу найти документацию.Каков точный формат раздела индекса?По какой-то причине в заголовке есть дополнительные байты-заполнители - о чем это?

Кто-нибудь знает, где я могу найти документацию?Кажется, что и в mencoder, и в vlc этот кодек встроен.

1 Ответ

1 голос
/ 18 августа 2011

После большой работы, изучения и возни с HxD и RiffPad, я наконец понял это. Чтобы объяснить все это, понадобится длинная запись в блоге, но, по сути, кодека 'MJPG' на самом деле не существует - mjpg просто использует несколько хитростей и необычных частей стандарта avi для создания индексированного файла.

Ключ должен поместить '00dc' и тег длины Int32 на 8 байтов перед каждым открытым тегом Jpeg. Если вы хотите, чтобы avi имел произвольный доступ, то вам нужен индекс в конце, который указывает на каждую из позиций тега «00dc».

VLC будет играть это изначально. Если у вас установлен ffmpeg, то проигрыватель Windows Media использует его для декодирования файлов mjpg такого типа.

...