Windows 10 Proをサーバーとして、Windows 10 Proをクライアントとして使用しています。サーバーには、最新のドライバーを備えたGTX 1070カードがあり、h.264/AVC 444ハードウェアエンコーディングに完全に対応したNVENCです。 Steamストリーミングは、サーバー側のハードウェアコーデックを使用して動作します。
サーバーでRemoteFXを有効にしており、リモートデスクトップサービス/リモートデスクトップセッションホスト/リモートセッション環境のグループポリシーで以下を有効にしています。
サーバーに接続し、イベントビューアでRemoteDesktopServicesd-RdpCoreTSに移動すると、EventID 162または170のイベントが表示されず、ハードウェアエンコーディングを使用するとこれらのイベントが表示されるとドキュメントに記載されています。
何が悪いのですか?ハードウェアh.264エンコーディングが得られないのはなぜですか?有効にする必要がある、他に欠けている設定はありますか?
ようやくそれを機能させることができました。ソリューションにはいくつかの部分がありました。
ハードウェアエンコーディングは[〜#〜] only [〜#〜]であり、AVC444エンコーディングで使用されます。クライアントがサーバーにAVC444対応であることを明示的に伝えていない場合(AVC420しか処理できない場合など)、RDPサーバーは[〜#〜]決して[〜#〜]ハードウェアエンコーディングを使用します。これは、MSが特別なコーデックを使用してAVC420デコーダーが正しいストリームを生成するが、フォントをブロック化してぼやけさせないようにする特別なエンコーディングを適用するためだと思います。
したがって、クライアントがAVC444をサポートしていることを確認し、必要に応じて、フォールバックオプションを有効にしないでください。
FreeRDPクライアントを使用している場合は、必ず起動してください with/gfx-h264:AVC444
、少なくとも/bpp:24
、NO _/rfx
または/rfx-mode:video
を設定している。また、OpenH.264ではなく、ffmpeg h.264サポートを使用してFreeRDPをビルドしたことを確認する必要があります。これは、後者がAVC444デコードのサポートを破壊し、RDPを使用不可にするアーティファクトが発生するためです。
Nvidiaドライバーのバージョンが重要です。私はもともとNvidiaの最新の "Game Ready"ドライバーを試していましたが、それを動作させることができませんでした。結局、少し古い「スタジオ」ドライバーで動作させました。
AVC444エンコーディングのハードウェアサポートは[〜#〜]が必要です[〜#〜]。古いバージョンはYUV444エンコーディングをサポートしていないため、これはMaxwell GM107以上のGPU(GeForce 9xx以降のみ)を意味します。最初は、AVC420のみをサポートし、AVC444はサポートしていない、Kepler GK208(GT 630)GPUに基づくGT630を試してみました。
要約すると、この作業を行うには次のものが必要です。
YUV444/AVC444エンコーディングをサポートするハードウェア(GM107/9xxシリーズ以降)
Nvidia Studioドライバー(少なくともこれを書いている時点で、Game Readyドライバーに提示されたとおり)
AVC444デコードをサポートし、それ自体を報告するクライアント。
サーバー側でAVC444を優先/優先するオプションを有効にします。
解像度を2560x1440以下に保つ