Можно ли чем-то заменить NVIDIA? Если уж не для нейросетей, то для транскодирования видео, которое в медиапроизводстве занимает очень значительное место и требует больших вычислительных ресурсов. 

В этой статье попытаемся выяснить, есть ли у аппаратной платформы NVIDIA альтернативы в задачах обработки и кодирования видео, и можно ли её заменить чем-то более доступным во всех смыслах: и по возможности закупки на рынке РФ, и по цене.

Меня зовут Дмитрий Митяев, я почти 30 лет в IT, работал в области авиастроения, занимался анализом качества видеокодирования в NVIDIA, продолжаю интересоваться этим и сейчас — в RUTUBE TECH. В этой статье покажу результаты сравнения качества кодирования видео на различных аппаратных платформах: CPU, GPU NVIDIA, Intel, Mac и Rockchip. 

Этот анализ будет полезен, если вы, как и мы, исследуете, на что можно заменить NVIDIA, чтобы оптимизировать затраты на железо и нивелировать риски, связанные с недоступностью определенных карт. Если такая задача вам пока не актуальна, то, возможно, вам будет любопытно узнать о метриках сравнения относительно субъективного параметра «качество» видео и способах тестирования кодеков. Пригодится для стримингов, кинотеатров, видеохостингов или домашней лаборатории. 

Основные понятия и теоретическая база

Под процессом кодирования видео подразумевается сжатие видеопотока с определёнными параметрами. Например, для того, чтобы сделать архивное видео используются одни параметры — можно сжимать подольше, но с большим качеством. Чтобы транслировать игру, нужна меньшая нагрузка на систему, быстрое кодирование и допустимый ущерб качеству. В зависимости от используемых параметров результирующее видео может отличаться по объёму в десятки раз.

Кодек — это реализация спецификации алгоритма сжатия, а также, что немаловажно, спецификации алгоритма декодирования, то есть раскодирования сжатого потока в формат, подходящий для отображения. Разные реализации одного и того же стандарта, вообще говоря, при декодировании должны давать бинарно одинаковые кадры.

Основные стандарты и их реализации:

Стандарт

Реализации (библиотеки)

H.264

x264, NVENC H264, RKMPP H264, QSV, Videotoolbox

HEVC

x265, NVENC HEVC, RKMPP HEVC, QSV HEVC

VP8/VP9

libvpx

AV1

libaom, svtav1, Rav1e, Dav1d (декодирование)

H.266

Uvg266, Fraunhofer VVEnc, x266

В рамках данного исследования мы ограничимся H.264 — достаточно старым, но по-прежнему популярным стандартом, который занимает значительную часть рынка и поддерживается максимальным количеством устройств.

Библиотека может быть написана как только для процессора, так и под разнообразное железо: видеокарты, специализированные карты FPGA (программируемые матрицы), ASIC (специализированные микросхемы). Например, в аппаратных комплексах видеофиксации могут быть свои реализации, оптимизированные конкретно под задачи хранения видео с камер наблюдения.

Библиотеки под процессоры обычно выигрывают по качеству кодирования, так как имеют больше степеней свободы и возможностей оптимизации. При неограниченном бюджете и наличии множества серверов, которые можно занять видеокодированием, в общем случае по качеству лучшим вариантом будет libx264. Однако аппаратные реализации как правило дают лучшие результаты по соотношению цена-качество, плотности упаковки в датацентре, энергопотреблении. Какие из них будут выгоднее в каком случае, мы как раз и хотим выяснить. 

В сравнении мы не рассматриваем решения на базе ASIC и FPGA (Netint и Xilinx) по причине их практической недоступности и относительно высокой стоимости. То же самое касается Apple M4 — на сегодняшний день его стоимость приближается к картам NVIDIA, хотя и есть ожидания, что по качеству картинки новый кодек будет лучше, чем M2, и скорее всего в будущем мы сделаем новое исследование и опубликуем его результаты.

Метрики качества

Чтобы сравнить разные способы кодирования, нам нужно оценить качество перекодированного видео, и сопоставить затраченные на это ресурсы: производительность, цену самого оборудования, размер видео и т.д. Но как минимум, нужна методика оценки качества видео. 

Методы оценки качества видео делятся на методы с использованием оригинала и без. В первом случае у нас есть исходное видео, которое мы сжимали с определёнными параметрами, и мы можем сравнивать с ним полученный результат. Во втором — просто набор готовых кадров, качество которых необходимо оценить по каким-то эвристическим методикам. Последние сейчас в основном реализуются с помощью моделей машинного обучения, самые заметные из них: NR-VMAF, NIQE, PIQE, BRISQUE. Методы без оригинала в рамках данной статьи мы рассматривать не будем.

Среди методов с оригиналом самое большое распространение получили: VMAF, PSNR, SSIM и их производные, созданные под решение конкретных проблем присущих стандартным реализациям. Реже используется CIEDE2000 — цветовая дистанция между сравниваемыми кадрами. В рамках исследования использовались различные методы оценки качества, как правило результаты валидировались по нескольким метрикам. Рассмотрим, каждую из них.

  • PSNR — пиковое соотношение сигнал/шум. Размерность — дБ.

PSNR=20 \cdot log_{10} \frac{MAX}{\sqrt{MSE}},

MSE=\frac{1}{mn}\sum_{i=0}^{m-1}\sum_{j=0}^{n-1}[I(i,j)-K(i,j)]^2,

где MAX — максимальное значение уровня сигнала. В случае 8-битного кодирования видео MAX= 2^8–1.

PSNR показывает, какое количество шума внесено кодеком при сжатии видео. Фактически представляет собой среднеквадратическую ошибку: берутся два кадра (из оригинала и получившегося видео) и попиксельно вычитается одно значение из другого, возводится в квадрат и делится на количество пикселей в кадре. Конечно, берутся значения по каналам. В зависимости от формата кодирования пикселя при усреднении используются веса по каналам. Например, для yuv444 у каждого канала вес –1, так как количество кодируемой информации в каждом канале (плоскости, если говорить о структуре хранения информации по кадру) одинаковое — используется одинаковое количество бит. А вот для yuv420 под яркостный канал отводится большее количество бит и вес при усреднении больше, чем у каналов цветности (подробнее с кодированием пикселей можно ознакомится, например, в этой статье на википедии).

Например, так выглядит фрагмент кода для подсчёта среднеквадратической ошибки по плоскостям в реализации фильтра PSNR в FFMPEG:

...
    for (int c = 0; c < s->nb_components; c++)
        mse += comp_mse[c] * s->planeweight[c];
  • SSIM — показывает, насколько структурно один кадр близок к другому.

Фактически это корреляция между двумя случайными величинами (между средними значениями окон сравниваемых кадров).

SSIM(x,y)=\frac{(2\mu_x \mu_y + c_1)(2 \sigma_{xy}+c_2)}{(\mu_x^2 + \mu_y^2 + c_1)( \sigma_x^2+\sigma_y^2+c_2)},

\mu_x, \mu_y — средние значения окон X и Y,

\sigma_x^2, \sigma_y^2 — дисперсия значений окон X и Y,

\sigma_{xy} — ковариационный момент значений окон X и Y,

c_1=(0,01MAX)^2, c_2=(0,03MAX)^2 — коэффициенты для балансирования отношения.

  • VMAF — метрика качества, разработанная Netflix.

Основная цель VMAF — оценить качество видео максимально приближенно к субъективной, человеческой оценке. Она состоит из трёх компонент:

  •  Visual Information Fidelity (VIF) — степень искажения;

  •  Detail Loss Metric (DLM) — степень потери деталей;

  •  Mean Co-Located Pixel Difference (MCPD) — степень разницы между кадрами.

Выход из трёх компонент загоняется в регрессионную модель. В поставке входят уже обученные модели для разных размеров кадров. При необходимости можно обучить модель на своих видео.

Работает гораздо дольше, чем более простые с вычислительной точки зрения PSNR или SSIM, но есть реализация на GPU.

Сравнение на диапазоне битрейтов — RD-Curves

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

Предположим, что мы уже провели кодирование исходного видео  в разные битрейты с помощью программной реализации x264 и одной из аппаратных платформ и нарисовали две кривые, проходящие через точки, полученные после подсчёта качества с помощью VMAF.

Красная кривая — кодирование с помощью x264, зелёная — аппаратная реализация H.264. Более высокая кривая означает, что кодеку необходимо больше битрейта для того же качества видео
Красная кривая — кодирование с помощью x264, зелёная — аппаратная реализация H.264. Более высокая кривая означает, что кодеку необходимо больше битрейта для того же качества видео

Если вы уже работали с кривыми RD, то скорее всего обратили внимание, что график перевёрнут: по оси X — качество, по оси Y — битрейт. Обычно графики строят относительно битрейта (по оси X) и смотрят на качество при фиксированном битрейте. Однако у нас обратная задача: определить, какое количество битрейта тратит тот или кодек для кодирования с определённым качеством. Чтобы не поворачивать голову и не подвергать шейные позвонки риску, перевернём сам график. На нём более высокая кривая означает, что кодеку необходимо больше битрейта для получения того же качества.

Визуальная оценка — это хорошо и наглядно. Но что можно сделать, чтобы получить объективные числа для сравнения? Например, первое, что приходит на ум — значения на границах измеряемого диапазона качества. Это даст представление о разнице реализаций в самом худшем качестве и в самом лучшем. Значения на границах: 20,6% и 25,9%. Но, пожалуй, объективного представления о разнице два числа не дадут — на всём диапазоне могут быть совсем иные соотношения. Посмотрим ближе к середине: при значении VMAF = 65 разница между двумя способами кодирования составляет 29,4%. при значении 80 — 30,1%. И так далее — можно до бесконечности добавлять отношения на интересующих точках.

Чтобы перевести этот набор значений в разных точках в один показатель, используем подход Bjontegaard Delta Bitrate (BD-BR), предложенный в 2001 году норвежским учёным Йисле Бьонтегором (Gisle Bjontegaard).

Метод Бьонтегора наглядно: область, обозначенная на графике оранжевым говорит о разнице в качестве, количественно — это отношение площадей под кривыми
Метод Бьонтегора наглядно: область, обозначенная на графике оранжевым говорит о разнице в качестве, количественно — это отношение площадей под кривыми

По сути это отношение площадей под этими кривыми, рассчитывается следующим образом:

  • Для каждого набора точек конкретного кодека используем полином для получения функции, описывающей поведение этой кривой.

  • Интегрируем на общем отрезке, т.е. получаем площадь под каждой кривой.

  • Вычисляем отношение между этими площадями.

Метод даёт ответ на вопрос, во сколько раз битрейт одного кодека должен отличается от другого при кодировании с одинаковым качеством. Таким образом, если, например, в маркетинговом проспекте написано, что AV1 на 30% лучше, чем HEVC, то это значит, что кодеку AV1 нужно на 30% меньше битрейта для достижения такого же качества (оценённого по какой-либо методологии).

В этом примере мы использовали метрику VMAF, но, очевидно, что под капотом может быть любая другая метрика, которую мы сочтём показательной для нашей задачи.

Метод Бьонтегора не лишён недостатков. Он хорошо работает, когда функция зависимости битрейта от качества монотонно возрастает. Если же на графике много выбросов, то метод не даст адекватных результатов. Чтобы с этим справиться, можно дополнительно поработать с данными. Например, команда лаборатории компьютерной графики и мультимедиа при факультете ВМК МГУ (проект compression.ru) использует метод BSQ-Rate. Однако в целом вопрос, нужно ли «лечить» некорректные данные, на мой взгляд, дискуссионный. Если кодек при увеличении битрейта не даёт возрастающие величины качества, то насколько можно вообще оценить его качество? Ведь он фактически работает непредсказуемо.

Условия измерений

Для сравнительного анализа использовались следующие платформы:

  • libx264 (CPU) в качестве эталона;

  • Orange Pi 5 Plus, Rockchip RK3588, кодек RKMPP, цена ≈ 12 000 ₽;

  • Intel N100, кодек QSV, цена ≈ 18 000 ₽; 

  • Mac Mini, кодек Videotoolbox, цена ≈ 30 000 ₽;

  • NVIDIA RTX A4000, кодек NVENC, цена ≈ 120 000 ₽.

В качестве тестовых образцов мы выбрали 21 видео, в которых присутствуют разные особенности, например, большое количество деталей, быстродвижущиеся объекты, контрастные или наоборот очень близкие цвета и т. д. Исходные видео в разрешении 4K перекодировались в 8 меньших размеров кадров по 10 вариантов битрейтов, равномерно распределённых внутри характерного для данного разрешения отрезка.

Размер кадра

Битрейты

2160p

[1 Мбит/с, ..., 13 Мбит/с]

1140p

[671 кбит/с, ..., 8,3 Мбит/с]

1080p

[461 кбит/с, ..., 5,7 Мбит/с]

720p

[260 кбит/с, ..., 3,2 Мбит/с]

480p

[148 кбит/с, ..., 1,8 Мбит/с]

360p

[95 кбит/с, ..., 1,2 Мбит/с]

232p

[49 кбит/с, ..., 611 кбит/с]

144p

[27 кбит/с, ..., 343 кбит/с]

Сделано это для того, чтобы:

  • получить более полную картину распределения качества по диапазону;

  • захватить разные битрейты, которые соответствуют разным условиям просмотра, режимам контроля битрейта и пропускной способности сети в стриминге.

Параметры кодирования

Результат кодирования может отличаться в зависимости от параметров. Так как наш тест независимый и мы хотим узнать максимальные возможности каждой платформы, подбирались такие настройки кодеков, которые были бы оптимальны на тестовом наборе. Использовался FFMPEG версии 7.1.1. (кроме QSV), остальные параметры ниже (жирным выделено основное, на что стоит обратить внимание):

  • libx264: -c:v libx264 -preset fast -g 50 -b:v {BITRATE} -bufsize {BITRATE/FRAMERATE} -maxrate {BITRATE} -minrate {BITRATE} -x264opts no-sliced-threads:no-psy=1:aq-mode=0 -tune zerolatency -profile:v {PROFILE} -level:v {LEVEL} -vsync passthrough

  • NVENC: -c:v h264_nvenc -no-scenecut 1 -g 50 -preset p4 -tune ll -b:v {BITRATE} -profile:v {PROFILE} -level:v {LEVEL} -vsync passthrough

  • RKMPP: -c:v h264_rkmpp -g 50 -b:v {BITRATE} -bufsize {BITRATE}*1.5 -maxrate {BITRATE}*1.3 -level:v {LEVEL} -profile:v {PROFILE} -rc_mode VBR -vsync passthrough

  • QSV (кодирование с помощью утилиты в поставке к SDK): h264 -b {BITRATE} -f {FRAMERATE} -u veryslow -hw

  • Videotoolbox (нет ручек, за которые можно было бы подёргать для настройки кодека, использовались только параметры для установки битрейта): -c:v h264_videotoolbox -g 50 -b:v {BITRATE} -profile:v {PROFILE} -level:v {LEVEL} -vsync passthrough

Пресеты для x264 и NVENC были выбраны как «средние» по качеству/скорости. Для QSV был выбран самый медленный и самый качественный veryslow, так как только он смог как-то тягаться с остальными.

Хочу обратить внимание на параметр -vsync passthrough (ныне заменённый на -fps_mode passthrough). Параметр важен для последовательности кадров на выходе кодека. Алгоритм кодека может решать пропускать или добавлять кадры — в таких местах метрики качества будут проседать. Параметр заставляет кодек использовать ту же последовательность кадров на выходе, что и на входе.

Результаты сравнения

Сначала посмотрим на усреднённые результаты сравнения разных платформ кодирования по метрике VMAF, а далее рассмотрим частные случаи и углубимся в детали. 

В таблице ниже представлено сравнение кодеков с эталонным libx264 для размеров кадров 360p, 1080p и 2160p. Значения приведены относительно libx264, т. е. отрицательное значение в таблице означает, что для получения такого же качества сравниваемому кодеку нужно на столько процентов больше битрейта. Положительное значение — кодек справился лучше libx264 и сэкономил x% битрейта. 

BD-BR VMAF 360p

BD-BR VMAF 1080p

BD-BR VMAF 4K

NVENC

-12.9%

-3.7%

-1.9%

RKMPP

-19.9%

-18.4%

-15.3%

QSV

-20.0%

-23.4%

-21.2%

VideoToolbox

-30.3%

-28.4%

-18.0%

Если не вдаваться в частности отдельных сценариев, то кодеки расположились в таком порядке по увеличению битрейта относительно libx264: NVENC, RKMPP, QSV, VideoToolbox. Ожидаемо, намного более дорогие NVIDIA выигрывают по качеству кодирования.

Теперь рассмотрим детальнее отдельные характерные сцены и то, насколько кодеки с ними справились. 

Пример 1: смена относительно статичных сцен с движением посередине.

Кодек

BD-BR VMAF (libx264) - 360p

NVENC

-11%

RKMPP

-29%

QSV

-23%

VideoToolbox

-50%

В принципе характерная картина для данного исследования: лучше других выглядит NVENC, хуже — VideoToolbox на Mac. Ниже графики сравнения, где кривая ниже — лучше (требуется меньше битрейта для того же качества).

Пример 2: примитивная графика, плоские цвета. Это, пожалуй, самый простой вариант для кодеков и все они справились примерно одинаково. 

Кодек

BD-BR VMAF (libx264) - 360p

NVENC

-2.31%

RKMPP

-17.50%

QSV

-5.74%

VideoToolbox

-10.73%

NVENC опять лучше других, хуже всех — RKMPP.

Пример 3: практически статическая картина, но с большим количеством деталей.

Кодек

BD-BR VMAF (libx264) - 360p

NVENC

-21.48%

RKMPP

8.27%

QSV

-43.85%

VideoToolbox

-57.37%

Здесь RKMPP обогнал даже libx264, VideoToolbox в аутсайдерах.

Пример 4: много размытых деталей, градиенты. 

Очень часто на таких сценах, а также на водной ряби у кодека NVIDIA появляется много артефактов и пикселизация. Что мы и видим в данном тесте. 

Кодек

BD-BR VMAF (libx264) - 360p

NVENC

-33.29%

RKMPP

-21.03%

QSV

-8.10%

VideoToolbox

-14.48%

Пример 5: как и в примере 4 тут дым, но видео с относительно статичным фоном. На этот раз сравниваем кодирование для 2160p. 

Кодек

BD-BR VMAF (libx264) - 2160p

NVENC

-24.22%

RKMPP

-23.26%

QSV

-38.90%

VideoToolbox

-57.10%

NVENC и RKMPP справляются примерно одинаково, VideoToolbox — хуже всех и с приличным отставанием. 

Пример 6: статичный фон и много движения в центре кадра, разрешение 2160p.

Кодек

BD-BR VMAF (libx264) - 2160p

NVENC

5.65%

RKMPP

-11.10%

QSV

-17.65%

VideoToolbox

-1.23%

NVIDIA даже лучше libx264, QSV — в аутсайдерах. Интересно, что VideoToolbox на Mac в этом случае тоже справился хорошо.

Пример 7: большая область с подвижными объектами, 1080p.

Кодек

BD-BR VMAF (libx264) - 1080p

NVENC

2.56%

RKMPP

-35.32%

QSV

-11.17%

VideoToolbox

-19.06%

NVIDIA как и в прошлом примере справляется даже лучше, чем софтверный кодек. RKMPP — не справляется.

Пример 8: много деталей, много движения — сложная сцена для всех кодеков.

Кодек

BD-BR VMAF (libx264) - 1080p

NVENC

14.03%

RKMPP

-18.58%

QSV

-12.99%

VideoToolBox

-12.49%

NVENC опять на высоте. Остальные кодеки ведут себя примерно одинаково и требуют больше битрейта для того же качества. Пологая кривая на графике говорит о том, что на более низких битрейтах у всех будет с качеством не очень.

Энергопотребление

Для оценки отношения производительности и энергопотребления рассмотрим только крайние случаи: CPU, GPU и SoC. 

Для корректного замера производительности кодирование запускалось в несколько потоков, чтобы загрузить все кодеры. Количество параллельных потоков подбиралось так, чтобы общая производительность была максимальной.

Ниже диаграмма с относительным энергопотреблением, рассчитанным на произведённый кадр. 

Ожидаемо система на процессоре потребляет гораздо больше энергии для сжатия такого же количества кадров, чем GPU и SoC (System on Chip). Меньше всего энергии тратит Rockchip — пиковая нагрузка составила порядка 5 Вт (только кодирование, т.е. никаких других задач на процессоре не выполнялось), энергопотребление при полной нагрузке не превышает 20Вт. Интересно отметить, что по производительности Rockchip достаточно близок к A4000.

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

Итого

Верхнеуровневые выводы нашего исследования следующие.

Кодек

Преимущества

Недостатки

libx264

Почти всегда качество выше

Высокое энергопотребление

NVENC

Хорошо справляется с большинством сцен

Есть проблемы с размытыми объектами, цена

RKMPP

Стоимость,

скорость

Качество ниже

QSV

Стоимость

Интеграция с FFMPEG

VideoToolbox

Качество

Что и когда выбрать:

  • Libx264 — если у вас много серверов и их некуда приспособить, либо есть жёсткое требование вытянуть максимум качества при ограниченном битрейте. 

  • NVENC — лидер в реализации кодека в железе, сбалансированное решение по качеству и быстродействию.

  • RKMPP — самый дешёвый и самый энергосберегающий вариант. Имеет смысл использовать, если нет жёстких требований к качеству картинки или сцены в основном статичны. 

  • QSV — близок по качеству к RKMPP, но дороже и медленнее.

  • VideoToolbox — самый дорогой из альтернатив и в то же время даёт самое низкое качество. Можно использовать, если он у вас уже есть для других целей и качество картинки не очень важно.

Представленные результаты хоть и не являются полновесными, но достаточно хорошо отражают общее поведение рассмотренных кодеков. За кадром остался интересный вариант с Apple M4, который ожидается, что должен показать более высокое качество, чем его предшественник. Также не хотелось бы сбрасывать со счетов аппаратные реализации вроде NetInt или Xilinx. 

И, конечно, крайне интересно будет взглянуть на результаты работы разных реализаций AV1 и H.266. Единичные тесты качества последнего меня лично сильно удивили и есть интерес провести полноценный анализ — подписывайтесь на этот блог и канал, чтобы узнать о результатах будущих исследований.

В канале Смотри за IT рассказываем о создании медиасервисов, инженерных тонкостях, продуктовых находках и полезных мероприятиях, делимся видео выступлений и кадрами из жизни команд Цифровых активов «Газпром-Медиа Холдинга» таких, как RUTUBE, PREMIER, Yappy.

Комментарии (4)


  1. Landgraph
    12.11.2025 17:00

    Какие-то сомнительные результаты. Навскидку, битрейт зависит от количества I-, P-, B- кадров. А об этом я что-то не вижу инфу. Т.е. для получения сравнимого результата как минимум нужно выровняться по параметрам полученного битстрима.

    Насколько я понимаю - Вы просто сравнили дефолтные настройки для сферической задачи в вакууме. У того же QSV (он же MediaSDK, он же oneVPL) есть вагон разных крутилок и тот же lookahead, например.

    Да и почему статья называется «…транскодирование», а речь про энкод? С транскодированием все гораздо интереснее, когда нагружаются и аппаратные декодеры и нужно правильный мультитрединговый пайплайн строить для получения максимального результата.


    1. vmetrix Автор
      12.11.2025 17:00

      Навскидку, битрейт зависит от количества I-, P-, B- кадров

      Вы правы. Такая зависимость есть. Но я бы детализировал. Например, при наличии возможности использовать B-frame'ы можно снизить битрейт с фиксированным качеством.

      В RKMPP нет реализации B-frame'ов - и сравнивать его с libx264 или NVENC с настройками, которые их используют бессмысленно. Очевидно, что выигрыш у последних будет 50%-70% по битрейту. Т.е. исследование здесь про LL режим, стриминг. Возможно, я не акцентировал на этом внимание.

      В приведённых параметрах кодирования как раз можно увидеть что было сделано, чтобы можно было сравнить результаты кодирования. По наличию I и P: I каждые 50 кадров, всё остальное - P.

      есть вагон разных крутилок и тот же lookahead

      Крутилки-то есть, но предсказуемо работать они напрочь отказывались. Поделитесь рецептом какие параметры QSV на диапазоне целевых битрейтов будут оптимальными - я пересоберу данные.

      lookahead неприменим по озвученной выше причине, он не для стриминга.

      Про транскодирование. Оценка качества кодирования - это всегда часть с кодированием. Декод не влияет на качество. Для этого даже специально проверена корректная работа декодеров для всех реализаций. И статья названа так, потому что она затрагивает и декод в этой части тоже.

      Согласен, что строить правильные пайплайны важно. Но до постройки необходимо знать, что будет получено в плане качества на выходе.

      Поясню сразу и по второму комментарию

      таблица поддержки энкодеров неполная

      Верно. Задачи полного перечисления всего, что поддерживается не было. Это пример во вводной части про стандарты и их реализации.


      1. Landgraph
        12.11.2025 17:00

        Базой были сэмплы: sample_encode в Вашем случае. А там уж и настроить все остальное можно. Кстати, а куда пропала интеграция в ффмпег? Раньше была 100%. Но я бы не рекомендовал :)

        В сэмпле можно порулить, например, разными контролами битрейта, на любой вкус: -vbr, -icq, -qvbr, -avbr… дока в помощь: https://github.com/Intel-Media-SDK/MediaSDK/blob/master/doc/samples/readme-encode_linux.md А вообще главное не забыть включить lowpower, который про аппаратное ускорение, тк были в тч софтовые реализации алгоритмов.

        Кстати в командлайнах у Вас такое ощущение, что для одних - vbr, для других - cbr

        Далее полученные стримы надо чем-то открыть и убедиться, что всё одинаково в плане фреймов. Рекомендую VQ Analyzer для целей анализа стрима. Я бы не сильно доверял «пожеланиям» настроек тк они могут быть перезаписаны.

        И после подтверждения, что результаты совпадают - уже сравнивать качество. И кмк лучше сравнивать одинаковые фреймы, ессно. Ну те на таком-то видео I-фреймы заняли Х кбайт и дали такую-то RD-curve, P-фреймы…

        Отметать lookahead «из-за стриминга», при этом не рассматривая транскодирование - крайне странно, тк на плохой синхронизации или неожиданном копировании памяти можно потерять куда больше. Да и вообще - это какому такому стримингу, не считая стриминга игр по локальной сети, есть дело до задержки даже в секунду?.. Ну опять же, тогда надо добавить в сравнение latency на фрейм. Я, конечно, дико извиняюсь, но если энкодер работает, например, в два раза дольше, и при этом результат всего на 10% лучше - вопрос ещё что важнее и корректность соавнения.

        А, кстати, о каком фпс вообще идёт речь? Между, например, 25 и 60 фпс - пропасть…


  1. Landgraph
    12.11.2025 17:00

    И кстати таблица поддержки энкодеров неполная, вот из описания Intel VPL (он же…):

    Supported video encoders: HEVC, AVC, MPEG-2, JPEG, VP9, AV1

    И в репозитории libVA (линуксовый интерфейс) заголовки для соответствующих энкодеров имеются: https://github.com/intel/libva/tree/master/va