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.
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:24
e NÃO/rfx
ou/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.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.
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:
Hardware que suporta codificação YUV444/AVC444 (série GM107/9xx ou posterior)
Driver Nvidia Studio (em oposição ao driver Game Ready, pelo menos no momento em que este artigo foi escrito)
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 mais estável se você usar o Windows 10Windows Server 2016 para seu host de jogos remoto.