Каковы спецификации Motion JPEG?

Я искал Google, как сумасшедший, и не могу найти спецификации формата файла для mjpeg.

Как выглядит заголовок? Я просто добавляю серию jpegs после заголовка?

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

Цель состоит в том, чтобы сделать это в actionscript 3, но другие языки были бы хороши для переноса. Я пробовал смотреть на ffmpeg и mplayer, но c не является моей сильной стороной (пока).

Любые предложения будут оценены!

Ответ 1

Официального стандарта не существует.

На практике в своей простейшей форме mjpeg представляет собой просто объединение файлов jpeg, один за другим в том же файле.

ffmpeg поддерживает это с помощью переключателей -f mjpeg или -vcodec mjpeg.

Декодеры JPEG, которые декодируют несколько изображений, должны помнить и использовать те же самые jpeg-таблицы для последующих изображений, если эти изображения не могут обеспечить замену. Стандарт jpeg описывает это как "сокращенные потоки jpeg", и libjpeg поддерживает это.

Таким образом, mjpeg может содержать полное jpeg-изображение, а затем последующие блоки SOI..EOI, которые не указывают те заголовки, которые дублируют предыдущий кадр.

Ответ 2

По-видимому, нет единственной спецификации. Из wikipedia:

Критицизмы

В отличие от видеоформатов, указанных в международных стандартах таких как MPEG-2 и формат указанная в неподвижном изображении JPEG стандарт кодирования, нет документа который определяет один точный формат который универсально признан полная спецификация "Движение JPEG" для использования во всех контекстах. вызывает проблемы совместимости файлы из разных производителей.

Ответ 3

IETF имеет стандарт, определенный как RFC 2435. Я не знаю, какие кодеки будут поддерживать это, но это, по-видимому, спецификация данных.

Ответ 4

MJPEG через HTTP, по крайней мере, имеет довольно стандартную реализацию. Он возвращается как многочастный HTTP-ответ.

В статье в Википедии обсуждается точный механизм:

https://en.wikipedia.org/wiki/Motion_JPEG#M-JPEG_over_HTTP

Ответ 5

Нет единой официальной спецификации. Но какая-то компания сделала свою собственную спецификацию:

Спецификация формата QuickTime (https://developer.apple.com/library/content/documentation/QuickTime/QTFF/QTFFPreface/qtffPreface.html)

Формат Motion JPEG, QuickTime Спецификация M-JPEG (http://staticky.com/dl/ftp.apple.com/developer/Development_Kits/QuickTime/Programming_Stuff/Documentation/QuickTime-JPEGSpec.pdf)

Расширения файлов формата Microsoft OpenDML в формате AVI (http://www.morgan-multimedia.com/download/odmlff2.pdf)

Ответ 6

В Motion JPEG каждый видеокадр или чересстрочное поле цифровой видеопоследовательности сжимается отдельно как изображение в формате JPEG. Таким образом, спецификация каждого кадра (например, коэффициента качества) сохраняется в заголовке. другими словами, ваша проблема сводится к следующему: "Как читать заголовок кадра в видео?"

Возможно, вы можете использовать Phil Sallee JPEG Toolbax. Обратите внимание, что у него есть функция для чтения/записи jpeg-изображения, а некоторые для отображения матриц DCT, коэффициента качества, таблиц кодирования Huffman и т.д.

Если вы найдете, как использовать эту функцию в видео и/или как читать спецификацию видео MJPEG, пожалуйста, поделитесь нами

Ответ 7

После многих дней поиска в Интернете я не смог найти полную документацию или бинарный пример файлового протокола.

Для наиболее информативного ресурса, который я нашел до сих пор, см. http://www.digitalpreservation.gov/formats/fdd/fdd000127.shtml (Формат файла Motion JPEG 2000 - с множеством "Полезных ссылок ссылок" в конце, включая "Обзор Motion JPEG2000", который, по крайней мере, каким-то образом подходит для ответа на вопрос).

Вы найдете Apple MOV PDF изобилующим, который, по-видимому, охватывает Motion JPEG, но потребовалось бы недели, чтобы расшифровать. Я могу только предложить другим, чтобы вышеупомянутый URL был хорошим отправным местом для дальнейших исследований.