使用 Nvidia NVENC 的 RemoteFX 和硬件 h.264 进行 Windows 10 远程桌面

使用 Nvidia NVENC 的 RemoteFX 和硬件 h.264 进行 Windows 10 远程桌面

我将 Windows 10 Pro 作为服务器,将 Windows 10 Pro 作为客户端。服务器配有 GTX 1070 显卡和最新驱动程序,并且完全支持 NVENC 进行 h.264 / AVC 444 硬件编码。Steam 流媒体使用服务器端的硬件编解码器工作。

我已在服务器上启用 RemoteFX,并在远程桌面服务/远程桌面会话主机/远程会话环境下的组策略中启用了以下内容:

  • 对所有远程桌面服务会话使用硬件图形适配器
  • 为 RemoteApp 使用高级 RemtoteFX 图形
  • 优先考虑远程桌面连接的 H.264/AVC 444 图形模式
  • 为远程桌面连接配置 H.264/AVC 硬件编码
  • 配置 RemoteFX 数据的压缩
  • 配置 RemoteFX 自适应图形的图像质量
  • 为针对 Windows Server 2008 R2 SP1 设计的 RemoteFX 客户端启用 RemoteFX 编码
  • 启用远程桌面协议 8.0
  • 配置 RemoteFX 自适应图形的图像质量

当我连接到服务器时,在事件查看器中转到 RemoteDesktopServicesd-RdpCoreTS,我没有看到任何 EventID 为 162 或 170 的事件,而文档说这些事件应该在使用硬件编码时出现。

我做错了什么?为什么我没有获得硬件 h.264 编码?我是否遗漏了其他需要启用的设置?

答案1

终于设法让它工作了。解决方案有几个部分。

  1. 硬件编码是仅有的是否曾使用过 AVC444 编码。如果您的客户端没有明确告知服务器它支持 AVC444(例如,它只能处理 AVC420),RDP 服务器将绝不使用硬件编码。我认为这是因为 MS 使用特殊的编解码器来生成 AVC420 解码器正确的流,但应用了特殊的编码,使字体看起来不会块状和模糊。

    因此:确保您的客户端支持 AVC444,如果有必要,不要启用任何后备选项。

    如果你正在使用 FreeRDP 客户端,请确保启动它 /gfx-h264:AVC444,您至少设置了/bpp:24,并且没有/rfx/rfx-mode:video。您还需要确保您使用 ffmpeg h.264 支持而不是 OpenH.264 构建 FreeRDP,因为后者破坏了对 AVC444 解码的支持,并将导致使 RDP 无法使用的瑕疵。

  2. Nvidia 驱动程序版本很重要。我最初尝试使用 Nvidia 最新的“Game Ready”驱动程序,但无法使其工作。最后,我使用稍旧一些的“Studio”驱动程序让它工作了。

  3. AVC444 编码的硬件支持必要的。这意味着 Maxwell GM107 或更好的 GPU(仅限 GeForce 9xx 及更高版本),因为旧版本不支持 YUV444 编码。我最初尝试使用基于 Kepler GK208(GT 630)GPU 的 GT630,它仅支持 AVC420 而不支持 AVC444。

总而言之,要完成这项工作,您需要:

  1. 支持 YUV444/AVC444 编码的硬件(GM107/9xx 系列或更高版本)

  2. Nvidia Studio 驱动程序(至少在撰写本文时,它与 Game Ready 驱动程序相同)

  3. 支持 AVC444 解码并报告自身支持的客户端。

  4. 启用在服务器端优先考虑/优先使用 AVC444 的选项。

  5. 将分辨率保持在<= 2560x1440

更新:如果你使用 Windows 10 而不是 Windows 10,效果会更好、更稳定适用于远程游戏主机的 Windows Server 2016

相关内容