我将 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
终于设法让它工作了。解决方案有几个部分。
硬件编码是仅有的是否曾使用过 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 无法使用的瑕疵。Nvidia 驱动程序版本很重要。我最初尝试使用 Nvidia 最新的“Game Ready”驱动程序,但无法使其工作。最后,我使用稍旧一些的“Studio”驱动程序让它工作了。
AVC444 编码的硬件支持必要的。这意味着 Maxwell GM107 或更好的 GPU(仅限 GeForce 9xx 及更高版本),因为旧版本不支持 YUV444 编码。我最初尝试使用基于 Kepler GK208(GT 630)GPU 的 GT630,它仅支持 AVC420 而不支持 AVC444。
总而言之,要完成这项工作,您需要:
支持 YUV444/AVC444 编码的硬件(GM107/9xx 系列或更高版本)
Nvidia Studio 驱动程序(至少在撰写本文时,它与 Game Ready 驱动程序相同)
支持 AVC444 解码并报告自身支持的客户端。
启用在服务器端优先考虑/优先使用 AVC444 的选项。
将分辨率保持在<= 2560x1440
更新:如果你使用 Windows 10 而不是 Windows 10,效果会更好、更稳定适用于远程游戏主机的 Windows Server 2016。