Motion JPEG ( M-JPEG или MJPEG ) — формат сжатия видео , в котором каждый видеокадр или чересстрочное поле цифровой видеопоследовательности сжимается отдельно как изображение JPEG .
Первоначально разработанный для мультимедийных ПК-приложений, Motion JPEG пользуется широкой клиентской поддержкой: большинство основных веб-браузеров и плееров обеспечивают собственную поддержку, а для остальных доступны плагины. Программное обеспечение и устройства, использующие стандарт M-JPEG, включают медиаплееры, игровые консоли, цифровые камеры, IP-камеры, веб-камеры, потоковые серверы, видеокамеры и нелинейные видеоредакторы. [ необходима цитата ]
Motion JPEG изначально был разработан для мультимедийных приложений ПК. [ необходима цитата ]
Ранние реализации MJPEG, как правило, реализовывались на аппаратном уровне. C-Cube была одним из первых сторонников, и их кодек JPEG CL550 использовался в нескольких аппаратных реализациях. Было объявлено [1] , что NeXTdimension от NeXT будет поставляться со встроенным CL550 для реализации MJPEG. Однако позже это было отложено и не было включено в конечный продукт, который был отправлен. [2]
В середине 1990-х годов компания Apple представила программную реализацию MJPEG в своем проигрывателе QuickTime Player . [3]
M-JPEG — это схема сжатия только внутри кадров (по сравнению с более вычислительно интенсивным методом межкадрового предсказания ). В то время как современные межкадровые видеоформаты, такие как MPEG1 , MPEG2 и H.264/MPEG-4 AVC , достигают реальных коэффициентов сжатия 1:50 или лучше, отсутствие межкадрового предсказания в M-JPEG ограничивает его эффективность до 1:20 или ниже, в зависимости от устойчивости к пространственным артефактам в сжатом выводе. Поскольку кадры сжимаются независимо друг от друга, M-JPEG предъявляет более низкие требования к обработке и памяти к аппаратным устройствам.
Как чисто внутрикадровая схема сжатия, качество изображения M-JPEG напрямую зависит от статической (пространственной) сложности каждого видеокадра. Кадры с большими плавными переходами или монотонными поверхностями хорошо сжимаются и с большей вероятностью сохранят свои исходные детали с небольшим количеством видимых артефактов сжатия. Кадры, демонстрирующие сложные текстуры, тонкие кривые и линии (например, надпись на газете), склонны демонстрировать артефакты дискретного косинусного преобразования (DCT), такие как звон , смазывание и макроблокирование . Видео, сжатое M-JPEG, также нечувствительно к сложности движения, т. е. изменению с течением времени. Ему не мешает ни сильно случайное движение (например, турбулентность поверхности воды в большом водопаде), ни помогает отсутствие движения (например, статичный пейзаж, снятый со штатива), которые являются двумя противоположными крайностями, обычно используемыми для тестирования межкадровых видеоформатов.
Для форматов QuickTime компания Apple определила два типа кодирования: MJPEG-A и MJPEG-B. MJPEG-B больше не сохраняет в себе допустимые файлы обмена JPEG, поэтому невозможно перенести кадр в файл JPEG без незначительного изменения заголовков.
JPEG неэффективен, поскольку использует больше бит для обеспечения аналогичного качества по сравнению с более современными форматами (такими как JPEG 2000 и H.264/MPEG-4 AVC ). С момента разработки оригинального стандарта JPEG в начале 1990-х годов технологические усовершенствования были внесены не только в формат JPEG, но и в возможные схемы межкадрового сжатия.
Motion JPEG прост в реализации, поскольку он использует зрелый стандарт сжатия (JPEG) с хорошо развитыми библиотеками, и это внутрикадровый метод сжатия. [ необходима ссылка ]
Он допускает быстрое изменение движения в видеопотоке, тогда как схемы сжатия, использующие межкадровое сжатие, часто могут давать неприемлемую потерю качества, когда видеоконтент значительно меняется между каждым кадром. [ необходима цитата ]
Требуется минимальное количество оборудования, поскольку оно не требует больших вычислительных затрат. [ необходима цитата ]
В отличие от видеоформатов, указанных в международных стандартах, таких как MPEG-2 , и формата, указанного в стандарте кодирования неподвижных изображений JPEG, не существует документа, определяющего единый точный формат, который был бы общепризнан как полная спецификация «Motion JPEG» для использования во всех контекстах. Это вызывает проблемы совместимости выходных файлов от разных производителей. Однако каждый конкретный формат файла обычно имеет некоторый стандарт того, как кодируется M-JPEG. Например, Microsoft документирует свой стандартный формат для хранения M-JPEG в файлах AVI, [4] Apple документирует, как M-JPEG хранится в файлах QuickTime, RFC 2435 описывает, как M-JPEG реализован в потоке RTP , а M-JPEG CodecID планируется для формата файла Matroska . [5]
M-JPEG теперь используется устройствами видеозахвата, такими как цифровые камеры , IP-камеры и веб-камеры , а также нелинейными системами видеомонтажа. Он изначально поддерживается QuickTime Player, консолью PlayStation и веб-браузерами, такими как Safari , Google Chrome , Mozilla Firefox и Microsoft Edge .
M-JPEG часто используется в системах нелинейного видеомонтажа . Современные настольные процессоры достаточно мощны для работы с видео высокой четкости, поэтому не требуется никакого специального оборудования, и они, в свою очередь, предлагают собственный произвольный доступ к любому кадру.
Игровая консоль PlayStation интегрировала аппаратное обеспечение для декомпрессии M-JPEG для внутриигровых FMV- последовательностей, в то время как портативная игровая консоль PlayStation Portable может воспроизводить M-JPEG с Memory Stick Pro Duo с расширением .avi с разрешением 480×272. Обе могут записывать клипы в формате M-JPEG с помощью камеры Go!Cam .
Игровая консоль Wii от Nintendo , а также InnoTab от VTech могут воспроизводить видео в кодировке M-JPEG на SD-карте с помощью своего Photo Channel . Цифровые аудиоплееры SanDisk Sansa e200 и Zen V воспроизводят короткие видео в формате M-JPEG. Последние обновления прошивки для Nintendo 3DS теперь позволяют записывать и воспроизводить файлы в кодировке M-JPEG "3D-AVI", которые являются тем же форматом, что используется в серии Fujifilm FinePix Real 3D , с SD-карты в разрешении 320×240, если продолжительность видео составляет 10 минут или меньше.
До появления кодирования MPEG-4 в потребительских устройствах, прогрессивная развертка M-JPEG широко использовалась в режимах «кино» цифровых фотокамер, позволяя кодировать и воспроизводить видео с помощью интегрированного оборудования сжатия JPEG с помощью лишь программной модификации. Результирующее качество все еще ниже по сравнению с MPEG аналогичного размера, особенно потому, что звук (если он был включен) был несжатым PCM и записан с низкой частотой дискретизации или ADPCM с низким сжатием и низкими требованиями к процессору .
Чтобы держать размеры файлов и скорость передачи под контролем, размеры кадров и скорости, а также частоты дискретизации звука, поддерживаются относительно низкими с очень высокими уровнями сжатия для каждого отдельного кадра. Разрешения 160×120 или 320×240 являются распространенными размерами, как правило, при 10, 12 или 15 кадрах в секунду, с качеством изображения, эквивалентным настройке JPEG «50» с монофоническим звуком ADPCM, дискретизированным с частотой ~8 кГц. Это приводит к очень простому, но пригодному для использования видеовыходу при стоимости хранения, аналогичной MPEG (скорость видео ~120 кБ/с, ~8 кБ/с аудио — или около 1 Мбит/с при разрешении 320×240), но с минимальными накладными расходами на обработку. Это видео обычно хранится в файлах-контейнерах AVI от Microsoft или QuickTime Movie от Apple . Эти файлы доступны для просмотра в большинстве операционных систем, однако иногда необходимо установить дополнительный кодек .
Видеоформат AMV , распространенный в дешевых проигрывателях «MP4», представляет собой модифицированную версию M-JPEG.
Помимо портативных плееров (которые в основном являются «потребителями» видео), многие цифровые камеры с поддержкой видео используют M-JPEG для видеозахвата. Например:
Многие сетевые камеры предоставляют потоки M-JPEG, к которым могут подключаться сетевые клиенты. Браузеры на базе Mozilla и Webkit имеют встроенную поддержку для просмотра этих потоков M-JPEG.
Некоторые сетевые камеры предоставляют собственные интерфейсы M-JPEG как часть обычного набора функций. Для камер, которые не предоставляют эту функцию изначально, можно использовать сервер для перекодирования изображений камеры в поток M-JPEG, а затем предоставить этот поток другим сетевым клиентам.
1 сентября 2010 года компания Apple объявила, что новейшая версия Apple TV будет поддерживать M-JPEG до 35 Мбит/с, 1280 x 720 пикселей, 30 кадров в секунду, звук в формате μlaw, стереозвук PCM в формате .avi.
Некоторые медиаплееры, такие как Netgear NeoTV 550, не поддерживают воспроизведение M-JPEG.
HTTP-поток разделяет каждое изображение на отдельные HTTP-ответы по указанному маркеру. HTTP-поток создает пакеты последовательности изображений JPEG, которые могут быть получены такими клиентами, как QuickTime или VLC .
В ответ на запрос GET для файла или потока MJPEG сервер передает последовательность кадров JPEG по протоколу HTTP . Специальный тип содержимого mime-type multipart/x-mixed-replace;boundary=<boundary-name> информирует клиента о том, что следует ожидать несколько частей (кадров) в качестве ответа, разделенного <boundary-name>. Это имя границы явно раскрывается в самом объявлении типа MIME. TCP-соединение не закрывается до тех пор, пока клиент хочет получать новые кадры, а сервер хочет предоставлять новые кадры. Две основные реализации сервера потоковой передачи M-JPEG — это cambozola и MJPG-Streamer . Более надежный ffmpeg-server также обеспечивает поддержку потоковой передачи M-JPEG.
Собственная поддержка веб-браузеров включает: Safari , Google Chrome , Microsoft Edge [8] и Firefox . [9] Другие браузеры, такие как Internet Explorer, могут отображать потоки M-JPEG с помощью внешних плагинов. Cambozola — это апплет, который может отображать потоки M-JPEG в браузерах с поддержкой Java. M-JPEG также изначально поддерживается PlayStation и QuickTime. Чаще всего M-JPEG используется в IP-камерах безопасности. [10]
Технологические усовершенствования можно найти в конструкциях H.263v2 Annex I и MPEG-4 Part 2 , которые используют частотное предсказание значений коэффициентов преобразования, и в H.264/MPEG-4 AVC , которые используют пространственное предсказание и адаптивные методы размера блока преобразования. Также есть более сложное энтропийное кодирование, чем то, что было практичным, когда разрабатывался первый дизайн JPEG. Все эти новые разработки делают M-JPEG неэффективным механизмом записи.