Escritorio remoto de Windows 10 con RemoteFX y hardware h.264 usando Nvidia NVENC

Escritorio remoto de Windows 10 con RemoteFX y hardware h.264 usando Nvidia NVENC

Tengo Windows 10 Pro como servidor y Windows 10 Pro como cliente. El servidor tiene una tarjeta GTX 1070 con el controlador más reciente y es totalmente compatible con NVENC con codificación de hardware h.264/AVC 444. La transmisión de Steam funciona utilizando el códec de hardware en el lado del servidor.

Tengo RemoteFX habilitado en el servidor y he habilitado lo siguiente en la Política de grupo en Servicios de escritorio remoto/Host de sesión de escritorio remoto/Entorno de sesión remota:

  • Utilice adaptadores de gráficos de hardware para todas las sesiones de Servicios de Escritorio remoto
  • Utilice gráficos RemtoteFX avanzados para RemoteApp
  • Priorice el modo de gráficos H.264/AVC 444 para conexiones de escritorio remoto
  • Configurar la codificación de hardware H.264/AVC para conexiones de escritorio remoto
  • Configurar la compresión para datos de RemoteFX
  • Configurar la calidad de imagen para RemoteFX Adaptive Graphics
  • Habilite la codificación RemoteFX para clientes RemoteFX diseñados para Windows Server 2008 R2 SP1
  • Habilitar el protocolo de escritorio remoto 8.0
  • Configurar la calidad de imagen para RemoteFX Adaptive Graphics

Cuando me conecto al servidor, en el Visor de eventos y voy a RemoteDesktopServicesd-RdpCoreTS, no veo ningún evento con EventID 162 o 170, y la documentación dice que deberían aparecer cuando se usa codificación de hardware.

¿Qué estoy haciendo mal? ¿Por qué no obtengo la codificación de hardware h.264? ¿Hay alguna otra configuración que me falta y que debo habilitar?

Respuesta1

Finalmente logré hacerlo funcionar. La solución tenía varias partes.

  1. La codificación de hardware esSOLOjamás utilizado con codificación AVC444. Si su cliente no le dice explícitamente al servidor que es compatible con AVC444 (por ejemplo, si solo puede manejar AVC420), el servidor RDPNUNCAutilizar codificación de hardware. Creo que esto se debe a que MS usa un códec especial para generar una transmisión que es correcta para el decodificador AVC420, pero aplica una codificación especial que hace que las fuentes no se vean bloqueadas ni borrosas.

    Por lo tanto: asegúrese de que su cliente admita AVC444 y, si es necesario, no habilite ninguna opción alternativa.

    Si está utilizando el cliente FreeRDP, asegúrese de iniciarlocon /gfx-h264:AVC444, has configurado al menos /bpp:24, y NO /rfxo /rfx-mode:video. También deberá asegurarse de haber creado FreeRDP con soporte para ffmpeg h.264 en lugar de OpenH.264, ya que este último no admite la decodificación AVC444 y generará artefactos que inutilizarán RDP.

  2. La versión del controlador Nvidia es importante. Originalmente estaba probando con el último controlador "Game Ready" de Nvidia y no pude hacerlo funcionar. Al final, logré que funcionara con el controlador "Studio", que es un poco más antiguo.

  3. El soporte de hardware para la codificación AVC444 esNECESARIO. Eso significa Maxwell GM107 o una GPU mejor (solo GeForce 9xx y posteriores), ya que las versiones anteriores no son compatibles con la codificación YUV444. Inicialmente estaba probando con un GT630 que se basa en una GPU Kepler GK208 (GT 630), que solo admite AVC420 y no AVC444.

Entonces, para resumir, para que esto funcione necesitarás:

  1. Hardware compatible con la codificación YUV444/AVC444 (serie GM107/9xx o posterior)

  2. Controlador Nvidia Studio (en comparación con el controlador Game Ready, al menos al momento de escribir esto)

  3. Cliente que admite la decodificación AVC444 y se informa como tal.

  4. Habilite la opción para priorizar/preferir AVC444 en el lado del servidor.

  5. Mantenga la resolución en <= 2560x1440

Actualización: esto funciona mucho mejor y más estable si en lugar de Windows 10 usasWindows Server 2016 para su servidor de juegos remoto.

información relacionada