Eu 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
- Configure a codificação de hardware H.264/AVC para conexões de área de trabalho remota
- Configurar compressão para dados RemoteFX
- Configurar a qualidade da imagem para RemoteFX Adaptive Graphics
- Habilitar 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 é usada.
O que estou fazendo errado? Por que não estou obtendo a codificação h.264 de hardware? Existe outra configuração que estou perdendo e que preciso ativar?
Finalmente conseguiu fazê-lo funcionar. Havia várias partes para a solução.
A codificação de hardware é usada APENAS com a codificação AVC444. Se o seu cliente não estiver explicitamente informando ao servidor que é compatível com AVC444 (por exemplo, se ele puder lidar apenas com AVC420), o servidor RDP NUNCA usará a codificação de hardware. Acho que isso ocorre porque o MS usa um codec especial para gerar um fluxo que é o decodificador AVC420 correto, mas aplica uma codificação especial que faz com que as fontes não pareçam blocos 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á-lo com
/gfx-h264:AVC444
, você definiu pelo menos/bpp:24
, e NO/rfx
ou/rfx-mode:video
. Você também precisará certificar-se de ter criado 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.A versão do driver da Nvidia é importante. Originalmente, eu estava tentando com o driver "Game Ready" mais recente da Nvidia e não consegui fazê-lo funcionar. No final, consegui trabalhar com o driver "Studio", que é um pouco mais antigo.
O suporte de hardware para a codificação AVC444 é NECESSÁRIO . Isso significa Maxwell GM107 ou melhor GPU (GeForce 9xx e posterior apenas), pois as versões mais antigas não têm suporte para codificação YUV444. Eu estava tentando inicialmente com um GT630 que é baseado em uma GPU Kepler GK208 (GT 630), que suporta apenas AVC420 e não AVC444.
Então, para resumir, para fazer este trabalho, você precisará de:
Hardware que suporta codificação YUV444/AVC444 (série GM107 / 9xx ou posterior)
Driver Nvidia Studio (conforme proposto para o driver Game Ready, pelo menos no momento em que escrevo isso)
Cliente que suporta decodificação AVC444 e se reporta como tal.
Habilite a opção de priorizar/preferir AVC444 no lado do servidor.
Mantenha a resolução em <= 2560x1440
Atualização: isso funciona muito melhor e de forma mais estável se, em vez do Windows 10, você usar o Windows Server 2016 para seu host de jogos remoto .