Перейти к основному содержимому

MJPEG

Видеокодек Motion JPEG (MJPEG)

Motion JPEG (MJPEG) – это метод сжатия видео, основанный на последовательном применении алгоритмов сжатия изображений JPEG к каждому кадру видео. Он был популярен до появления более эффективных методов компрессии, таких как H.264/AVC и HEVC/H.265.

Основные характеристики:

  • Тип сжатия: Без потерь внутри каждого кадра, но потери между кадрами.
  • Алгоритм сжатия: JPEG (Joint Photographic Experts Group).
  • Контейнеры: AVI, MOV, MP4.
  • Совместимые форматы файлов: .avi, .mov, .mpg, .mjpeg.

Применение:

  • Видеонаблюдение: Из-за простоты реализации и возможности передачи данных без задержек, MJPEG широко используется в системах видеонаблюдения, особенно в камерах высокого разрешения.
  • Медицинская визуализация: Применяется в медицинских устройствах благодаря поддержке высокого качества изображения и отсутствия межкадрового сжатия.
  • Редактирование видео: MJPEG иногда используется при монтаже видео, так как каждый кадр независим, что упрощает редактирование.

Совместимость с ПО:

  • Кодеки: Поддерживается большинством популярных медиа-плееров и редакторов видео, включая VLC, QuickTime, Adobe Premiere Pro.
  • Потоковые платформы: Может использоваться в потоковых сервисах, поддерживающих передачу видеопотоков в формате MJPEG.

Ограничения:

  • Высокий битрейт: По сравнению с современными кодеками, такими как H.264, MJPEG требует значительно больше полосы пропускания для передачи видео того же качества.
  • Ограниченная поддержка аппаратного ускорения: Аппаратная поддержка MJPEG менее распространена, чем у других современных кодеков.

Уникальные особенности:

  • Простота декодирования: Каждый кадр может быть декодирован независимо, что делает этот формат удобным для приложений, требующих быстрого доступа к отдельным кадрам.
  • Отсутствие артефактов: Отсутствие межкадровой зависимости позволяет избежать накопления ошибок и артефактов, характерных для других кодеков.

Алгоритм кодирования:

  • Разбиение на блоки: Кадр разбивается на блоки размером 8x8 пикселей.
  • Преобразование DCT: К каждому блоку применяется дискретное косинусное преобразование (DCT), которое переводит пространственные данные в частотную область.
  • Квантование: Полученные коэффициенты квантуются, чтобы уменьшить количество информации.
  • Энтропийное кодирование: Квантованные коэффициенты подвергаются энтропийному кодированию (например, Хаффмана) для дальнейшей компрессии.

Отличие от других кодеков:

  • H.264/AVC: В отличие от MJPEG, H.264 использует межкадровое предсказание и компенсацию движения, что позволяет достичь гораздо большей степени сжатия при сохранении высокого качества.
  • HEVC/H.265: Еще более современный стандарт, который обеспечивает еще большую степень сжатия за счет использования более сложных алгоритмов предсказания и компенсации движения.

Примеры кодирования:

Через FFmpeg:
ffmpeg -i input.mp4 -c:v mjpeg output.mjpeg
Через GStreamer:
gst-launch-1.0 filesrc location=input.mp4 ! decodebin ! videoconvert ! jpegenc ! avimux ! filesink location=output.mjpeg

Эти примеры показывают базовую процедуру кодирования видео в формат MJPEG с использованием инструментов командной строки FFmpeg и GStreamer.