使用 Nvidia NVENC 的具有 RemoteFX 和硬體 h.264 的 Windows 10 遠端桌面

使用 Nvidia NVENC 的具有 RemoteFX 和硬體 h.264 的 Windows 10 遠端桌面

我將 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 編碼?是否還缺少其他需要啟用的設定?

答案1

終於成功讓它發揮作用了。解決方案分為幾個部分。

  1. 硬體編碼是僅有的曾經與 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 無法使用的工件。

  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 Server 2016

相關內容