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.