Содержание статьи +
- TL;DR
- Зачем это нужно
- Три измерения, в которых живёт любой энкодер
- Почему «одинаковый VMAF, разный битрейт» – единственное честное сравнение
- Рецепт бенчмарка в восьми шагах
- Rate-distortion кривая – простыми словами
- BD-rate – математика, с числами
- VMAF как ось Y – не только среднее
- Третья ось – скорость, плотность, энергия
- Выбор корпуса, который не лжёт
- Типичные ошибки – восемь способов, которыми бенчмарки лгут
- Рабочий пример, который можно запустить сегодня
- Сравнительная таблица – ландшафт «одинакового VMAF» 2026
- Где здесь Фора Софт
- Ключевые тезисы
- Что читать дальше
- Источники
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
Ошибка бенчмарка, которую мы видим чаще всего, – сравнение двух энкодеров на одном пресете, одном клипе, одном битрейте и объявление победителя. В этом сравнении три неконтролируемые переменные (пресет, клип, целевой битрейт). У каждой подозрительно чистой вендорской презентации спрятана хотя бы одна из них. Хорошая новость – починить это просто, и остаток статьи это рецепт.
Почему «одинаковый VMAF, разный битрейт» – единственное честное сравнение
Представьте, я говорю, что «энкодер A сделал файл 4,0 МБ, а энкодер B – 3,6 МБ» того же 30-секундного клипа. Кто победил? Ответить нельзя, потому что вы не знаете, как они выглядят. Может, файл B размытый, с блокинг-артефактами, а файл A – broadcast-grade. А может, оба нормальные, и B – честный победитель. Числа сами по себе не несут информации о том, что вы хотели бы реально отгружать.
Теперь добавим оценку качества. «Энкодер A: 4,0 МБ при VMAF 93. Энкодер B: 3,6 МБ при VMAF 89.» Теперь ответ есть. Энкодер A победил, потому что VMAF 93 – это broadcast-уровень (яркость, резкость и движение выглядят правильно для живого человека на реальном телевизоре), а VMAF 89 – это уже видимые артефакты сжатия, которые большинство зрителей заметит, а часть пожалуется. Энкодер B сэкономил 10% бит и отдал 4 пункта VMAF – на перцептивной шкале это разрыв между «выглядит как исходник» и «выглядит сжатым». Это не выигрыш; это проигрыш, замаскированный под экономию.
VMAF – это перцептивная оценка качества от 0 до 100, разработанная Netflix вместе с USC и Техасским университетом в Остине, обученная на десятках тысяч человеческих оценок сжатого видео. 2 Это самое близкое к единому числу «как хорошо это выглядит», что есть у видеоиндустрии, и она хорошо коррелирует с тем, что говорят реальные зрители в контролируемом субъективном тесте. 3 VMAF 93 – это канонический broadcast-таргет, который Netflix использует для верхней ступени; 95 – почти неотличимо от исходника на телевизоре 1080p; ниже 80 средний зритель начинает замечать артефакты; ниже 70 – картинка визуально сломана. 4
Как только мы соглашаемся фиксировать VMAF, сравнение сводится к одной из двух эквивалентных форм:
- Одинаковое качество, разный битрейт. Оба энкодера настроены так, чтобы выдать файл при, скажем, VMAF 95. Сравниваем биты.
- Одинаковый битрейт, разное качество. Оба настроены на файл, скажем, 4 Mbps. Сравниваем VMAF.
Обе формы честны. Первая – то, что измеряет BD-rate, и на ней сосредоточена остальная часть статьи: она отвечает на вопрос о CDN-счёте, который реально волнует CFO. Вторая иногда удобнее в живом стриминговом пайплайне, где нельзя перенастраивать rate control на лету.
Нечестные сравнения – одинаковый пресет, дефолтные настройки энкодера, «смотрите, насколько мой файл меньше» – рушатся в тот момент, когда вы посчитаете VMAF на обоих выходах. Любой серьёзный 2026-евалюатор энкодеров начинает с этого правила и никогда его не нарушает.
Рецепт бенчмарка в восьми шагах
Правдоподобный бенчмарк «одинаковый VMAF» помещается на одну страницу и одинаков по форме, сравниваете ли вы два опенсорсных энкодера у себя на ноутбуке или оцениваете восемь ASIC-вендоров для национального вещателя. Вот рецепт.
- Возьмите представительный корпус. От шести до двенадцати клипов, покрывающих контент, который вы реально кодируете. Talking head, спортивный клип, мультфильм, тёмная драматическая сцена, высокодетализированный природный кадр. Каждый клип 10–30 секунд, желательно несжатый YUV 4:2:0, в максимальном разрешении и фреймрейте, которые вы отгружаете.
- Зафиксируйте энкодеры и пресеты. Два–шесть энкодеров, каждый при одном-двух пресетах (например, SVT-AV1 preset 4 и preset 8). Зафиксируйте список – не давайте ему «дрейфовать».
- Возьмите 4–6 рейтовых точек на энкодер × клип. Типичный CRF (Constant Rate Factor) свип – 4 точки в полезном диапазоне битрейта (скажем, CRF 18, 24, 30, 36 для x265). Кто-то предпочитает свипы по фиксированному битрейту; оба варианта рабочие.
- Закодируйте. Прогоните каждое сочетание энкодер × пресет × клип × рейтовая точка. Залогируйте wall-clock время и итоговый битрейт.
- Посчитайте VMAF на каждом выходе. Используйте libvmaf в FFmpeg с официальной моделью и референсным (исходным) клипом.
- Постройте rate-distortion кривую. Для каждого энкодера и клипа – битрейт по оси X (логарифм), VMAF по оси Y. Должны получиться четыре точки, прорисовывающие гладкую вогнутую кривую от низкого качества/низкого битрейта к высокому качеству/высокому битрейту.
- Посчитайте BD-rate между парами энкодеров, которые вам интересны, по стандартной формуле Бьёнтегаарда (мы её разберём ниже). Получите одно число на пару на клип: «энкодер A тратит на X% больше или меньше бит, чем энкодер B, при том же VMAF на этом клипе».
- Агрегируйте. Усредните BD-rate по клипам для общего числа, но обязательно укажите разброс по клипам. На talking-head контенте BD-rate может отличаться от спортивного на 15 процентных пунктов.
Это вся методология. Любой авторитетный бенчмарк – внутренние оценки Netflix, AOMedia Common Test Conditions, ежегодное сравнение кодеков от МГУ, опубликованные тесты Jan Ozer – использует тот или иной вариант этого восьмишагового рецепта. 5 6 Различия живут в корпусе и списке энкодеров, не в форме.
Rate-distortion кривая – простыми словами
Если закодировать один клип четыре раза с четырьмя CRF – скажем, CRF 18, 24, 30, 36 для x265, – получится четыре файла. Файл с CRF 18 будет самым большим и качественным; файл с CRF 36 – самым маленьким и сжатым. Если нанести четыре точки на график с битрейтом по X (логарифм) и VMAF по Y, получится гладкая кривая. Это 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 на этом битрейте на 5 пунктов VMAF лучше.
Оба чтения описывают один и тот же факт: кривая A выше и левее кривой B. BD-rate – просто формальное название для среднего таких чтений по всему диапазону качества.
BD-rate – математика, с числами
BD-rate означает Bjøntegaard Delta rate. Гисле Бьёнтегаард предложил эту метрику в 2001 году на заседании ITU-T Video Coding Experts Group, и сейчас это стандартное сводное число, используемое во всех органах стандартизации кодеков, в академических статьях и в серьёзных вендорских бенчмарках. 7 8 Результат – единый процент, который говорит: «по диапазону качества, который мы тестировали, энкодеру A нужно на X% больше (или меньше) бит, чем энкодеру B, чтобы достичь того же качества».
Алгоритм простыми словами – четыре шага:
- Возьмите рейтовые/качественные точки обоих энкодеров (четыре или больше) на одном клипе.
- Для каждого энкодера протяните гладкую кривую через его точки. Бьёнтегаард использовал кубический полином в логарифмической области битрейта. (Современные реализации используют кусочно-кубический сплайн, потому что он устойчивее на краях, но идея та же.)
- Посчитайте площадь под каждой кривой по диапазону качества, где обе кривые перекрываются.
- 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 для закодированного клипа даёт оценку на кадр. 10-секундный клип на 30 fps даёт 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 fps энкодер на 30 fps – это real-time, 60 fps – двукратный real-time, 3 fps – в десять раз медленнее real-time. По состоянию на 2026 софтовые AV1-энкодеры работают в двух режимах: SVT-AV1 preset 8 даёт примерно 25 fps для 1080p на 16-ядерном CPU (годится для лайв-стриминга), SVT-AV1 preset 4 – примерно 10 fps (годится для премиум-VOD, где стоимость кодирования размазана на миллионы просмотров); 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 на эталонном железе. Sales-deck, который цитирует BD-rate без fps, прячет стоимость; deck, который цитирует fps без BD-rate, прячет качество.
Выбор корпуса, который не лжёт
Бенчмарк на одном клипе – анекдот. Бенчмарк на неправильных клипах – введение в заблуждение. Корпус – то место, где жульничает большинство вендорских бенчмарков: взять клипы, на которых домашний энкодер хорош, пропустить те, на которых ему тяжело, усреднить остальное. Лечится использованием публичного, стандартного корпуса, который узнают в индустрии и который нельзя «затюнить под себя».
Три корпуса покрывают большинство случаев.
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 fps, в 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, single-pass) и какие метрики отчитывать (VMAF, PSNR, runtime). Когда вендор говорит «мы следуем AOMedia CTC», он берёт на себя дисциплину; когда говорит «у нас свой внутренний test set» – уместен скепсис.
Практичный гибрид для внутреннего бенчмарка – шесть клипов: два из Derf (совместимость с легаси), два из UVG (современный 4K-референс), два из вашего собственного каталога (ваш реальный контент). Микс позволяет сопоставлять числа с публичными бенчмарками, продолжая мерить на контенте, который влияет на ваш P&L.
Типичные ошибки – восемь способов, которыми бенчмарки лгут
«Pitfall callout. Большинство опубликованных результатов попадает в одну из этих восьми ловушек. Если на следующей вендорской презентации не удаётся исключить все восемь – попросите сырые данные. 1. Один клип. Single-clip бенчмарки – анекдоты. Всегда шесть и больше. 2. Один пресет. Сравнение быстрого пресета A с медленным B завышает медленный энкодер. Согласуйте пресеты по скорости. 3. Нет контроля качества. Битрейт без VMAF (или PSNR с перцептивной проверкой) бессмыслен. 4. Только арифметическое среднее VMAF. Всегда вместе с гармоническим средним и низким перцентилем, иначе транзиентные артефакты прячутся. 5. Дефолтные настройки энкодера. Большинство энкодеров отгружаются с консервативными дефолтами. Реальный бенчмарк использует тюненые конфиги от вендора или опубликованные референсные настройки (например, --tune=0 --lookahead=120 для SVT-AV1 VOD). 19 6. Неправильная VMAF-модель. Дефолтная vmaf_v0.6.1 рассчитана на 1080p TV с расстояния 3H. Для телефонов – флаг phone_model или dedicated 4K-модель. Несовпадение модели сдвигает VMAF на 3–5 пунктов. 7. Несовпадение rate-control mode. CRF, CBR, capped-CRF, ABR – разные rate-control. CRF против CBR – не like-for-like. 8. Cherry-pick по агрегации. Медиана прячет worst case; только среднее прячет дисперсию. Всегда отчитывайтесь mean и per-clip range.»
Рабочий пример, который можно запустить сегодня
Минимальный 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Бенчмарк по одному клипу занимает около часа wall-clock на современном ноутбуке и даёт заголовочное число, за которое иначе платят консультанту. Расширьте цикл до шести клипов – получите правдоподобный single-resolution бенчмарк; добавьте 4K-свип – покроете большинство операционных потребностей.
Сравнительная таблица – ландшафт «одинакового VMAF» 2026
Числа ниже – типичные цифры, которые встречаются в правдоподобных бенчмарках 2026 на корпусе AOMedia CTC. Это не евангелие – на вашем каталоге каждое число сдвинется на несколько процентных пунктов, – но это правильный порядок величины для встречи с вендором. 5 14 13 20
| Энкодер | Типичный пресет | BD-rate к x264 medium (меньше = лучше) | 1080p fps на 16-core CPU | Когда использовать |
|---|---|---|---|---|
| x264 medium | medium | 0% (референс) | ~120 | Универсальная совместимость, legacy-устройства |
| x265 medium | medium | −30…−35% | ~30 | Smart TV и OTT сегодня |
| x265 veryslow | veryslow | −40…−45% | ~5 | Премиум-VOD, где CPU амортизируется |
| libvpx-vp9 | best, cpu-used 2 | −25…−30% | ~5 | YouTube-style web delivery |
| SVT-AV1 preset 8 | preset 8 | −40…−45% | ~25 | Live AV1, real-time стриминг |
| SVT-AV1 preset 4 | preset 4 | −55…−60% | ~10 | Premium AV1 VOD, мейнстрим 2026 |
| libaom cpu-used 4 | --cpu-used 4 | −55…−60% | ~3 | Reference AV1 quality, медленно |
| vvenc medium (H.266) | medium | −55…−65% | ~2 | Future-facing VOD, sparse player support |
Формат таблицы – тот, в котором рекомендуем отчитываться. Каждая ячейка отвечает на один и тот же вопрос – «во что обходится этот энкодер (BD-rate к референсу) и как быстро он работает», – и ячейки сопоставимы между строками, потому что заголовки колонок зафиксированы.
Где здесь Фора Софт
Мы строим и эксплуатируем кодинговые пайплайны для видеоконференций, OTT, e-learning, телемедицины и видеонаблюдения с 2005 года. На 239+ отгруженных проектах паттерн повторяется: команда выбирает энкодер в первый год по вендорскому бенчмарку, никогда его не перезапускает и платит 25–50% премию по полосе пропускания весь оставшийся срок продукта. Каждый пайплайн от Фора Софт едет с suite-ом бенчмарков «одинаковый VMAF», который квартально запускается на каталоге заказчика; стоимость – несколько сотен долларов облачного compute за прогон, а закрытые таким образом семизначные годовые CDN-счета у нас на руках. Мы также готовы прогнать тот же бенчмарк для команды, которая построила свой пайплайн и хочет независимое чтение.
Ключевые тезисы
- Сравнивать энкодеры по размеру файла – заблуждение; сначала зафиксируйте перцептивное качество через VMAF.
- BD-rate – единое число, описывающее разрыв по битрейту между двумя энкодерами при согласованном VMAF.
- Отрицательный BD-rate – хорошо (меньше бит при том же качестве); положительный – плохо. Конвенция знака разнится – всегда проверяйте.
- Отчитывайтесь по гармоническому среднему VMAF и 1-му перцентилю, не только по арифметическому, чтобы ловить транзиентные артефакты.
- Скорость (закодированные fps, плотность, ватт/стрим) идёт рядом с BD-rate, а не вместо него.
- Используйте публичный, стандартный корпус (UVG, Derf, AOMedia CTC) плюс свои клипы; шесть клипов – минимум.
Что читать дальше
- Объективные метрики качества: PSNR, SSIM, MS-SSIM, VMAF
- Rate control: CBR, VBR, CRF, ABR, capped CRF
- Сравнительная таблица кодеков: MPEG-2, H.264, H.265, VP9, AV1, VVC
Источники
- 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>
- 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>
- Netflix, «VMAF: Perceptual video quality assessment based on multi-method fusion», GitHub, 2024. <https://github.com/Netflix/vmaf>
- Jan Ozer, «Identifying the Top Rung of a Bitrate Ladder», OTTVerse, 2021. <https://ottverse.com/top-rung-of-encoding-bitrate-ladder-abr-video-streaming/>
- AOMedia, «AOM Common Test Conditions v5.0», CWG-D103, 2024. <https://aomedia.org/docs/CWG-D103o_AV2_CTC_v5.pdf>
- Moscow State University Video Group, «MSU Video Codecs Comparison 2025», 2025. <https://compression.ru/video/codec_comparison/2025/>
- 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>
- Krishna Rao Vijayanagar, «BD-Rate & BD-PSNR: Calculation and Interpretation», OTTVerse, 2022. <https://ottverse.com/what-is-bd-rate-bd-psnr-calculation-interpretation/>
- Jan Ozer, «Compute Your Own Bjontegaard Functions (BD-Rate)», Streaming Learning Center, 2023. <https://streaminglearningcenter.com/encoding/compute-bd-rate-functions.html>
- 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>
- 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>
- 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>
- Jan Ozer, «SVT-AV1 vs. LibAOM», Streaming Learning Center, 2024. <https://streaminglearningcenter.com/encoding/svt-av1-vs-libaom.html>
- 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>
- NETINT Technologies, «NETINT Quadra vs. NVIDIA T4 – Benchmarking Hardware Encoding Performance», 2024. <https://netint.com/benchmarking-hardware_encoding-performance/>
- Akamai / Linode, «Benchmarking VPUs and GPUs for Media Workloads», 2025. <https://www.akamai.com/blog/developers/benchmarking-vpus-and-gpus-for-media-workloads>
- Xiph.org, «Video Test Media [derf's collection]». <https://media.xiph.org/video/derf/>
- 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>
- 32blog, «FFmpeg v8 + SVT-AV1: Optimal Encoding Settings for Production», 2025. <https://32blog.com/en/ffmpeg/ffmpeg-v8-svtav1-optimal-settings>
- Deep Render, «Investigating a Traditional Codec: SVT-AV1», 2024. <https://deeprender.ai/blog/investigating-traditional-codec-svt-av1>