У меня Windows 10 Pro в качестве сервера и Windows 10 Pro в качестве клиента. На сервере установлена карта GTX 1070 с последним драйвером, и он полностью поддерживает аппаратное кодирование H.264 / AVC 444 с помощью NVENC. Потоковая передача Steam работает с использованием аппаратного кодека на стороне сервера.
У меня включен RemoteFX на сервере, и в групповой политике в разделе «Службы удаленных рабочих столов» / «Узел сеансов удаленных рабочих столов» / «Среда удаленных сеансов» включено следующее:
- Использовать аппаратные графические адаптеры для всех сеансов служб удаленных рабочих столов
- Используйте расширенную графику RemtoteFX для RemoteApp
- Установите приоритет графического режима H.264/AVC 444 для подключений к удаленному рабочему столу
- Настройте аппаратное кодирование H.264/AVC для подключений к удаленному рабочему столу
- Настройте сжатие данных RemoteFX
- Настройка качества изображения для RemoteFX Adaptive Graphics
- Включить кодирование RemoteFX для клиентов RemoteFX, разработанных для Windows Server 2008 R2 SP1
- Включить протокол удаленного рабочего стола 8.0
- Настройка качества изображения для RemoteFX Adaptive Graphics
Когда я подключаюсь к серверу, в средстве просмотра событий и перехожу к RemoteDesktopServicesd-RdpCoreTS, я не вижу никаких событий с EventID 162 или 170, а в документации сказано, что они должны появляться при использовании аппаратного кодирования.
Что я делаю не так? Почему у меня не получается аппаратное кодирование h.264? Есть ли еще какие-то настройки, которые я упускаю и которые нужно включить?
решение1
Наконец удалось заставить это работать. Решение состояло из нескольких частей.
Аппаратное кодированиеТОЛЬКОкогда-либо использовался с кодировкой AVC444. Если ваш клиент явно не сообщает серверу, что он поддерживает AVC444 (например, если он может обрабатывать только AVC420), сервер RDP будетНИКОГДАиспользовать аппаратное кодирование. Я думаю, это потому, что MS использует специальный кодек для генерации потока, который является корректным для декодера AVC420, но применяет специальную кодировку, которая делает шрифты не блочными и размытыми.
Поэтому: убедитесь, что ваш клиент поддерживает AVC444, и при необходимости не включайте никаких резервных опций.
Если вы используете клиент FreeRDP, обязательно запустите его.с
/gfx-h264:AVC444
, вы установили по крайней мере/bpp:24
, и НЕТ/rfx
или/rfx-mode:video
. Вам также нужно будет убедиться, что вы собрали FreeRDP с поддержкой ffmpeg h.264, а не OpenH.264, поскольку последний не поддерживает декодирование AVC444, что приведет к появлению артефактов, которые сделают RDP непригодным для использования.Версия драйвера Nvidia имеет значение. Изначально я пытался использовать последний драйвер Nvidia "Game Ready", но не смог заставить его работать. В конце концов, я добился работы с драйвером "Studio", который немного старше.
Аппаратная поддержка кодирования AVC444 естьНЕОБХОДИМЫЙ. Это означает Maxwell GM107 или более качественный графический процессор (только GeForce 9xx и более поздние версии), так как более старые версии не поддерживают кодирование YUV444. Сначала я пытался использовать GT630, который основан на графическом процессоре Kepler GK208 (GT 630), который поддерживает только AVC420, но не AVC444.
Итак, подведем итог: для выполнения этой работы вам понадобится:
Оборудование, поддерживающее кодирование YUV444/AVC444 (серия GM107 / 9xx или более поздняя)
Драйвер Nvidia Studio (как предполагалось для драйвера Game Ready, по крайней мере на момент написания этой статьи)
Клиент, поддерживающий декодирование AVC444 и сообщающий о себе как о таковом.
Включите опцию приоритета/предпочтения AVC444 на стороне сервера.
Сохраняйте разрешение <= 2560x1440
Обновление: это работает намного лучше и стабильнее, если вместо Windows 10 вы используетеWindows Server 2016 для вашего удаленного игрового хоста.