サーバーとして 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
ようやく動作するようになりました。解決策はいくつかあります。
ハードウェアエンコーディングはのみAVC444エンコードで使用されたことはありません。クライアントがサーバーにAVC444対応であることを明示的に伝えていない場合(たとえば、AVC420しか処理できない場合)、RDPサーバーは一度もないハードウェア エンコーディングを使用します。これは、MS が特別なコーデックを使用して、AVC420 デコーダーに適切なストリームを生成する一方で、フォントがブロック状やぼやけたように見えないようにする特別なエンコーディングを適用するためだと思います。
したがって、クライアントが AVC444 をサポートしていることを確認し、必要に応じてフォールバック オプションを有効にしないでください。
FreeRDPクライアントを使用している場合は、必ず起動してください。と
/gfx-h264:AVC444
、少なくとも/bpp:24
、および NO/rfx
または が設定されています/rfx-mode:video
。FreeRDP を OpenH.264 ではなく ffmpeg h.264 サポートでビルドしたことを確認する必要もあります。OpenH.264 では AVC444 デコードのサポートが壊れており、RDP が使用できなくなるアーティファクトが発生します。Nvidia ドライバーのバージョンは重要です。最初は Nvidia の最新の「Game Ready」ドライバーを試しましたが、動作しませんでした。最終的には、少し古い「Studio」ドライバーで動作しました。
AVC444エンコードのハードウェアサポートは必要つまり、Maxwell GM107 以上の GPU (GeForce 9xx 以降のみ) が必要です。古いバージョンでは YUV444 エンコードがサポートされていないためです。私は最初、AVC444 ではなく AVC420 のみをサポートする Kepler GK208 (GT 630) GPU をベースにした GT630 を試していました。
まとめると、これを機能させるには次のものが必要です。
YUV444/AVC444エンコードをサポートするハードウェア(GM107/9xxシリーズ以降)
Nvidia Studio ドライバー (少なくともこの記事の執筆時点では、Game Ready ドライバーではありません)
AVC444 デコードをサポートし、そのように報告するクライアント。
サーバー側で AVC444 を優先するオプションを有効にします。
解像度を2560x1440以下にしてください
更新:Windows 10の代わりに以下を使用すると、より良く、より安定して動作します。リモート ゲーム ホスト用の Windows Server 2016。