Новинки:

Сайт подключен к Orphus. Если вы заметили опечатку, выделите слово и нажмите Ctrl+Enter. Спасибо!

ENGLISH VERSION HERE!

Introduction to Video Codecs Comparison

MSU Graphics & Media Lab (Video Group)

Введение в сравнение кодеков :)


В Интернете достаточно часто встречаются сравнения кодеков... Длинные и не очень, эмоциональные и не очень, явно пристрастные и не очень. Но большинство из авторов подобных сравнений просто приводят кадры из двух фильмов рядом, словно сговорившись игнорируют следующие вещи:

  1. Любой кодек дает разное качество по кадрам одного и того же фильма.
  2. Разные кодеки "затачиваются" под разные типы фильмов.
  3. Качество сжатия конкретного фильма может сильно зависеть от параметров кодирования.
Подробнее про каждый из пунктов:


1. Любой кодек дает разное качество по кадрам одного и того же фильма


Это связано со многими факторами. Во-первых, в кодеке работает такой механизм как управление битрейтом, которое дает колебания качества даже у хороших кодеков. Во-вторых, сам пользователь выбирает разные стратегии битрейта, и в случае выбора CBR (или постоянный битрейт) на медленных сценах качество будет высоким, а на быстрых - низким. В-третьих, у кодеков есть т.н. ключевые кадры, качество которых обычно изменяется отдельно, и отличается от качества остальных кадров. В-четвертых, на качество влияет префильтрация (которая есть у всех современных кодеков)... В-пятых... В-шестых... В-седьмых... :)

Это означает, что на любом достаточно длинном фильме (а средний фильм, это 150000-200000 кадров) можно подобрать как достаточно хорошие, так и достаточно плохие кадры. Особенно если использовалось однопроходное CBR сжатие на достаточно динамичном фильме.

Т.е. имея один длинный фильм, кодеки А и Б (которые примерно равны по качеству), и несложные средства автоматизации сравнения качества (или много религиозной преданности своему кодеку :), можно легко и с примерами доказать и что А заметно лучше Б ("посмотрите на эти кадры!"), и что Б заметно лучше А ("посмотрите на эти (другие) кадры!"). :) Что "с успехом" и проделывается достаточно массово. Как в пресс-релизах (святое дело!), так и на сайтах посвященных обработке видео.


На графике приведено качество в метрике PSNR (чем выше, тем лучше качество).
Если привести в качестве сравнения кадры "с пиками", то VP будет лучше DivX, иначе - наоборот.


2. Разные кодеки "затачиваются" под разные типы фильмов


Многие знают, что в свое время существовали DivX 4.1 LowMotion & DivX 4.1 FastMotion. При том, что они проигрывали фильмы одинаково, их внутренние параметры были "заточены" у одного на слабое движение, а у второго - на сильное. В результате они с заметно разным качеством жали фильмы. Заметьте еще раз - ФОРМАТ, в который они жали, был один! А сжатие в него осуществлялось по-разному! В результате при одинаковом размере файлов их качество получалось разным. Аналогичная "заточенность" под "свой" тип данных характерна абсолютно для всех кодеков. Кто-то лучше жмет высокие битрейты. Кто-то - наоборот низкие. Кто-то затачивается под сильное движение, кто-то под слабое. И даже так - кто-то затачивается под мультфильмы, а кто-то под реальное видео. Кто-то под "шумные" фильмы, кто-то под "чистые" и т.д. Имея исходные тексты кодека, можно не меняя его формат, т.е. не изменяя декомпрессор, заточить его практически под любой тип фильмов. И этим с успехом пользуются на практике. Это означает, что имея кодеки А и Б (примерно равного качества), можно легко подобрать фильмы, на которых А будет заметно лучше Б, и на которых Б будет заметно лучше А. При этом забавно, что формально, фильм может быть и один, просто DVD копия и "тряпичная" пиратская копия, снятая с экрана в кинотеатре, могут дать заметно разный результат на двух кодеках. Т.е. фильм будет "один", но "лучшие" (в мире) кодеки будут различаться. :)

Исходный кадр
Исходный
Divx 3.1
Divx 3.1
Divx 5.1
Divx 5.1
Межкадровая разница показывает, насколько сильно отличаются кадры. Черный цвет свидетельствует о том, что разницы нет; синий, зеленый и красный по возрастающей показывают различия имеющиеся в изображениях. Если привести эти кадры в качестве сравнения, то Divx 3.1 будет лучше Divx 5.1.


3. Качество сжатия конкретного фильма может сильно зависеть от параметров кодирования


Большинство об этом не задумывается (должны же были авторы кодеков ВСЕ предусмотреть! :), но у кодеков как правило есть достаточно много параметров, позволяющих при том же размере файла заметно (а то и кардинально) изменить качество. В первую очередь это параметры стратегии битрейта, особенно режимы "quality-based" & "bitrate-based". Потом параметры префильтрации. В частности deinterlacing, ибо встречаются фильмы, которые сжимали в череcстрочной развертке в MPEG-4 (и, видимо, удивлялись слабому качеству :), denoising (подавление шумов), deflicking (подавление мерцания) и т.д. Существуют параметры управления частотой ключевых кадров, маской использования B-frames, управление зависимости префильтра от фильма и т.д. Это означает, что имея кодеки А и Б (примерно равного качества), можно легко установить один кодек в режим Maximum Perfomance (все ручки сдвинуть до предела в сторону скорости сжатия), а другой в режим 2-pass Maximum Quality (все ручки до предела в сторону максимального качества), можно получить 2 фильма одного размера, но существенно разного качества. Можно даже эти фильмы на сайт выложить и предложить убедиться! :) Что с успехом многие компании и делают. При этом душераздирающие подробности того, что один кодек работал в 10 раз меньше другого предпочитают оставлять за кадром. Зачем людям (тем более журналистам) знать лишнее? :) При этом исходный несжатый файл никто не кладет, обосновывая это его большим размером. А почему не кладут параметры сжатия - вы теперь знаете.

исходный кадр
В этом кодеке из-за ошибки в rate control на одном из битрейтов резко падает качество (да, ошибки в кодеках тоже бывают :). Для этого кодека данный битрейт будет весьма неудачным параметром.
На самом деле существуют и другие, более тонкие способы получать как реальное преимущество, так и "преимущество". (Например, не существует методик, определяющих, насколько пропуск кадров критичен для восприятия и т.д.) Но эти - основные. Итак! Если хорошо вникнуть в методы "надувательства" при сравнении 2 кодеков, то становится понятно, что для корректного сравнения необходимо достаточно глобальное тестирование. Т.е. как минимум нужно сравнивать разные по характеру фильмы с разными битрейтами, причем с использованием интегральных (средних) характеристик качества по всему фильму. Успешного подробного сравнения!

Связаться с нами можно по адресу: 

Call for HEVC codecs 2017
Полный список сравнений видео кодеков

Сравнения видео кодеков в МГУ:


Другие материалы


Материалы по видео


Смотрите также материалы:
- По цветовым пространствам
- По JPEG
- По JPEG-2000