我将 Windows 10 Pro 作为服务器,将 Windows 10 Pro 作为客户端。服务器有一个带有最新驱动程序的 GTX 1070 卡,并且完全支持 h.264 / AVC 444 硬件编码的 NVENC。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 编码?是否还有其他我需要启用的设置?
终于设法让它工作了。解决方案有几个部分。
硬件编码仅用于 AVC444 编码。如果您的客户端没有明确告诉服务器它支持 AVC444(例如,它只能处理 AVC420),RDP 服务器将永远不会使用硬件编码。我认为这是因为 MS 使用特殊的编解码器来生成 AVC420 解码器正确的流,但应用了特殊的编码,使字体看起来不会块状和模糊。
因此:确保您的客户端支持 AVC444,如有必要,不要启用任何回退选项。
如果您使用的是 FreeRDP 客户端,请确保以 启动它,
/gfx-h264:AVC444
您至少设置了/bpp:24
,并且 NO/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 Server 2016 而不是 Windows 10 作为远程游戏主机,这会更好、更稳定。