✦Инженерия

Сравнение аппаратных видеокодировщиков: NVENC, AMF, QuickSync и Apple VideoToolbox.

Четыре производителя. Четыре блока специализированного кремния. Одна задача — превратить кадр из пикселей в несколько килобайт H.265 или AV1 менее чем за пять миллисекунд, шестьдесят раз в секунду, не пропуская ни одного кадра. Вот как NVIDIA, AMD, Intel и Apple на самом деле сравниваются для стриминга с низкой задержкой и как Remio выбирает подходящий во время работы.

Почему аппаратные кодировщики важны для удаленного рабочего стола

Закодируйте один кадр 1080p через libx264 на быстром ядре CPU. На современном Apple серии M или Ryzen 7000 для пресета ultrafast выйдет примерно от 8 до 12 миллисекунд, а для всего, что старается сохранить качество, — дольше. Звучит терпимо, пока не вспомнишь о бюджете: 16,6 миллисекунды на кадр при 60 FPS. Теперь добавьте захват, пакетизацию, очередь пейсера, отправку в сеть, декодирование и отрисовку. Кодирование на CPU не просто замедляет — оно съедает весь бюджет задержки, а при разрешении выше 1080p60 кадры теряются.

Аппаратные кодировщики решают это, выделяя под ту же задачу специализированный кремний. NVIDIA называет свой блок NVENC. AMD — AMF (точнее, движок VCN, которым управляет AMF). Intel — QuickSync (Media Engine внутри их встроенной графики). Apple — VideoToolbox (это API; кремний — Media Engine в чипах серий M и A). Все четыре существуют по одной причине: программное кодирование не укладывается в требования к задержке и частоте кадров, которых сегодня ждут от современных экранов, GPU и пользователей.

Для Remio каждая сэкономленная на кодировщике миллисекунда возвращается пользователю на пейсере, в сети и на отрисовке. Наш опубликованный бюджет задержки предполагает около 8 мс обработки в локальной сети (остальное — собственная частота обновления вашего дисплея в 60 Гц), и время кодирования — самая большая переменная. Выбор кодировщика и его настройка определяют всё, что идет дальше.

Четыре производителя вкратце

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

NVENC — восемь поколений доработок от NVIDIA

NVENC — кодировщик, с которым сравнивает большинство стриминговых программ: отчасти потому, что у NVIDIA хватает денег на маркетинг, отчасти потому, что кремний действительно десятилетие был отличным. Блок прошел восемь поколений:

Для низкой задержки NVENC предлагает три подходящих режима управления битрейтом. Каноническая конфигурация — CBR с настройкой low-latency и пресетом p1 (самый быстрый): детерминированный выходной битрейт, предпросмотр на один кадр, без B-кадров. Именно это Remio использует с hevc_nvenc в Windows. Время кодирования на Ada Lovelace для 1080p60 H.265 стабильно составляет от 1 до 3 мс.

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

AMF — аутсайдер от AMD, который наконец догнал

AMF (Advanced Media Framework) от AMD — это API; сам движок прошел через две разные архитектуры. Более старый VCE (Video Coding Engine) появился на картах эпохи GCN в 2012 году и вечно был слабым местом во всех сравнениях кодировщиков — заметно хуже NVENC по качеству при том же битрейте, особенно на динамичном контенте. AMD знала об этом, сообщество стримеров знало, и тесты это подтверждали.

Ситуация изменилась с VCN (Video Core Next), появившимся в Vega и улучшавшимся в каждом следующем поколении:

Для стриминга с низкой задержкой AMF предлагает пресет использования ultralowlatency, пресет качества speed и режим управления битрейтом cbr. Remio использует hevc_amf со всеми тремя — та же тройка пресетов описана в наших заметках об архитектуре стриминга. Время кодирования на RDNA3 для 1080p60 H.265 обычно 2–4 мс. RDNA2 — около 3–5 мс. Более старые карты эпохи VCN 1.x — ближе к 5–7 мс: всё еще в рамках бюджета, но с меньшим запасом на пики ключевых кадров.

Пять лет кодировщик AMD был предметом шуток. RDNA2 это исправила. RDNA3 сделала его конкурентным в AV1. Дуополия стриминговых кодировщиков стала триполией, и это хорошо для всех.

QuickSync — тихий чемпион по распространенности

QuickSync — кодировщик, который у вас почти наверняка уже есть. Он встроен в каждый процессор Intel со встроенной графикой начиная с Sandy Bridge в 2011 году — то есть в ноутбуки, NUC и офисные ПК за более чем десятилетие, где аппаратное кодирование видео простаивает, потому что пользователь считал, что нужен дискретный GPU. Он не был нужен.

Архитектура развивалась вместе с линейкой встроенной графики Intel:

Тихая суперсила QuickSync — тепловой профиль. Поскольку он живет внутри встроенной графики, уже находящейся на SoC, дополнительные затраты на его использование — только сам блок кодирования: не нужно будить дискретный GPU и запускать контроллеры памяти GDDR6. На ThinkPad или NUC QuickSync дает качество, сопоставимое с NVENC, при примерно четверти энергопотребления системы. В Windows-хосте Remio QuickSync — третий вариант после NVENC и AMF — не потому что он хуже, а потому что пользователи с дискретным GPU обычно хотят оставить встроенную графику свободной для других задач.

VideoToolbox — единый Media Engine в Apple Silicon

Apple не продвигает отдельное название для своего аппаратного кодировщика так, как это делает NVIDIA. API называется VideoToolbox; кремний — это Media Engine, блок собственной разработки Apple, который есть в каждом Mac серии M и в каждом SoC iPhone/iPad начиная с A6.

Количество Media Engine зависит от модели:

Каждый Media Engine аппаратно кодирует и декодирует H.264, H.265 и ProRes. Кодирование ProRes — главная функция для видеомонтажеров (ни один другой потребительский чип ее не имеет), но для стриминга важны эффективное кодирование H.265 main10 и поразительно низкая задержка кодирования.

Одно заметное упущение: нет кодирования AV1 ни в одном выпускаемом Apple Silicon. Чипы серии M декодируют AV1 начиная с M3, но кодировать не умеют. Для трансляции с Mac практическим вариантом по умолчанию в обозримом будущем остается H.265.

Где Apple действительно выигрывает — это энергоэффективность. На M2 Pro при кодировании 4K60 H.265 со скоростью 30 Мбит/с весь Media Engine потребляет примерно от 3 до 5 ватт. Эквивалентная нагрузка NVENC на RTX 4070 потребляет ближе к 35 ватт на уровне системы — по большей части это базовое потребление простаивающего дискретного GPU, а не самого блока кодирования. Для хоста Mac mini, который круглые сутки включен в ожидании клиента, это разница между «едва заметно в счете за электричество» и «заметно».

Сравнение бок о бок

Вот четыре движка по одним и тем же параметрам. Значения задержки — для пресетов ultra-low-latency H.265 1080p60 без B-кадров с VBV в один кадр, то есть конфигурация Remio. Качество — приблизительный перцептивный рейтинг при 8 Мбит/с CBR; абсолютные различия невелики.

Параметр NVENC (Ada) AMF (RDNA3) QuickSync (Arc / Gen12+) VideoToolbox (M3+)
H.264ДаДаДаДа
H.265 (HEVC)ДаДаДаДа (main10)
Кодирование AV1ДаДаДаНет
Кодирование ProResНетНетНетДа
Макс. разрешение8K H.2658K H.2658K (Arc), 4K (встроенная)8K H.265
Макс. FPS при 1080p H.265~480~360~360~600 (M3 Max)
Время кодирования, 1080p60 H.2651–3 мс2–4 мс2–4 мс2–3 мс
Энергопотребление, 4K60 H.265~35 Вт на систему~30 Вт на систему~8 Вт на систему (встроенная графика)~5 Вт
Рейтинг качества при 8 Мбит/с CBRДелит 1-е местоДелит 2-е местоДелит 2-е местоДелит 1-е место
ПлатформыWindows, LinuxWindows, LinuxWindows, Linux, macOS (Mac на Intel)macOS, iOS, iPadOS, tvOS
Одновременные сессииБез ограниченийБез ограниченийБез ограниченийБез ограничений

Честный итог: при настройках, которые реально используются для стриминга удаленного рабочего стола (CBR, низкая задержка, без B-кадров), все четыре достаточно хороши с большим запасом. Различия — в поддержке AV1 (NVIDIA / AMD / Intel, но не Apple), энергоэффективности (Apple, затем встроенная графика Intel, затем все остальные) и доступности по платформам (выбрать VideoToolbox на Windows-хосте или NVENC на Mac нельзя).

Что выбирает Remio во время работы

Remio при запуске проверяет возможности хоста и выбирает кодировщик по детерминированному приоритету. Windows-хост и Mac-хост следуют одной и той же логике выбора.

На Windows-хостах:

  1. NVENC (hevc_nvenc / h264_nvenc) — выбирается первым, если есть GPU NVIDIA и драйвер отвечает. Предпочтителен, потому что это самый стабильно быстрый кодировщик на самом широком диапазоне поколений оборудования.
  2. AMF (hevc_amf / h264_amf) — выбирается вторым, если есть дискретный GPU AMD или APU с VCN. Настроен с usage=ultralowlatency, quality=speed, rc=cbr.
  3. QuickSync (hevc_qsv / h264_qsv) — выбирается третьим, если есть встроенная графика Intel. В нашем конвейере функционально эквивалентен; мы предпочитаем оставить встроенную графику свободной, если есть дискретный GPU.
  4. Запасной вариант на CPU — libx264 — выбирается только тогда, когда ни один аппаратный кодировщик не отвечает. Ограничен 720p60 или 1080p30, чтобы уложиться в бюджет задержки.

На хостах Apple: VideoToolbox — единственный вариант, и единственный, который нам нужен. Media Engine в каждом поддерживаемом Mac (macOS 15+) работает с H.265 main10 из коробки. Запасной путь не нужен.

Предпочтение кодека — аппаратный H.265 первым, H.264 как универсальный запасной вариант — от начала до конца на каждой платформе. Remio сегодня не использует AV1 (кодирование на хосте, декодирование на клиенте и согласование кодека для него в конвейере отсутствуют); он держится H.265 даже на оборудовании, которое технически умеет AV1, потому что в локальной сети узкое место — задержка кодирования, а не битрейт.

Компромиссы между качеством и задержкой

У каждого аппаратного кодировщика одни и те же несколько ручек, и каждая меняет качество на задержку в одном направлении. Конфигурация Remio находится на самом агрессивном краю шкалы задержки, потому что удаленный рабочий стол по определению работает в реальном времени: кадр старше 20 мс хуже, чем кадр, чуть более размытый, чем в идеале.

Картина одинакова у всех четырех производителей. Реальное время с низкой задержкой — задача условной оптимизации: вы отказываетесь от нескольких процентов качества, которые дают предпросмотр и B-кадры при офлайн-кодировании, в обмен на предсказуемую задержку, которой требует взаимодействие в реальном времени. Каждый выпускаемый стриминговый продукт — Remio, Parsec, NVIDIA GeForce NOW, Xbox Cloud Gaming — делает тот же компромисс в том же направлении.

О чем вам (пользователю) на самом деле стоит беспокоиться

Если вы пролистали до конца: аппаратный кодировщик любого современного GPU подходит для удаленного рабочего стола.

Различия при настройках реального времени меньше уровня шума любого разумного теста. Пользователь Pascal GTX 1060 получает тот же опыт Remio, что и пользователь RTX 4090 — оба загружают конвейер 120 FPS примерно при 8 мс задержки обработки (остальное — собственная частота обновления вашего дисплея в 60 Гц), оба выдают неотличимый результат на битрейтах локальной сети.

Исключения, в порядке того, как часто они важны:

Помимо этих крайних случаев правильный ответ самый простой: используйте тот GPU, который вы бы купили в любом случае. Все современные производители сошлись на тех же возможностях, тех же пресетах низкой задержки, том же диапазоне качества. Remio выбирает подходящий во время работы, чтобы вам не приходилось об этом думать. Занимайтесь тем, ради чего открыли сессию удаленного рабочего стола — писать код, монтировать видео, чинить сервер, выкатывать исправление из кафе.

В этом и смысл специализированного кремния. Он просто работает, и вы перестаете его замечать.

✦Вопросы

Часто задаваемые вопросы

У какого аппаратного кодировщика самая низкая задержка?
Все четыре — NVENC, AMF, QuickSync и Apple VideoToolbox — могут обеспечить менее 5 миллисекунд на кодирование кадра при 1080p60 после настройки в режиме низкой задержки с отключенными B-кадрами и буфером VBV в 1 кадр. На практике самые быстрые — Apple VideoToolbox на кремнии серии M и NVENC на Ada Lovelace: в наших измерениях оба регулярно дают от 2 до 3 миллисекунд для 1080p60 H.265.
Стоит ли уже использовать аппаратное кодирование AV1?
Аппаратное кодирование AV1 дает снижение битрейта примерно на 25–30 процентов при том же воспринимаемом качестве по сравнению с H.265 и на 50 процентов по сравнению с H.264. В ограниченных сетях (медленный Wi-Fi, мобильный интернет) это существенно. В локальной сети практической разницы нет, потому что узкое место — задержка кодирования, а не пропускная способность. Сегодня Remio использует аппаратный H.265 от начала до конца, а H.264 — как универсальный запасной вариант: AV1 в конвейере пока нет, даже на оборудовании, которое его поддерживает.
Действительно ли Apple Silicon конкурирует с кодировщиками дискретных GPU?
Да, и часто выигрывает по энергоэффективности. Единый Media Engine Apple в M2 и новее кодирует 4K60 H.265 примерно при 3–5 ваттах — это намного меньше десятой части того, что тратит движок NVENC дискретного GPU на ту же работу. Качество сопоставимо с NVENC при том же битрейте, задержка тоже. Основной пробел — Apple пока не выпускает кодирование AV1.
Какой кодировщик Remio использует в Windows?
Remio определяет автоматически в порядке NVENC, затем AMF, затем QuickSync, затем запасной вариант на CPU (libx264). Предпочитает H.265 hevc_amf или hevc_nvenc с пресетом ultralowlatency, отключенными B-кадрами, буфером VBV в 1 кадр и CBR 8 Мбит/с с адаптацией до 30 Мбит/с в локальной сети. Та же философия настройки применяется ко всем трем аппаратным путям — меняются только название кодека FFmpeg и несколько строк пресетов конкретного производителя.
Почему Remio по умолчанию предпочитает H.265, а не H.264?
H.265 достигает того же воспринимаемого качества примерно при половине битрейта H.264, что важно для пиков ключевых кадров и сессий через релей. Аппаратное кодирование и декодирование H.265 сегодня стандарт на каждом современном чипе Apple, Intel, AMD и NVIDIA, на которые ориентирован Remio. H.264 остается универсальным запасным вариантом для очень старого оборудования и для редких соединений, где согласование H.265 не удается.
Важно ли, какой аппаратный кодировщик у меня для удаленного рабочего стола?
Для большинства пользователей — нет. Любой аппаратный кодировщик, выпущенный за последние шесть лет — NVENC эпохи Pascal, AMF с VCN 2.0+, QuickSync начиная с Skylake, любой Mac на Apple Silicon — загрузит конвейер Remio на 120 FPS примерно при 8 мс обработки в локальной сети (остальное — собственная частота обновления вашего дисплея в 60 Гц). Различия на краях: AV1 в медленных сетях, энергопотребление на ноутбуках и качество на очень низких битрейтах. Выбирайте GPU, который вы бы купили в любом случае, и кодировщик будет в порядке.
Значок приложения Remio

Пусть работает кремний.

Remio автоматически определяет NVENC, AMF, QuickSync или VideoToolbox и выбирает самый быстрый путь для вашего оборудования. Бесплатно, без аккаунта, около 8 мс обработки в локальной сети.

БесплатноБез аккаунтаПодключение за 30 секунд