[an error occurred while processing this directive]
[an error occurred while processing this directive]
Introduction to Video Codecs Comparison
MSU Graphics & Media Lab (Video Group)
[an error occurred while processing this directive]
Введение в сравнение кодеков :)
[an error occurred while processing this directive]
В Интернете достаточно часто встречаются сравнения кодеков... Длинные
и не очень, эмоциональные и не очень, явно пристрастные и не очень. Но
большинство из авторов подобных сравнений просто приводят кадры из
двух фильмов рядом, словно сговорившись игнорируют следующие вещи:
- Любой кодек дает разное качество по кадрам одного и того же фильма.
- Разные кодеки "затачиваются" под разные типы фильмов.
- Качество сжатия конкретного фильма может сильно зависеть от параметров кодирования.
Подробнее про каждый из пунктов:
[an error occurred while processing this directive]
1. Любой кодек дает разное качество по кадрам одного и того же фильма
[an error occurred while processing this directive]
Это связано со многими факторами. Во-первых, в кодеке работает
такой механизм как управление битрейтом, которое дает колебания
качества даже у хороших кодеков. Во-вторых, сам пользователь
выбирает разные стратегии битрейта, и в случае выбора CBR (или
постоянный битрейт) на медленных сценах качество будет высоким, а
на быстрых - низким. В-третьих, у кодеков есть т.н. ключевые кадры,
качество которых обычно изменяется отдельно, и отличается от
качества остальных кадров. В-четвертых, на качество влияет
префильтрация (которая есть у всех современных кодеков)...
В-пятых... В-шестых... В-седьмых... :)
Это означает, что на любом достаточно длинном фильме (а средний
фильм, это 150000-200000 кадров) можно подобрать как достаточно
хорошие, так и достаточно плохие кадры. Особенно если использовалось
однопроходное CBR сжатие на достаточно динамичном фильме.
Т.е. имея один длинный фильм, кодеки А и Б (которые примерно равны
по качеству), и несложные средства автоматизации сравнения качества
(или много религиозной преданности своему кодеку :), можно легко и
с примерами доказать и что А заметно лучше Б ("посмотрите на эти
кадры!"), и что Б заметно лучше А ("посмотрите на эти (другие)
кадры!"). :) Что "с успехом" и проделывается достаточно массово.
Как в пресс-релизах (святое дело!), так и на сайтах посвященных
обработке видео.
[an error occurred while processing this directive]

На графике приведено качество в метрике PSNR (чем выше, тем лучше качество).
Если привести в качестве сравнения кадры "с пиками", то VP будет лучше DivX,
иначе - наоборот.
|
[an error occurred while processing this directive]
[an error occurred while processing this directive]
2. Разные кодеки "затачиваются" под разные типы фильмов
[an error occurred while processing this directive]
Многие знают, что в свое время существовали DivX 4.1 LowMotion &
DivX 4.1 FastMotion. При том, что они проигрывали фильмы одинаково,
их внутренние параметры были "заточены" у одного на слабое
движение, а у второго - на сильное. В результате они с заметно
разным качеством жали фильмы.
Заметьте еще раз - ФОРМАТ, в который они жали, был один! А сжатие в
него осуществлялось по-разному! В результате при одинаковом размере
файлов их качество получалось разным.
Аналогичная "заточенность" под "свой" тип данных характерна
абсолютно для всех кодеков. Кто-то лучше жмет высокие битрейты.
Кто-то - наоборот низкие. Кто-то затачивается под сильное движение,
кто-то под слабое. И даже так - кто-то затачивается под мультфильмы,
а кто-то под реальное видео. Кто-то под "шумные" фильмы, кто-то под
"чистые" и т.д.
Имея исходные тексты кодека, можно не меняя его формат, т.е. не
изменяя декомпрессор, заточить его практически под любой тип
фильмов. И этим с успехом пользуются на практике.
Это означает, что имея кодеки А и Б (примерно равного качества),
можно легко подобрать фильмы, на которых А будет заметно лучше Б, и
на которых Б будет заметно лучше А. При этом забавно, что
формально, фильм может быть и один, просто DVD копия и "тряпичная"
пиратская копия, снятая с экрана в кинотеатре, могут дать заметно
разный результат на двух кодеках. Т.е. фильм будет "один", но
"лучшие" (в мире) кодеки будут различаться. :)
[an error occurred while processing this directive]

Исходный
|

Divx 3.1
|

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

В этом кодеке из-за ошибки в rate control на одном из
битрейтов резко падает качество (да, ошибки в кодеках тоже бывают
:). Для этого кодека данный битрейт будет весьма неудачным
параметром.
|
[an error occurred while processing this directive]
На самом деле существуют и другие, более тонкие способы получать как
реальное преимущество, так и "преимущество". (Например, не существует
методик, определяющих, насколько пропуск кадров критичен для восприятия
и т.д.) Но эти - основные.
Итак! Если хорошо вникнуть в методы "надувательства" при сравнении 2
кодеков, то становится понятно, что для корректного сравнения
необходимо достаточно глобальное тестирование. Т.е. как минимум нужно
сравнивать разные по характеру фильмы с разными битрейтами, причем с
использованием интегральных (средних) характеристик качества по всему
фильму.
Успешного подробного сравнения!
| Связаться с нами можно по адресу: |
 |
Полный список сравнений видео кодеков
Сравнения видео кодеков в МГУ:
[an error occurred while processing this directive]
Другие материалы
[an error occurred while processing this directive]
[an error occurred while processing this directive]
[an error occurred while processing this directive]
[an error occurred while processing this directive]