Содержание статьи +
- 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. А может, оба выглядят нормально, и тогда 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 для национального вещателя. Вот рецепт.
- Возьмите представительный корпус. От шести до двенадцати клипов, охватывающих типы контента, которые вы реально кодируете: интервью в кадре (talking head), спортивный клип, мультфильм, тёмная драматическая сцена, высокодетализированный природный кадр. Каждый клип – 10–30 секунд, желательно в несжатом формате YUV 4:2:0, максимального разрешения и частоты кадров, которые вы используете при отдаче.
- Зафиксируйте энкодеры и пресеты. Выберите от двух до шести энкодеров, каждый с одним–двумя пресетами (например, SVT-AV1 с preset 4 и preset 8). Зафиксируйте этот список – не допускайте его изменения.
- Возьмите 4–6 точек по битрейту на каждую комбинацию энкодер × клип. Типичный CRF-свип – 4 точки в полезном диапазоне битрейта (например, CRF 18, 24, 30, 36 для x265). Некоторые предпочитают свипы по фиксированному битрейту – оба подхода работают.
- Закодируйте. Прогоните все комбинации: энкодер × пресет × клип × точка по битрейту. Зафиксируйте время выполнения (wall-clock time) и итоговый битрейт.
- Посчитайте VMAF для каждого результата. Используйте libvmaf в FFmpeg с официальной моделью и исходным (референсным) клипом.
- Постройте кривую rate-distortion. Для каждого энкодера и клипа отложите битрейт по оси X (в логарифмическом масштабе), VMAF – по оси Y. Должны получиться четыре точки, образующие плавную вогнутую кривую, идущую от низкого качества и низкого битрейта к высокому качеству и высокому битрейту.
- Посчитайте BD-rate между интересующими вас парами энкодеров по стандартной формуле Бьёнтегаарда (рассмотрим её ниже). Получите одно значение на пару энкодеров и на клип: «энкодер A использует на X% больше или меньше бит, чем энкодер B, при одинаковом VMAF на этом клипе».
- Агрегируйте результаты. Усредните BD-rate по всем клипам, чтобы получить общее значение, но обязательно укажите разброс между клипами. Например, BD-значение на материале с интервью может отличаться от спортивного на 15 процентных пунктов.
Это вся методология. Любой авторитетный бенчмарк – внутренние оценки Netflix, AOMedia Common Test Conditions, ежегодное сравнение кодеков от МГУ, опубликованные тесты Jan Ozer – использует тот или иной вариант этого восьмиэтапного подхода. 5 6 Различия заключаются в наборе тестовых видео и списке энкодеров, а не в самой структуре.
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-скорость – это просто формальное название для среднего значения таких сравнений по всему диапазону качества.
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 для закодированного клипа даёт оценку по каждому кадру. Десятисекундный клип при частоте 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, скрывает качество.
Выбор корпуса, который не лжёт
Бенчмарк на одном клипе – это анекдот. Бенчмарк на некачественных клипах – введение в заблуждение. Корпус – вот где большинство вендорских бенчмарков обманывают: берут клипы, на которых домашний энкодер работает хорошо, игнорируют те, где ему тяжело, и усредняют результаты. Проблема решается использованием публичного, стандартного корпуса, который признан в индустрии и под который нельзя «подогнать» тест.
Три корпуса охватывают большинство случаев.
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 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 года. На 250+ реализованных проектах наблюдается один и тот же паттерн: команда выбирает энкодер в первый год на основе бенчмарков от вендора, больше его не пересматривает и платит премию в 25–50% за пропускную способность на протяжении всего жизненного цикла продукта. Каждый пайплайн от Фора Софт поставляется с набором бенчмарков «одинаковый VMAF», который запускается ежеквартально на каталоге клиента; стоимость одного прогноза – несколько сотен долларов облачных вычислений, а экономия на семизначных годовых счетах за CDN остаётся у нас. Мы также готовы провести аналогичный бенчмарк для сторонних команд, построивших свой пайплайн, и предоставить независимую оценку.
Ключевые тезисы
- Сравнивать энкодеры по размеру файла – ошибка; сначала оцените перцептивное качество с помощью VMAF.
- BD-rate – это одно число, отражающее разницу в битрейте между двумя энкодерами при одинаковом уровне VMAF.
- Отрицательный BD-rate – хорошо (меньше бит при том же качестве), положительный – плохо. Конвенция знаков может различаться – всегда проверяйте.
- Отчитывайтесь по гармоническому среднему VMAF и первому перцентилю, а не только по арифметическому – так легче выявлять транзиентные артефакты.
- Производительность (fps, плотность, ватт/стрим) – важный показатель, но она дополняет BD-rate, а не заменяет его.
- Используйте общедоступные стандартизированные наборы (UVG, Derf, AOMedia CTC) и свои собственные клипы; минимум – шесть видео.
Что читать дальше
- Объективные метрики качества: PSNR, SSIM, MS-SSIM, VMAF
- Контроль битрейта: CBR, VBR, CRF, ABR, capped CRF
- Сравнительная таблица кодеков: MPEG-2, H.264, H.265, VP9, AV1, VVC
«Примечание: В ссылках сохранены оригинальные URL, как указано в правиле. Если требуется корректировка URL под русский язык – это выходит за рамки задачи.»
Источники
- 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>