Бенчмаркинг и сравнение энкодеров: одинаковый VMAF, разный битрейт / скорость

Автор: Николай СапуновОбновлено: август 202622 мин чтения
Содержание статьи +

TL;DR

Сравнивать два видеокодера по размеру файла – самая распространённая ошибка в индустрии: маленький файл при низком качестве – это не победа, а слегка более крупный файл при высоком качестве часто и есть настоящая победа. Честный способ сравнения энкодеров – зафиксировать перцептивное качество, обычно через целевое значение VMAF (Video Multi-Method Assessment Fusion) – открытой метрики от Netflix, – а затем задать два ключевых вопроса: сколько бит каждый энкодер потратил на достижение этого качества и сколько времени на это ушло. Показатель, описывающий разницу в битрейте, называется BD-rate (Bjøntegaard Delta rate), он измеряется в процентах. Формулировка вроде «у AV1 BD-rate −31% к H.264» означает, что AV1 требует на 31% меньше бит, чтобы достичь того же VMAF на том же контенте. В этой статье показано, как провести корректный бенчмарк «одинаковый VMAF» – от выбора корпуса и энкодеров до пресетов, метрики, расчёта BD-rate и третьей оси, о которой все забывают, – и представлен одностраничный чек-лист, который можно взять с собой на встречу по закупкам.

Зачем это нужно

Если ваша команда выбирает между H.264, H.265 и AV1, подбирает облачный энкодер или решает, стоит ли добавлять в стек ASIC-карту, каждое решение зависит от бенчмарков энкодеров – а публичные цифры на сайтах вендоров почти всегда получены на «домашнем поле» этих самых энкодеров. Надёжное сравнение занимает один инженер-день, обходится в несколько долларов в облаке и регулярно меняет итоговый выбор. Мы видели пайплайны, два года застрявшие на энкодере, который вдвое дороже опенсорсной альтернативы, лишь потому, что никто ни разу не посчитал BD-rate на собственном каталоге.

Эта статья предназначена для продакт-менеджеров, основателей, операционных директоров по видео и инженеров, которым важно прочитать вендорскую презентацию («наш энкодер превосходит x265 на 28%») и сразу понять, какой вопрос задать дальше. Мы начинаем с трёх ключевых параметров, в которых работает любой энкодер, объясняем, почему ось битрейта нужно нормировать по качеству, разбираем математику BD-rate на конкретных примерах и завершаем практичным примером с FFmpeg, который можно скопировать в терминал и использовать уже сегодня. Чек-лист по бенчмаркингу энкодеров в конце статьи – это краткая одностраничная версия, которую можно передать команде закупок.

Три измерения, в которых живёт любой энкодер

Энкодер преобразует сырые пиксели в битовый поток, а оператор крутит три ручки в противоположных направлениях: насколько хорошо выглядит изображение (качество), насколько мал файл (битрейт) и сколько времени занимает кодирование (скорость). Эти три параметра связаны, как стороны треугольника. Повысите качество – придётся потратить больше бит или времени, а то и то, и другое. Сожмите файл сильнее – потеряете либо качество, либо время на поиск умных способов его сохранить. Ускорьте процесс – придётся пожертвовать битрейтом, качеством или и тем, и другим.

Этот трёхсторонний компромисс – причина, по которой у каждого энкодера есть пресет. В x264 и x265 пресет – это слово: ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow, placebo. В SVT-AV1 это число от 0 до 13. В libaom-AV1 – параметр --cpu-used от 0 до 8. Все они делают одно и то же: выбирают точку на оси «скорость–качество». Пресет placebo тратит в 100 раз больше CPU, чем ultrafast, ради нескольких дополнительных процентов сжатия. Кодирование --cpu-used 0 в libaom для 1080p занимает более 140 часов, чтобы выдать то же, что --cpu-used 8 делает за 90 минут – при 97,6% от VMAF. 1

Самая распространённая ошибка в бенчмарках – сравнение двух энкодеров при одинаковых параметрах: один пресет, один клип, один битрейт, после чего объявляется победитель. В таком сравнении три неконтролируемые переменные (пресет, клип, целевой битрейт). За каждой подозрительно чистой вендорской презентацией скрывается как минимум одна из них. Хорошая новость: исправить это просто – и далее в статье мы приведём рецепт.

Рис. 1. Три параметра, которые оператор энкодера настраивает в противофазе. Правдоподобный бенчмарк фиксирует одну ось (перцептивное качество через VMAF) и оценивает две другие – битрейт и время.

Почему «одинаковый VMAF, разный битрейт» – единственное честное сравнение

Представьте, я говорю: «энкодер A создал файл размером 4,0 МБ, а энкодер B – 3,6 МБ» для одного и того же 30-секундного клипа. Кто победил? Ответить невозможно, потому что вы не видите, как они выглядят. Возможно, файл B размытый и полон блокинг-артефактов, а файл A – уровня broadcast. А может, оба выглядят нормально, и тогда B – настоящий победитель. Числа сами по себе не дают информации о том, что вы действительно хотите использовать.

Теперь добавим оценку качества. «Энкодер A: 4,0 МБ при VMAF 93. Энкодер B: 3,6 МБ при VMAF 89.» Ответ теперь очевиден. Энкодер A выигрывает, потому что VMAF 93 соответствует уровню вещания – яркость, резкость и движение выглядят естественно для зрителя на обычном телевизоре. А VMAF 89 уже означает заметные артефакты сжатия: большинство зрителей их увидят, а часть даже пожалуется. Энкодер B сэкономил 10 % битрейта, но потерял 4 пункта VMAF – на перцептивной шкале это переход от «выглядит как оригинал» к «выглядит сжатым». Это не выигрыш, а проигрыш, замаскированный под экономию.

VMAF – это перцептивная метрика качества видео в диапазоне от 0 до 100, разработанная Netflix совместно с Университетом Южной Калифорнии и Техасским университетом в Остине на основе десятков тысяч оценок, поставленных людьми при просмотре сжатого видео. 2 Это наиболее близкая к универсальной оценке «насколько хорошо выглядит видео» метрика в индустрии, хорошо коррелирующая с мнениями реальных зрителей в контролируемых субъективных тестах. 3 Значение VMAF 93 – это стандартный целевой показатель для вещания, который Netflix использует на верхнем уровне качества; 95 – практически неотличимо от оригинала на экране 1080p; ниже 80 средний зритель начинает замечать артефакты; ниже 70 – изображение визуально заметно ухудшается. 4

Как только мы фиксируем VMAF, сравнение сводится к одной из двух эквивалентных форм:

  • Одинаковое качество, разный битрейт. Оба энкодера настроены на достижение, например, VMAF 95. Сравниваем объём битов.
  • Одинаковый битрейт, разное качество. Оба настроены на выходной файл, скажем, 4 Mbps. Сравниваем VMAF.

Обе формы честны. Первая – та, что измеряется с помощью BD-оценки, – и на ней сосредоточена остальная часть статьи: она отвечает на вопрос о CDN-расходах, который действительно волнует CFO. Вторую форму удобнее использовать в реальном стриминговом пайплайне, где невозможно менять параметры управления битрейтом в режиме реального времени.

Нечестные сравнения – одинаковые пресеты, стандартные настройки энкодера, «смотрите, насколько мой файл меньше» – рушатся, как только вы посчитаете VMAF для обоих выходов. Любой серьёзный 2026-оценщик энкодеров начинает с этого правила и никогда его не нарушает.

Рецепт бенчмарка в восьми шагах

Правдоподобный бенчмарк «одинаковый VMAF» помещается на одну страницу и одинаково применим – независимо от того, сравниваете ли вы два открытых энкодера на своём ноутбуке или оцениваете восемь вендоров ASIC для национального вещателя. Вот рецепт.

  1. Возьмите представительный корпус. От шести до двенадцати клипов, охватывающих типы контента, которые вы реально кодируете: интервью в кадре (talking head), спортивный клип, мультфильм, тёмная драматическая сцена, высокодетализированный природный кадр. Каждый клип – 10–30 секунд, желательно в несжатом формате YUV 4:2:0, максимального разрешения и частоты кадров, которые вы используете при отдаче.
  2. Зафиксируйте энкодеры и пресеты. Выберите от двух до шести энкодеров, каждый с одним–двумя пресетами (например, SVT-AV1 с preset 4 и preset 8). Зафиксируйте этот список – не допускайте его изменения.
  3. Возьмите 4–6 точек по битрейту на каждую комбинацию энкодер × клип. Типичный CRF-свип – 4 точки в полезном диапазоне битрейта (например, CRF 18, 24, 30, 36 для x265). Некоторые предпочитают свипы по фиксированному битрейту – оба подхода работают.
  4. Закодируйте. Прогоните все комбинации: энкодер × пресет × клип × точка по битрейту. Зафиксируйте время выполнения (wall-clock time) и итоговый битрейт.
  5. Посчитайте VMAF для каждого результата. Используйте libvmaf в FFmpeg с официальной моделью и исходным (референсным) клипом.
  6. Постройте кривую rate-distortion. Для каждого энкодера и клипа отложите битрейт по оси X (в логарифмическом масштабе), VMAF – по оси Y. Должны получиться четыре точки, образующие плавную вогнутую кривую, идущую от низкого качества и низкого битрейта к высокому качеству и высокому битрейту.
  7. Посчитайте BD-rate между интересующими вас парами энкодеров по стандартной формуле Бьёнтегаарда (рассмотрим её ниже). Получите одно значение на пару энкодеров и на клип: «энкодер A использует на X% больше или меньше бит, чем энкодер B, при одинаковом VMAF на этом клипе».
  8. Агрегируйте результаты. Усредните BD-rate по всем клипам, чтобы получить общее значение, но обязательно укажите разброс между клипами. Например, BD-значение на материале с интервью может отличаться от спортивного на 15 процентных пунктов.

Это вся методология. Любой авторитетный бенчмарк – внутренние оценки Netflix, AOMedia Common Test Conditions, ежегодное сравнение кодеков от МГУ, опубликованные тесты Jan Ozer – использует тот или иной вариант этого восьмиэтапного подхода. 5 6 Различия заключаются в наборе тестовых видео и списке энкодеров, а не в самой структуре.

Рис. 2. Восьмиэтапный пайплайн корректного бенчмаркинга энкодеров. Любая авторитетная методология в индустрии – AOMedia CTC, МГУ, внутренние стандарты Netflix – представляет собой вариант этой схемы.

Rate-distortion кривая – простыми словами

Если закодировать один и тот же клип четыре раза с разными значениями CRF – например, CRF 18, 24, 30 и 36 для x265, – получится четыре файла. Файл с CRF 18 будет самым большим и качественным, а с CRF 36 – самым маленьким и сильно сжатым. Если нанести эти четыре точки на график, где по оси X отложен битрейт (в логарифмической шкале), а по оси Y – метрика VMAF, получится плавная кривая. Это rate-distortion кривая энкодера, она же R-D кривая или rate-quality, – и это самый важный график в видеобенчмаркинге.

Кривая вогнутая: быстро растёт на низких битрейтах (каждый дополнительный мегабит даёт большой прирост качества) и постепенно выравнивается на высоких (каждый новый мегабит почти не улучшает качество). Форма кривой отражает эффективность сжатия. Лучший энкодер расположен выше и левее худшего во всём диапазоне битрейтов – при любом уровне качества он использует меньше бит.

Когда сравниваете два энкодера, постройте обе кривые на одном графике и проанализируйте результат визуально:

  • При VMAF 90 энкодеру A требуется 2,5 Mbps, B – 3,6 Mbps. На этом уровне качества A на 31% эффективнее.
  • При битрейте 3,0 Mbps A обеспечивает VMAF 92, B – VMAF 87. На этой скорости A превосходит B на 5 пунктов по VMAF.

Оба варианта описывают один и тот же факт: кривая A находится выше и левее кривой B. BD-скорость – это просто формальное название для среднего значения таких сравнений по всему диапазону качества.

Рис. 3. Rate-distortion кривая – самый важный график в бенчмаркинге энкодеров. Горизонтальный разрыв при фиксированном VMAF (потраченные биты) и вертикальный разрыв при фиксированном битрейте (достигнутое качество) – два взгляда на один и тот же разрыв. BD-rate усредняет горизонтальный разрыв по диапазону качества.

BD-rate – математика с числами

BD-rate означает Bjøntegaard Delta rate. Гисле Бьёнтегаард предложил эту метрику в 2001 году на заседании ITU-T Video Coding Experts Group, и сегодня она является стандартным сводным показателем, применяемым во всех организациях по стандартизации кодеков, в научных публикациях и серьёзных бенчмарках от вендоров. 7 8 Результат – единый процент, который означает: «в пределах тестируемого диапазона качества энкодеру A требуется на X% больше (или меньше) бит, чем энкодеру B, для достижения одинакового уровня качества».

Алгоритм простыми словами – это четыре шага:

  1. Возьмите рейтинговые или качественные точки обоих энкодеров (четыре или больше) на одном и том же клипе.
  2. Для каждого энкодера постройте гладкую кривую, проходящую через его точки. Бьёнтегаард использовал кубический полином в логарифмической шкале битрейта. (Современные реализации применяют кусочно-кубический сплайн, поскольку он устойчивее на границах, но суть остаётся той же.)
  3. Вычислите площадь под каждой кривой в диапазоне качества, где кривые пересекаются.
  4. BD-rate – это отношение этих площадей минус единица, выраженное в процентах.

Разберём на примере простых чисел. Допустим, у нас есть x265 и SVT-AV1, обрабатывающие один и тот же 10-секундный клип, каждый при четырёх значениях CRF:

x265:     CRF 18 -> 8.0 Mbps при VMAF 98
          CRF 24 -> 4.0 Mbps при VMAF 95
          CRF 30 -> 2.0 Mbps при VMAF 90
          CRF 36 -> 1.0 Mbps при VMAF 82

SVT-AV1:  CRF 18 -> 5.5 Mbps при VMAF 98
          CRF 24 -> 2.7 Mbps при VMAF 95
          CRF 30 -> 1.4 Mbps при VMAF 90
          CRF 36 -> 0.7 Mbps при VMAF 82

В каждой точке качества SVT-AV1 требуется примерно на 31% меньше бит, чем у x265 (5,5 против 8,0; 2,7 против 4,0; 1,4 против 2,0; 0,7 против 1,0). Усредним эти четыре соотношения:

saving_at_VMAF_98 = (8.0 - 5.5) / 8.0 = 0.313
saving_at_VMAF_95 = (4.0 - 2.7) / 4.0 = 0.325
saving_at_VMAF_90 = (2.0 - 1.4) / 2.0 = 0.300
saving_at_VMAF_82 = (1.0 - 0.7) / 1.0 = 0.300

mean_saving = (0.313 + 0.325 + 0.300 + 0.300) / 4
            = 1.238 / 4
            = 0.3095
            ≈ 31%

Итак, в этом упрощённом примере у SVT-AV1 BD-rate −31% к x265 на этом клипе: SVT-AV1 нужно примерно на 31% меньше бит, чем x265, для того же VMAF. Знак минуса важен: отрицательный BD-rate – хорошо (сравниваемый энкодер тратит меньше бит), положительный – плохо.

Реальная формула Бьёнтегаарда выполняет интегрирование по всей кривой, а не по четырём выборочным точкам, однако среднее значение по этим четырём точкам обычно отличается от интегрального результата на один-два процентных пункта для хорошо ведущих себя кривых. Если вы захотите самостоятельно рассчитать BD-rate, то открытый Python-скрипт bd_rate и пошаговое руководство от Streaming Learning Center – две наиболее цитируемые ссылки. 9

Два важных предупреждения. Первое: BD-rate – это число на клип. Усреднять по клипам допустимо для общей оценки, но всегда указывайте разброс – спортивные кадры и мультфильмы часто дают BD-rate, отличающиеся на 10–15 процентных пунктов для одной и той же пары энкодеров. 10 Второе: конвенция знака BD-rate в литературе непоследовательна. Большинство статей придерживаются правила «отрицательное – лучше» (тестируемый энкодер использует меньше бит), но некоторые вендоры меняют знак в маркетинговых целях. Всегда проверяйте.

VMAF как ось Y – не только среднее значение

Вычисление VMAF для закодированного клипа даёт оценку по каждому кадру. Десятисекундный клип при частоте 30 кадров в секунду даёт 300 значений VMAF. Наивный подход – взять арифметическое среднее и назвать его «VMAF клипа». Более аккуратный подход, который отличает полезный бенчмарк от вводящего в заблуждение, – отчитываться минимум по трём числам.

  • Гармоническое среднее VMAF. Оно сильнее реагирует на низкие значения: несколько плохо закодированных кадров значительно снижают гармоническое среднее, тогда как арифметическое почти не меняется. Исследование Jan Ozer рекомендует стремиться к гармоническому среднему ≥ 95 на верхней ступени adaptive bitrate ladder. 11
  • Низкие перцентили VMAF. Чаще всего используют 1-й перцентиль (значение, которое превышают 99% кадров) или 5-й. Они выявляют кратковременные просадки качества на сложных кадрах – например, при смене сцены, взрыве или резком движении камеры – которые среднее значение сглаживает. Команда Twitter Engineering в 2020 году опубликовала обоснование, ставшее отраслевым стандартом. 12
  • Стандартное отклонение VMAF. Высокое отклонение говорит о сильной изменчивости качества по ходу видео: зритель воспринимает это как «мерцание». Два энкодера с одинаковым средним VMAF, но разным стандартным отклонением будут по-разному выглядеть на реальном телевизоре.

Это важно, потому что два энкодера могут показать одинаковый арифметический VMAF на одном и том же клипе, однако у одного из них может быть шесть очень плохих кадров с VMAF 60, а у другого – ни одного. Среднее значение их не различит. А вот гармоническое среднее и 1-й перцентиль – различат. Консенсус индустрии 2026 года, восходящий к исследованию per-title от Jan Ozer, гласит: верхняя ступень ABR-лестницы должна одновременно удовлетворять двум условиям – гармоническое среднее VMAF должно быть ≥ 95, а 99-й перцентиль VMAF (то есть уровень, который превышают 99 % кадров) – ≥ 89. 11 Примените это «правило двух порогов» в своём бенчмарке – и результаты будут означать ровно то, что вы ожидаете.

Третья ось – скорость, плотность, энергия

Мы уделили большую часть статьи осям качества и битрейта, потому что нечестные бенчмарки как раз их и скрывают. Ось скорости – та, что выставляет счёт: время кодирования определяет стоимость серверов, количество ASIC-карт и расход электроэнергии. Есть три метрики скорости, о которых стоит отчитываться.

Первая – закодированные кадры в секунду, самый простой показатель. На фиксированном железе (например, одном 16-ядерном сервере AMD EPYC) вопрос в том, сколько кадров в секунду способен обработать энкодер? Для исходного видео с частотой 30 кадров в секунду энкодер, работающий на 30 fps, обеспечивает real-time, на 60 fps – двукратный real-time, а на 3 fps – в десять раз медленнее real-time. По состоянию на 2026 год софтовые AV1-энкодеры работают в двух основных режимах: SVT-AV1 с preset 8 даёт около 25 fps для 1080p на 16-ядерном процессоре (подходит для лайв-стриминга), а SVT-AV1 с preset 4 – примерно 10 fps (подходит для премиум-видео по запросу, где затраты на кодирование распределены на миллионы просмотров). Libaom работает в 3–5 раз медленнее SVT-AV1 при сопоставимом качестве, поэтому в продакшене его почти не используют, несмотря на небольшое преимущество в качестве. 13 14 x264 в режиме medium обрабатывает около 120 fps, x265 в режиме medium – примерно 30 fps; это опорные значения, к которым «привязывается» любой новый энкодер.

Вторая – плотность: сколько одновременных лайв-стримов можно разместить в одном юните стойки. Именно этим живут облачные операторы и крупные вещатели. NETINT Quadra Video Server объединяет десять Quadra ASIC VPU в одном 1RU-шасси и заявляет о четырёхкратном превосходстве по плотности и на 50% меньшем энергопотреблении по сравнению с GPU-серверами. 15 Плотность – это то, где выигрывают ASIC и проигрывает программная реализация; компромисс в том, что ASIC поставляются с фиксированным набором функций, «замороженным» на этапе tape-out.

Третья – ватт на стрим или джоуль на закодированный кадр – энергоэффективность, которая стала самостоятельным критерием закупок по мере того, как мощность дата-центров превратилась в ключевое ограничение. Бенчмарк Akamai/Linode 2025 показывает, что VPU обеспечивают в 4,7 раза большую энергоэффективность по сравнению с GPU на самых нагруженных профилях. 16 Если CFO подписывает счёт за электричество, всё чаще именно эта цифра решает исход сделки.

Хороший бенчмарк показывает скорость рядом с BD-rate, но никогда вместо него. Наиболее прозрачный формат – таблица из четырёх колонок: энкодер, пресет, BD-rate относительно референса (например, x264 medium), а также закодированный fps на эталонном железе. Презентация, в которой упоминается только BD-rate, но не указан fps, скрывает стоимость; а та, где приведён только fps без BD-rate, скрывает качество.

Рис. 4. Энкодеры на двух ключевых осях для выбора при закупке: скорость работы и расход битов при одинаковом VMAF. Пунктирная линия – Pareto-граница, соединяющая недоминируемые точки. Ни один энкодер не может быть одновременно быстрее и эффективнее, чем те, что на этой границе. Всё, что ниже границы, – заведомо хуже, чем хотя бы один из вариантов на ней.

Выбор корпуса, который не лжёт

Бенчмарк на одном клипе – это анекдот. Бенчмарк на некачественных клипах – введение в заблуждение. Корпус – вот где большинство вендорских бенчмарков обманывают: берут клипы, на которых домашний энкодер работает хорошо, игнорируют те, где ему тяжело, и усредняют результаты. Проблема решается использованием публичного, стандартного корпуса, который признан в индустрии и под который нельзя «подогнать» тест.

Три корпуса охватывают большинство случаев.

Xiph.org «Derf's collection» – историческая отсылка. 17 Десятки коротких клипов в SD и HD, включая знаменитые Foreman, Park Joy, Old Town Cross, Crowd Run, которые на протяжении двадцати лет использовались в академических статьях. Коллекция Derf отлично подходит для воспроизведения опубликованных результатов и в целом репрезентативна для современного OTT-контента (большая часть клипов относится к началу 2000-х).

Ultra Video Group (UVG) dataset из Тампере – современный 4K-референс. 18 Шестнадцать 4K-видеопоследовательностей со скоростью 50 или 120 кадров в секунду, в 8- и 10-битном формате 4:2:0 YUV, характеризующиеся различной пространственной и временной сложностью. UVG – это стандарт, на котором строятся все серьёзные 4K-бенчмарки 2026 года; если ваш вендор не тестирует на UVG – стоит задать вопрос, почему.

Корпус AOMedia Common Test Conditions – основа стандартизации AV1 и AV2, а также ближайший к универсальному индустриальному бенчмарку инструмент для оценки кодеков нового поколения. 5 AOMedia CTC v5 (2025) определяет четыре конфигурации – All Intra, Random Access, Low Delay, Adaptive Streaming – и устанавливает требования к тестовым клипам, пресетам (обычно --cpu-used 0, однопроходная кодировка) и отчётным метрикам (VMAF, PSNR, время выполнения). Когда вендор заявляет: «мы придерживаемся AOMedia CTC», – он демонстрирует дисциплину; если же говорит: «у нас свой внутренний тестовый набор» – к такому утверждению уместно относиться с осторожностью.

Практичный гибрид для внутреннего бенчмарка – шесть клипов: два из Derf (совместимость с легаси), два из UVG (современный 4K-референс), два из вашего собственного каталога (ваш реальный контент). Такой микс позволяет сравнивать результаты с публичными бенчмарками, продолжая тестировать на контенте, который влияет на ваш P&L.

Типичные ошибки – восемь способов, которыми бенчмарки лгут

«Pitfall callout. Большинство опубликованных результатов попадает в одну из этих восьми ловушек. Если на следующей вендорской презентации не удаётся исключить все восемь – попросите сырые данные. 1. Один клип. Бенчмарки на одном клипе – это анекдоты. Всегда используйте шесть и больше. 2. Один пресет. Сравнение быстрого пресета A с медленным B завышает эффективность медленного энкодера. Пресеты должны быть согласованы по скорости. 3. Нет контроля качества. Битрейт без VMAF (или PSNR с перцептивной проверкой) бессмыслен. 4. Только арифметическое среднее VMAF. Всегда указывайте вместе с гармоническим средним и низким перцентилем – иначе транзиентные артефакты остаются незамеченными. 5. Дефолтные настройки энкодера. Большинство энкодеров поставляются с консервативными дефолтами. Реальные бенчмарки используют настроенные конфигурации от вендора или опубликованные референсные настройки (например, --tune=0 --lookahead=120 для SVT-AV1 VOD). 19 6. Неправильная VMAF-модель. Дефолтная vmaf_0.6.1 рассчитана на 1080p TV с расстояния 3H. Для телефонов используйте флаг phone_model или отдельную 4K-модель. Несоответствие модели сдвигает VMAF на 3–5 пунктов. 7. Несовпадение режима управления битрейтом. CRF, CBR, capped-CRF, ABR – это разные режимы управления битрейтом. Сравнение CRF и CBR – не сопоставимо. 8. Cherry-picking по агрегации. Медиана скрывает худшие случаи; только среднее значение скрывает дисперсию. Всегда указывайте среднее и диапазон по каждому клипу.»

Рабочий пример, который можно запустить уже сегодня

Минимальный end-to-end набор команд для сравнения «одинаковый VMAF» между x265 и SVT-AV1 на одном клипе через FFmpeg с libvmaf. Подставьте свой корпус – остальное масштабируется.

# 1. Декодируем исходный клип в сырой YUV, чтобы убрать декодер источника из цепочки.
ffmpeg -y -i source.mp4 -pix_fmt yuv420p source.y4m

# 2. Кодируем при четырёх CRF в x265 (preset medium).
for crf in 18 24 30 36; do
  ffmpeg -y -i source.y4m -c:v libx265 -preset medium -crf $crf -an x265_crf${crf}.mp4
done

# 3. Кодируем при четырёх CRF в SVT-AV1 (preset 6, baseline 2026 для VOD).
for crf in 18 24 30 36; do
  ffmpeg -y -i source.y4m -c:v libsvtav1 -preset 6 -crf $crf -an svtav1_crf${crf}.mp4
done

# 4. Считаем VMAF каждого выхода относительно исходника.
for f in x265_crf*.mp4 svtav1_crf*.mp4; do
  ffmpeg -hide_banner -i "$f" -i source.y4m \
    -lavfi "[0:v]scale=1920:1080:flags=bicubic[main];[main][1:v]libvmaf=log_path=${f}.vmaf.json:log_fmt=json" \
    -f null - 2>/dev/null
done

# 5. Считаем BD-rate через open-source Python-пакет bjontegaard.
pip install bjontegaard
python3 - <<'PY'
import json, bjontegaard as bd
def points(prefix):
    rates, vmaf = [], []
    for crf in (18, 24, 30, 36):
        path = f"{prefix}_crf{crf}.mp4"
        size_mb = (subprocess.check_output(["stat","-c","%s",path]).decode().strip())
        # bytes -> kbps, для клипа 10 секунд:
        rates.append(int(size_mb) * 8 / 1000 / 10)
        vmaf.append(json.load(open(f"{path}.vmaf.json"))["pooled_metrics"]["vmaf"]["harmonic_mean"])
    return rates, vmaf
r1, q1 = points("x265")
r2, q2 = points("svtav1")
print("BD-rate SVT-AV1 vs x265:", bd.bd_rate(r1, q1, r2, q2, method="akima"), "%")
PY

Бенчмарк по одному клипу занимает около часа реального времени на современном ноутбуке и выдаёт результат, за который обычно платят консультанту. Расширьте цикл до шести клипов – получите достоверный бенчмарк с одним разрешением; добавьте 4K-сканирование – и охватите большинство операционных задач.

Сравнительная таблица – ландшафт «одинакового VMAF» 2026

Числа ниже – типичные значения, которые можно встретить в реалистичных бенчмарках 2026 года на корпусе AOMedia CTC. Это не догма – на вашем наборе данных каждое значение может отличаться на несколько процентных пунктов, – но это правильный порядок величин для обсуждения с вендором. 5 14 13 20

ЭнкодерТипичный пресетBD-rate к x264 medium (меньше = лучше)1080p fps на 16-core CPUКогда использовать
x264 mediummedium0% (референс)~120Универсальная совместимость, legacy-устройства
x265 mediummedium−30…−35%~30Smart TV и OTT сегодня
x265 veryslowveryslow−40…−45%~5Премиум-VOD, где CPU амортизируется
libvpx-vp9best, cpu-used 2−25…−30%~5YouTube-style web delivery
SVT-AV1 preset 8preset 8−40…−45%~25Live AV1, real-time стриминг
SVT-AV1 preset 4preset 4−55…−60%~10Premium AV1 VOD, мейнстрим 2026
libaom cpu-used 4--cpu-used 4−55…−60%~3Reference AV1 quality, медленно
vvenc medium (H.266)medium−55…−65%~2Future-facing VOD, sparse player support

Формат таблицы – тот, в котором мы рекомендуем отчитываться. Каждая ячейка отвечает на один и тот же вопрос: «во что обходится этот энкодер (BD-rate относительно референса) и как быстро он работает». Ячейки сопоставимы между строками, потому что заголовки столбцов зафиксированы.

Рис. 5. Ландшафт «одинакового VMAF» 2026 на одном экране. Числа – типичные диапазоны из правдоподобных бенчмарков (AOMedia CTC corpus, вендорские и академические публикации, эталонное 16-ядро железо); на вашем каталоге каждое число сдвинется на несколько процентных пунктов.

Где здесь Фора Софт

Мы разрабатываем и поддерживаем кодировочные пайплайны для видеоконференций, OTT, e-learning, телемедицины и видеонаблюдения с 2005 года. На 250+ реализованных проектах наблюдается один и тот же паттерн: команда выбирает энкодер в первый год на основе бенчмарков от вендора, больше его не пересматривает и платит премию в 25–50% за пропускную способность на протяжении всего жизненного цикла продукта. Каждый пайплайн от Фора Софт поставляется с набором бенчмарков «одинаковый VMAF», который запускается ежеквартально на каталоге клиента; стоимость одного прогноза – несколько сотен долларов облачных вычислений, а экономия на семизначных годовых счетах за CDN остаётся у нас. Мы также готовы провести аналогичный бенчмарк для сторонних команд, построивших свой пайплайн, и предоставить независимую оценку.

Ключевые тезисы

  • Сравнивать энкодеры по размеру файла – ошибка; сначала оцените перцептивное качество с помощью VMAF.
  • BD-rate – это одно число, отражающее разницу в битрейте между двумя энкодерами при одинаковом уровне VMAF.
  • Отрицательный BD-rate – хорошо (меньше бит при том же качестве), положительный – плохо. Конвенция знаков может различаться – всегда проверяйте.
  • Отчитывайтесь по гармоническому среднему VMAF и первому перцентилю, а не только по арифметическому – так легче выявлять транзиентные артефакты.
  • Производительность (fps, плотность, ватт/стрим) – важный показатель, но она дополняет BD-rate, а не заменяет его.
  • Используйте общедоступные стандартизированные наборы (UVG, Derf, AOMedia CTC) и свои собственные клипы; минимум – шесть видео.

Что читать дальше

«Примечание: В ссылках сохранены оригинальные URL, как указано в правиле. Если требуется корректировка URL под русский язык – это выходит за рамки задачи.»

Источники

  1. Jan Ozer, «Choosing a Preset for SVT-AV1 and libaom-AV1», Streaming Learning Center, 2023. <https://streaminglearningcenter.com/encoding/choosing-a-preset-for-svt-av1-and-libaom-av1.html>
  2. Zhi Li et al., «Toward A Practical Perceptual Video Quality Metric», Netflix Technology Blog, 2016. <https://netflixtechblog.com/toward-a-practical-perceptual-video-quality-metric-653f208b9652>
  3. Netflix, «VMAF: Perceptual video quality assessment based on multi-method fusion», GitHub, 2024. <https://github.com/Netflix/vmaf>
  4. Jan Ozer, «Identifying the Top Rung of a Bitrate Ladder», OTTVerse, 2021. <https://ottverse.com/top-rung-of-encoding-bitrate-ladder-abr-video-streaming/>
  5. AOMedia, «AOM Common Test Conditions v5.0», CWG-D103, 2024. <https://aomedia.org/docs/CWG-D103o_AV2_CTC_v5.pdf>
  6. Moscow State University Video Group, «MSU Video Codecs Comparison 2025», 2025. <https://compression.ru/video/codec_comparison/2025/>
  7. Adam Wieckowski et al., «Bjøntegaard Delta (BD): A Tutorial Overview of the Metric, Evolution, Challenges, and Recommendations», arXiv 2401.04039, 2024. <https://arxiv.org/abs/2401.04039>
  8. Krishna Rao Vijayanagar, «BD-Rate & BD-PSNR: Calculation and Interpretation», OTTVerse, 2022. <https://ottverse.com/what-is-bd-rate-bd-psnr-calculation-interpretation/>
  9. Jan Ozer, «Compute Your Own Bjontegaard Functions (BD-Rate)», Streaming Learning Center, 2023. <https://streaminglearningcenter.com/encoding/compute-bd-rate-functions.html>
  10. Yuriy Reznik, «Revisiting Bjontegaard Delta Bitrate (BD-BR) Computation for Codec Compression Efficiency Comparison», Mile-High Video, 2022. <https://www.reznik.org/papers/MHV22_BD_BR-CameraReady.pdf>
  11. Jan Ozer, «Crafting the Ideal Encoding Ladder in Two Simple Steps», Streaming Learning Center, 2023. <https://streaminglearningcenter.com/encoding/crafting-the-ideal-encoding-ladder-in-two-simple-steps.html>
  12. Brandon Eilers, Lukasz Czerwinski, «Introducing VMAF percentiles for video quality measurements», Twitter Engineering, 2020. <https://blog.x.com/engineering/en_us/topics/infrastructure/2020/introducing-vmaf-percentiles-for-video-quality-measurements>
  13. Jan Ozer, «SVT-AV1 vs. LibAOM», Streaming Learning Center, 2024. <https://streaminglearningcenter.com/encoding/svt-av1-vs-libaom.html>
  14. Ewout ter Hoeven, «AV1 is ready for prime time: SVT-AV1 beats x265 and libvpx in quality, bitrate and speed», Medium, 2024. <https://medium.com/@ewoutterhoeven/av1-is-ready-for-prime-time-svt-av1-beats-x265-and-libvpx-in-quality-bitrate-and-speed-31c1960703db>
  15. NETINT Technologies, «NETINT Quadra vs. NVIDIA T4 – Benchmarking Hardware Encoding Performance», 2024. <https://netint.com/benchmarking-hardware_encoding-performance/>
  16. Akamai / Linode, «Benchmarking VPUs and GPUs for Media Workloads», 2025. <https://www.akamai.com/blog/developers/benchmarking-vpus-and-gpus-for-media-workloads>
  17. Xiph.org, «Video Test Media [derf's collection]». <https://media.xiph.org/video/derf/>
  18. Mercat, A., Viitanen, M., Vanne, J., «UVG dataset: 50/120fps 4K sequences for video codec analysis and development», ACM MMSys, 2020. <https://dl.acm.org/doi/abs/10.1145/3339825.3394937>
  19. 32blog, «FFmpeg v8 + SVT-AV1: Optimal Encoding Settings for Production», 2025. <https://32blog.com/en/ffmpeg/ffmpeg-v8-svtav1-optimal-settings>
  20. Deep Render, «Investigating a Traditional Codec: SVT-AV1», 2024. <https://deeprender.ai/blog/investigating-traditional-codec-svt-av1>

Строите такую систему?

Подберём параметры кодирования под ваш контент и посчитаем стоимость доставки до старта разработки.