Área de trabalho remota do Windows 10 com RemoteFX e hardware h.264 usando Nvidia NVENC

Área de trabalho remota do Windows 10 com RemoteFX e hardware h.264 usando Nvidia NVENC

Tenho o Windows 10 Pro como servidor e o Windows 10 Pro como cliente. O servidor possui uma placa GTX 1070 com o driver mais recente e é totalmente compatível com NVENC para codificação de hardware h.264/AVC 444. O streaming do Steam funciona usando o codec de hardware no lado do servidor.

Eu tenho o RemoteFX habilitado no servidor e habilitei o seguinte na Política de Grupo em Serviços de Área de Trabalho Remota/Host de Sessão de Área de Trabalho Remota/Ambiente de Sessão Remota:

  • Use adaptadores gráficos de hardware para todas as sessões dos Serviços de Área de Trabalho Remota
  • Use gráficos RemtoteFX avançados para RemoteApp
  • Priorize o modo gráfico H.264/AVC 444 para conexões de área de trabalho remota
  • Configurar a codificação de hardware H.264/AVC para conexões de área de trabalho remota
  • Configurar compactação para dados RemoteFX
  • Configurar a qualidade da imagem para RemoteFX Adaptive Graphics
  • Habilite a codificação RemoteFX para clientes RemoteFX projetados para Windows Server 2008 R2 SP1
  • Habilitar Protocolo de Área de Trabalho Remota 8.0
  • Configurar a qualidade da imagem para RemoteFX Adaptive Graphics

Quando me conecto ao servidor, no Visualizador de Eventos e vou para RemoteDesktopServicesd-RdpCoreTS, não vejo nenhum evento com EventID 162 ou 170, e a documentação diz que eles devem aparecer quando a codificação de hardware for usada.

O que estou fazendo de errado? Por que não estou obtendo codificação h.264 de hardware? Há outra configuração que estou faltando e que preciso ativar?

Responder1

Finalmente consegui fazê-lo funcionar. Havia várias partes na solução.

  1. A codificação de hardware éAPENASjá usado com codificação AVC444. Se o seu cliente não estiver informando explicitamente ao servidor que é compatível com AVC444 (por exemplo, se só puder lidar com AVC420), o servidor RDP iráNUNCAuse codificação de hardware. Acho que isso ocorre porque a MS usa um codec especial para gerar um fluxo que é correto para o decodificador AVC420, mas aplica uma codificação especial que faz com que as fontes não pareçam bloqueadas e borradas.

    Portanto: certifique-se de que seu cliente suporta AVC444 e, se necessário, não habilite nenhuma opção de fallback.

    Se você estiver usando o cliente FreeRDP, certifique-se de iniciá-locom /gfx-h264:AVC444, você definiu pelo menos /bpp:24e NÃO /rfxou /rfx-mode:video. Você também precisará certificar-se de que construiu o FreeRDP com suporte a ffmpeg h.264 em vez de OpenH.264, pois o último quebrou o suporte para decodificação AVC444 e resultará em artefatos que tornarão o RDP inutilizável.

  2. A versão do driver da Nvidia é importante. Eu estava tentando originalmente com o driver "Game Ready" mais recente da Nvidia e não consegui fazê-lo funcionar. No final consegui funcionar com o driver "Studio" que é um pouco mais antigo.

  3. O suporte de hardware para codificação AVC444 éNECESSÁRIO. Isso significa GPU Maxwell GM107 ou melhor (apenas GeForce 9xx e posterior), já que versões mais antigas não têm suporte para codificação YUV444. Eu estava inicialmente tentando com um GT630 baseado em uma GPU Kepler GK208 (GT 630), que suporta apenas AVC420 e não AVC444.

Então, para resumir, para fazer isso funcionar você precisará de:

  1. Hardware que suporta codificação YUV444/AVC444 (série GM107/9xx ou posterior)

  2. Driver Nvidia Studio (em oposição ao driver Game Ready, pelo menos no momento em que este artigo foi escrito)

  3. Cliente que suporta decodificação AVC444 e se reporta como tal.

  4. Habilite a opção de priorizar/preferir AVC444 no lado do servidor.

  5. Mantenha a resolução em <= 2560x1440

Atualização: isso funciona muito melhor e mais estável se você usar o Windows 10Windows Server 2016 para seu host de jogos remoto.

informação relacionada