Четыре производителя. Четыре блока специализированного кремния. Одна задача — превратить кадр из пикселей в несколько килобайт 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 GeForce, Quadro и RTX начиная с 2012 года (Kepler). Поколения привязаны к семействам архитектур: 1-е поколение — Kepler, 8-е — Ada Lovelace. У серверных чипов Hopper другой ритм.
- AMF открывает доступ к движку VCN (Video Core Next) от AMD, который заменил более старый VCE. Доступен на каждом GPU Vega, RDNA, RDNA2 и RDNA3, а также на новых APU.
- QuickSync есть во встроенной графике Intel с Sandy Bridge в 2011 году — это самый распространенный в мире аппаратный кодировщик. Дискретные GPU Arc используют ту же архитектуру в увеличенном масштабе.
- VideoToolbox — это API Apple; под ним лежит Media Engine, встроенный в каждый Mac на Apple Silicon, каждый iPhone начиная с A6 и каждый iPad. В зависимости от модели в чипах серии M один или два таких движка.
NVENC — восемь поколений доработок от NVIDIA
NVENC — кодировщик, с которым сравнивает большинство стриминговых программ: отчасти потому, что у NVIDIA хватает денег на маркетинг, отчасти потому, что кремний действительно десятилетие был отличным. Блок прошел восемь поколений:
- 1–3-е поколения (от Kepler до Maxwell, 2012–2014) — только H.264; для стриминга годятся, но качество заметно уступало libx264.
- 4-е поколение (Pascal, GTX 10-й серии) — добавлено кодирование H.265. Именно с этого поколения качество NVENC догнало и, пожалуй, превзошло быстрые пресеты libx264 при том же битрейте.
- 6-е поколение (Turing, RTX 20-й серии, GTX 16-й серии) — тот самый часто упоминаемый скачок «Turing NVENC». Качество на низких битрейтах выросло настолько, что стримеры перестали делать вид, будто кодирование на CPU заметно лучше для прямых эфиров.
- 7-е поколение (Ampere, RTX 30-й серии) — доработки; в целом то же качество, что у Turing, в пересчете на ватт.
- 8-е поколение (Ada Lovelace, RTX 40-й серии) — первое поколение NVIDIA с аппаратным кодированием AV1, а на старших моделях — с двумя движками кодирования. NVENC на Ada может кодировать AV1 с качеством, сравнимым с пресетами medium у libaom-av1, при ничтожной доле нагрузки на CPU.
Для низкой задержки 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 и улучшавшимся в каждом следующем поколении:
- VCN 1.0–2.0 (Vega, RDNA1) — H.264 и H.265 с качеством, которое наконец почти сравнялось с NVENC Pascal/Turing.
- VCN 3.0 (RDNA2, серия RX 6000) — существенное улучшение качества, особенно на низких битрейтах. Первое поколение AMD, которое мне не стыдно рекомендовать для игрового стриминга.
- VCN 4.0 (RDNA3, серия RX 7000) — добавляет кодирование AV1 наравне с NVIDIA Ada. На старших моделях два кодировщика для параллельных сессий. Качество AV1 в сторонних тестах сопоставимо с AV1 от NVIDIA.
Для стриминга с низкой задержкой 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:
- От Sandy Bridge до Skylake (2011–2015) — только H.264, посредственное качество, но лучшая в классе задержка и энергопотребление для ноутбука.
- От Kaby Lake до Coffee Lake (2016–2018) — добавлены H.265, 10 бит, кодирование 4K.
- Начиная с Ice Lake (2019+) — встроенная графика Xe поколений Gen11/Gen12 резко улучшила качество. Во многих тестах QuickSync Gen12 отстает от NVENC Turing на считаные проценты.
- Дискретные Arc (2022+) — первая линейка дискретных GPU от Intel. Та же архитектура Xe-HPG в увеличенном масштабе, с кодированием AV1. Arc стала первым потребительским GPU с аппаратным AV1 — раньше NVIDIA Ada и AMD RDNA3 — и качество на удивление отличное. Intel Arc A380 остается абсурдно выгодной покупкой по пропускной способности AV1 на доллар.
Тихая суперсила 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 зависит от модели:
- M1, M2, M3 — один Media Engine.
- M1 Pro/Max, M2 Pro/Max, M3 Pro/Max — два Media Engine.
- M1 Ultra, M2 Ultra — четыре Media Engine (по два на каждый объединенный кристалл).
- M3 Max (16-ядерный CPU) — два Media Engine.
- Семейство M4 — обновленный Media Engine с повышенной пропускной способностью H.265.
Каждый 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.265 | 8K H.265 | 8K (Arc), 4K (встроенная) | 8K H.265 |
| Макс. FPS при 1080p H.265 | ~480 | ~360 | ~360 | ~600 (M3 Max) |
| Время кодирования, 1080p60 H.265 | 1–3 мс | 2–4 мс | 2–4 мс | 2–3 мс |
| Энергопотребление, 4K60 H.265 | ~35 Вт на систему | ~30 Вт на систему | ~8 Вт на систему (встроенная графика) | ~5 Вт |
| Рейтинг качества при 8 Мбит/с CBR | Делит 1-е место | Делит 2-е место | Делит 2-е место | Делит 1-е место |
| Платформы | Windows, Linux | Windows, Linux | Windows, 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-хостах:
- NVENC (
hevc_nvenc/h264_nvenc) — выбирается первым, если есть GPU NVIDIA и драйвер отвечает. Предпочтителен, потому что это самый стабильно быстрый кодировщик на самом широком диапазоне поколений оборудования. - AMF (
hevc_amf/h264_amf) — выбирается вторым, если есть дискретный GPU AMD или APU с VCN. Настроен сusage=ultralowlatency,quality=speed,rc=cbr. - QuickSync (
hevc_qsv/h264_qsv) — выбирается третьим, если есть встроенная графика Intel. В нашем конвейере функционально эквивалентен; мы предпочитаем оставить встроенную графику свободной, если есть дискретный GPU. - Запасной вариант на 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 мс хуже, чем кадр, чуть более размытый, чем в идеале.
- CBR и VBR. Переменный битрейт дает лучшее качество при той же средней скорости, тратя биты там, где они полезны. Но VBR дает и непредсказуемый размер кадра, а значит непредсказуемую очередь пейсера и непредсказуемую задержку. Remio везде использует CBR. Потеря качества мала; стабильность задержки огромна.
- B-кадры. B-кадры ссылаются и на прошлые, и на будущие кадры, поэтому декодеру нужно дождаться будущего кадра, прежде чем декодировать B-кадр. Для видео по запросу это нормально, для реального времени — фатально. Remio отключает B-кадры в каждом кодеке на каждой платформе.
- GOP / интервал ключевых кадров. Более длинные GOP (больше кадров между ключевыми) сжимаются лучше. Более короткие быстрее восстанавливаются после потери пакетов. Remio использует практически бесконечные GOP и запрашивает у хоста свежий ключевой кадр, когда декодер сообщает о потере. Потерянный пакет отправляется повторно сразу, если еще успевает дойти вовремя; если нет — Remio пропускает его и запрашивает свежий кадр, а не ждет. Это соответствует нашей философии стриминга: отображать только последний кадр.
- Предпросмотр (lookahead). NVENC, AMF и QuickSync поддерживают многокадровый предпросмотр для адаптивного квантования. Каждый кадр предпросмотра добавляет целый кадр задержки. Remio использует нулевой или однокадровый предпросмотр — самое низкое значение у каждого кодировщика.
- Буфер VBV. Окно Video Buffering Verifier — это число битов, которые кодировщик может «занять вперед», прежде чем вернуться к целевой скорости. Больший VBV дает более ровное качество. Меньший — более строгий контроль скорости и меньшую задержку. Remio использует 1 кадр VBV — битрейт, деленный на частоту кадров, — это наименьшее допустимое значение.
Картина одинакова у всех четырех производителей. Реальное время с низкой задержкой — задача условной оптимизации: вы отказываетесь от нескольких процентов качества, которые дают предпросмотр и B-кадры при офлайн-кодировании, в обмен на предсказуемую задержку, которой требует взаимодействие в реальном времени. Каждый выпускаемый стриминговый продукт — Remio, Parsec, NVIDIA GeForce NOW, Xbox Cloud Gaming — делает тот же компромисс в том же направлении.
О чем вам (пользователю) на самом деле стоит беспокоиться
Если вы пролистали до конца: аппаратный кодировщик любого современного GPU подходит для удаленного рабочего стола.
Различия при настройках реального времени меньше уровня шума любого разумного теста. Пользователь Pascal GTX 1060 получает тот же опыт Remio, что и пользователь RTX 4090 — оба загружают конвейер 120 FPS примерно при 8 мс задержки обработки (остальное — собственная частота обновления вашего дисплея в 60 Гц), оба выдают неотличимый результат на битрейтах локальной сети.
Исключения, в порядке того, как часто они важны:
- Оборудование с AV1 в целом помогает в медленных сетях. Wi-Fi в отеле или мобильная точка доступа, хост на Ada / RDNA3 / Arc и клиент на M3+ или RTX 40-й серии дают около 25 процентов дополнительного запаса при том же качестве в инструментах, которые это используют. В локальной сети — ничего. Remio пока не использует AV1 — весь конвейер на H.265 — так что сегодня это преимущество производителя, а не Remio.
- Mac на Apple Silicon — удивительно хорошие хосты. Низкая задержка Media Engine, отличный H.265 и потребление 3–5 Вт делают Mac mini или Studio одним из лучших постоянно работающих источников стриминга, которые можно купить. Единственный пробел — нет кодирования AV1, что в локальной сети неважно.
- Intel Arc A380 — неразумно выгодная покупка для AV1. Примерно за $120 вы получаете блок кодирования, который превосходит всё остальное дешевле $400.
- Запасной вариант libx264 на CPU работает по-настоящему. Нет аппаратного кодировщика — старый ноутбук, сервер без встроенной графики — Remio всё равно работает. Но не в 4K 60 и не без загрузки одного ядра CPU.
Помимо этих крайних случаев правильный ответ самый простой: используйте тот GPU, который вы бы купили в любом случае. Все современные производители сошлись на тех же возможностях, тех же пресетах низкой задержки, том же диапазоне качества. Remio выбирает подходящий во время работы, чтобы вам не приходилось об этом думать. Занимайтесь тем, ради чего открыли сессию удаленного рабочего стола — писать код, монтировать видео, чинить сервер, выкатывать исправление из кафе.
В этом и смысл специализированного кремния. Он просто работает, и вы перестаете его замечать.