MPG
MPEG Program Stream (MPG) является одним из самых популярных в прошлом контейнерных форматов для хранения видео и аудио данных. Он использовался в DVD-дисках, а также в потоковом вещании цифрового телевидения. Формат MPG был стандартизирован Международной организацией по стандартизации (ISO/IEC) под номером ISO/IEC 13818-1 и впервые появился в начале 1990-х годов.
Основные характеристики
Структура контейнера
- Видео: обычно использует формат сжатия MPEG-1 или MPEG-2.
- Аудио: чаще всего MP2 или AC-3.
- Подканалы: могут включать субтитры, дополнительные аудиодорожки и другие данные.
Каждый поток содержит заголовки и пакеты данных, упакованные в блоки фиксированной длины (188 байт). Эти блоки называются пакеты транспортного потока (TS packets).
Сжатие видео
Для сжатия видео в формате MPG используются алгоритмы MPEG-1 и MPEG-2. Они основаны на дискретном косинусном преобразовании (DCT), предсказании движения и интерполяции кадров. Например, в MPEG-2 применяются три типа кадров:
- I-кадр (Intra-coded frame): полностью закодированный кадр, который не зависит от других кадров.
- P-кадр (Predicted frame): кадры, которые используют информацию из предыдущих I- или P-кадров для предсказания текущего кадра.
- B-кадр (Bi-directional predicted frame): кадры, которые используют информацию как из предыдущих, так и из последующих кадров для предсказания.
Аудиосжатие
Аудио в формате MPG может использовать различные схемы сжатия, такие как MP2 (MPEG-1 Layer II) и AC-3 (Dolby Digital). MP2 обеспечивает хорошее качество звука при относительно низком битрейте, тогда как AC-3 поддерживает многоканальный звук и часто используется в киноиндустрии.
Спецификация формата
Формат MPG включает следующие ключевые элементы:
- Система пакетов (Packetized Elementary Stream, PES): каждый элементарный поток (видео, аудио, субтитры) разбивается на пакеты PES, которые затем объединяются в транспортный поток.
- Транспортный поток (Transport Stream, TS): структура, состоящая из множества PES-пакетов, объединенных вместе. Каждый пакет имеет длину 188 байт и включает заголовок и полезную нагрузку.
- Синхронизация: обеспечивается за счет использования специальных маркеров синхронизации, которые позволяют декодеру правильно восстанавливать временные метки и последовательность кадров.
Использование в практике
Работа с ffmpeg
ffmpeg — это мощный инструмент для работы с мультимедийными файлами, включая файлы формата MPG. Вот несколько примеров использования ffmpeg для обработки файлов MPG:
# Конвертация файла AVI в MPG
ffmpeg -i input.avi -c:v mpeg2video -b:v 4M -c:a mp2 -b:a 192k output.mpg
# Извлечение видео из MPG-файла
ffmpeg -i input.mpg -c copy video.mp4
# Извлечение аудио из MPG-файла
ffmpeg -i input.mpg -vn -acodec copy audio.mp3
Работа с gstreamer
gstreamer — это фреймворк для создания графов обработки медиа-данных. Вот пример использования gstreamer для воспроизведения MPG-файлов:
# Воспроизвести файл MPG
gst-launch-1.0 filesrc location=input.mpg ! tsdemux name=demux \
demux.video_00 ! queue ! mpegvideoparse ! mpeg2dec ! xvimagesink \
demux.audio_00 ! queue ! a52dec ! autoaudiosink