MPEG-4 vs H.264. Статья обновлена в 2023 году.

MPEG-4 vs H.264

Конечно же, противопоставлять MPEG-4 и H.264 некорректно, так как Н.264 и MPEG-4 (часть 10) – это одно и то же. Однако так оказалось удобнее написать основную часть материала статьи, понимая под MPEG-4 только MPEG-4 (часть 2).

Структура MPEG-4 и немного истории
Алгоритмы кодирования видео играют важную роль в современном мире. Они применяются для цифрового пред-ставления, сжатия, хранения, передачи и обработки видео-информации в самых различных системах. Большинство из этих алгоритмов последнего времени связано с деятельно-стью двух организаций: MPEG (Motion Picture Experts Group), работающей под эгидой Международной организа-ции по стандартизации (ИСО), и VCEG (Video Coding Ex-perts Group), работающей в составе Международного союза по электросвязи (МСЭ). Первая группа выпускает стандар-ты MPEGxx (-1, -2, -4, -7, -21), вторая – создает рекоменда-ции МСЭ Нхх (.261, .263, .263+, .263++, .264). В настоящей статье речь пойдет о последних разработках этих групп в области кодирования видео – стандарте MPEG-4 (часть 2) и рекомендации Н.264. Последняя рекомендация одновре-менно является стандартом MPEG-4 (часть 10), а также ISO/IEC 14496-10. Такое объединение двух стандартов ста-ло возможным в результате совместной работы групп MPEG и VCEG в рамках проекта Joint Video Team.
В таблице 1 показана предыстория создания этих стан-дартов.
Таблица 1 – Рекомендации МСЭ и стандарты MPEG

Надо отметить, что ядро стандарта MPEG-4 (ч. 2) было основано на рекомендации H.263.
Итак, самый последний стандарт в области кодирова-ния видео можно называть MPEG-4 (часть 10), либо ISO/IEC 14496-10, либо Н.264/AVC. Аббревиатура AVC здесь означает Advanced Video Coding.
Приведем содержание остальных частей стандарта MPEG-4:
Ч. 1 – Описание системы: сцены, объединения аудио, видео и служебной информации, синхронизации, управле-ния буфером, управления правами на интеллектуальную собственность.
Ч. 3 – Кодирование аудио.
Ч. 4 – Конформное тестирование: условия, процедуры, битовые потоки.
Ч. 5 – Общедоступное программное обеспечение, эта-лонно реализующее требования стандарта.
Ч. 6 – Протоколы распространения мультимедиа ин-формации.
Ч. 7 – оптимизированное программное обеспечение ко-дирования видео (технический отчет, а не стандарт).
Ч. 8 – Специфицирует механизмы передачи потока MPEG-4 через IP-сети.
Ч. 9 – Описание реализации MPEG-4 на языке VHDL (технический отчет, а не стандарт).
Ч. 11 – Механизм описания сцены.
Ч. 12 – Формат мультимедийного файла ИСО.
Ч. 13 – Дополнения в отношении управлениями права-ми на интеллектуальную собственность.
Ч. 14 – Формат файла MPEG-4 (ч. 2).
Ч. 15 – Формат файла MPEG-4 (ч. 10).
Ч. 16 – Дополнения по кодированию анимации.
При дальнейшем изложении с целью уменьшения пу-таницы мы будем называть стандарт MPEG-4 (ч. 2) стандар-том MPEG-4, а стандарт MPEG-4 (ч.10) – стандартом Н.264.

Как прагматизм победил романтизм
Посмотрев таблицу 1, мы увидим, что популярный и сегодня стандарт кодирования видео MPEG-2 (например, он применяется в DVD) был разработан еще в 1996 г. Зачем же было разрабатывать стандарт MPEG-4? О, для этого были великие причины…
Во-первых, зачем ограничивать себя кодированием ка-ких-то там прямоугольных изображений? Даешь изображе-ние произвольной формы! А вдруг нам понадобится коди-ровать не только естественные, но и синтетические изобра-жения, а также гибриды первых и вторых? Ведь виртуаль-ная реальность уже не за горами! А как нам не позаботиться об астрономах и других потребителях, коим 8 бит на ком-поненту цвета ничто? Да и вообще, что это за отсталая идея – относиться к видео как к последовательности прямо-угольных статических изображений? Даешь объектный подход! Будем кодировать взаимодействующие объекты, трехмерные поверхности. Суперпупер аппарат (вейвлеты) не подходит для кодирования видео? Что ж, применим их для кодирования неподвижных изображений. Ну и пусть, что MPEG-4 для видео: вейвлеты ведь.
Наверное, так примерно рассуждали энтузиасты – соз-датели MPEG-4 и разработали действительно революцион-ный стандарт. Правда, вот технические подробности деко-дирования увеличились с 17 страниц у Н.261 до 539 страниц у MPEG-4, притом что изложение здесь далеко не столь подробное. А ведь принципы кодирования видео не меня-ются на протяжении многих лет, только лишь уточняются и уточняются. Правда, профилей разработчика оказалось аж 19 (по сути, надо разрабатывать 19 алгоритмов декодирова-ния).
Но главная относительная неудача стандарта оказалась в том, что его творцы не учитывали потребности рынка. Не так уж много приложений, где требуется кодирование объ-ектов произвольной формы, высокой разрядности цвета, не-стандартной его дискретизации и прочей экзотики. Зато пользователи любят делать цифровые видеоклипы, пересы-лать их по сети, пользоваться услугами цифрового телеви-дения и сервисами видео-по-запросу. Конечно, и для этих приложений MPEG-4 был эффективнее своего предшест-венника, но тут добавились еще проблемы с лицензионной чистотой решений.
В общем, через два года после принятия MPEG-4 мпе-говцы объединились с VCEG и создали новый стандарт – Н.264. Во главу угла данного стандарта поставлена лицен-зионная чистота решений и максимальная эффективность за счет отказа от всякой вышеупомянутой экзотики.

Основные характеристики Н.264
Предполагаемые области применения стандарта Н.264 следующие:
вещание (кабель, кабельный модем, спутник, DSL, TB);
хранение на различных носителях (DVD, магнитные диски);
видеоконференцсвязь (ISDN, Ethernet, LAN, DSL, ра-диосети, мобильные сети, модемы);
сервисы типа видео по запросу;
сервисы MMS (DSL, ISDN).
Под эффективностью алгоритма в стандарте Н.264 по-нимается высокая степень сжатия видео при допустимом качестве и робастность битового потока к ошибкам/потерям передачи. Аскетизм Н.264 в отличие MPEG-4 проявляется в том, что здесь предусмотрено всего три профиля:
Baseline – для видеоконференцсвязи;
Extended – для потоковой передачи видео по сети;
Main – для хранения и вещания видео.
Надо отметить, что профиль Extended полностью по-крывает профиль Baseline, тогда как профиль Main находит-ся несколько в стороне.
В стандарте Н.264 реализованы такие основные новые технические решения, как:
1) Для улучшения предсказания:
компенсация движения на основе малых блоков адап-тивно настраиваемого размера;
точность компенсации движения до ¼ отсчета;
компенсация движения на основе одного или более опорных кадров;
независимость порядка отображения кадров от по-рядка следования опорных кадров;
возможность использования любого кадра в качестве опорного;
предсказание с использованием весовых множителей;
непосредственное пространственное предсказание на основе внутрикадрового кодирования;
циклическая фильтрация для ликвидации эффекта блочности.
2) Другие решения, повышающие эффективность ко-дирования:
преобразование блоков малых размеров (4 х 4);
иерархическое блочное преобразование;
целочисленные быстрые алгоритмы преобразования; арифметическое кодирование;
контекстно-адаптивное энтропийное кодирование.
3) Для повышения помехоустойчивости и гибкости пе-редачи по различным средам:
новая структура множества параметров;
синтаксическая структура NAL, позволяющая абстра-гировать сетевые служебные данные от служебных данных кодирования;
гибко настраиваемый размер слайса;
произвольный порядок следования слайсов;
введение в поток повторяющихся слайсов;
упорядочение данных;
переключение потоков на основе использования SI/SP синхронизации.
Как и в предшествующих стандартах кодирования ви-део, в Н.264 определены три вещи:
1) синтаксис битового потока представления видео;
2) семантика этого потока;
2) метод декодирования для реконструкции видео.
То есть в стандарте определены лишь выходные после-довательности, но не принципы построения кодера видео-сигнала. Это позволяет производителям соревноваться в создании наилучшего кодера.
Схема кодирования видео в соответствии со стандар-том Н.264, в общем, повторяет схемы кодирования предше-ствующих стандартов. Разницей является разве что наличие на последнем этапе обработки с целью удаления блочности. Алгоритм кодирования (он явно не описан в стандарте) со-стоит из четырех основных компонентов:
компенсация движения и вычитания текущего кадра из опорного;
дискретное косинусное преобразование (ДКП) разно-стного кадра;
квантование коэффициентов преобразования;
энтропийное кодирование квантованных коэффици-ентов.
Рассмотрим эти компоненты подробнее.

Компенсация движения
Высокая эффективность Н.264 обусловлена улучше-ниями каждого из компонентов. От эффективной компенса-ции движения зависит энергия разностного кадра. Чем точ-нее скомпенсировано это движение, тем меньше энергии, а значит, выше будет коэффициент сжатия. Можно было бы вычислять вектора движения для каждого пиксела, но это сложно, поэтому их вычисляют для прямоугольных блоков. Выгода здесь в том, что изображение также прямоугольно, можно в дальнейшем применить преобразование, например, ДКП. Минусы очевидны: границы объектов обычно не ле-жат на прямоугольнике, движение также, как правило, не бывает горизонтальным или вертикальным. Тем не менее в настоящее время это единственный метод.
С увеличением размера блока увеличивается вычисли-тельная эффективность и уменьшается объем бит, отводи-мый на кодирование векторов движения. Однако одновре-менно ухудшается точность компенсации, а, следовательно, и увеличивается энергия разностного изображения. Таким образом, налицо необходимость оптимизации, и в Н.264 реализован адаптивный выбор размера блока от 4 х 4 до 16 х 16 пиксела, а точность указания вектора доведена до ¼ пиксела (за счет предварительной интерполяции). Если уж кадры совсем не похожи друг на друга, то компенсация движения не используется, а применяется внутрикадровое кодирование.

Преобразование разностного кадра и квантова-ние
Как известно, для преобразования изображения в спек-тральную область могут использоваться различные ортого-нальные преобразования. Целью преобразования является перераспределение энергии изображения: большая ее часть оказывается сосредоточенной в малом числе коэффициен-тов. Наиболее эффективным преобразованием в этом смыс-ле из числа быстрых считается вейвлет-преобразование. Именно его применяют в MPEG-4 для кодирования непод-вижных изображений. Однако вейвлет-преобразование тре-бует больше памяти (надо запомнить весь кадр) и плохо стыкуется с блочной компенсацией движения, поэтому для кодирования видео не применяется.
В MPEG-4 так же, как и в MPEG-2 (а также и в JPEG), применяется ДКП с основным размером блока 8 х 8. В Н.264 используется целочисленное ортогональное преобра-зование над блоками размером 4 х 4, которое аппроксими-рует ДКП. В результате ядро преобразования использует только сложение, вычитание и сдвиги. При последующем масштабировании необходимо для каждого пиксела одно умножение на коэффициент, но эта операция может быть отнесена к дальнейшему квантованию. Вся арифметика вы-числений 16-разрядная, т. е. может быть выполнена на де-шевом микроконтроллере.
Целью квантования является приведение множества значений коэффициентов к небольшому количеству различ-ных значений. Обычно это достигается за счет деления с округлением результата. Однако коэффициенты квантова-ния в Н.264 выбраны так, чтобы избежать вычислительно-сложных делений (вместо этого выполняется умножение с накоплением и сдвиг вправо).
После осуществления квантования коэффициенты пе-реупорядочиваются. В MPEG-4 это либо зигзагообразное сканирование для блоков 8 х 8, либо использование струк-туры нульдерева для вейвлет-коэффициентов. В Н.264 вы-полняется зигзагообразное сканирование для блоков 4 х 4.

Энтропийное кодирование и формирование потока бит
Цель энтропийного кодирования заключается в обозна-чении более коротким кодом более часто встречающуюся последовательность символов (бит). В MPEG-4 для этого выполняется вначале кодирование длин серий (RLE), а за-тем применяется кодирование с переменной скоростью по заранее вычисленным таблицам Хаффмана. Надо отметить, что кодер Хаффмана чувствителен к ошибкам в канале пе-редачи. Кроме того, необходимо, чтобы кодер/декодер рас-полагали одинаковыми таблицами.
В Н.264 в зависимости от профиля применяются либо экспоненциальные коды Голомба, либо контекстно-зависимый арифметический кодер. Преимуществом ариф-метического кодера является более высокая степень сжатия, так как символ может кодироваться дробным числом бит, тогда как кодер Хаффмана может кодировать только целым числом бит.
В качестве транспорта может быть использован MPEG-2, часть 1 которого определяет порядок объединения видео, звука и служебных данных в единый поток. Другим реше-нием является использование протокола реального времени (RTP). NAL-структура потока H.264 как нельзя лучше под-ходит для пакетной передачи в соответствии с этим прото-колом. Еще один вариант – использовать стандарт MPEG-4 часть 6.

Что же лучше?
С момента появления Н.264 проводились многочислен-ные сравнения этого стандарта и MPEG-4. Результаты, как правило, показывали выигрыш в 1–3 дБ стандарта Н.264 в широком диапазоне скоростей кодирования. Визуально ви-део в стандарте Н.264 также выглядит лучше (во многом благодаря использованию деблочного фильтра). Вот типич-ный результат:


Справедливости ради отметим, что для высокотекстурированных изображений большой разницы не наблюдается. Сравнение различных кодеков Н.264 меж-ду собой вы можете посмотреть на сайте [1]. Во многих тес-тах разница по эффективности кодирования между отдель-ными видеокодеками H.264 достигает двух и более раз.
Так что, будь то MPEG-4 или Н.264 – основная эффек-тивность кодеков основана на нюансах реализации. А этих тонкостей столько, что вы не почерпнете их даже из 700-страничной книги [2], с которой я все равно рекомендую вам ознакомиться.



Литература http://compression.ru/video/codec_comparison/ L.Hanzo, P.Cherriman, J.Streit. Video compression and communications. Second Edition. Wiley, 2007. 704 p.