次の方法で共有


リモート デスクトップ プロトコルを使用したグラフィックス エンコード

リモート セッションからのグラフィックス データは、リモート デスクトップ プロトコル (RDP) を介してローカル デバイスに送信されます。 このプロセスでは、ローカル デバイスに送信する前に、リモート仮想マシン上のグラフィックス データをエンコードする必要があります。 各フレームは、RDP のグラフィックス トランスポートを使用してローカル デバイスに配信される前に、イメージ プロセッサ、分類子、コーデックを通過して、そのコンテンツに基づいて処理されます。

グラフィックス データのエンコードと送信の目的は、デバイスをローカルで使用するのと同じエクスペリエンスで、最適なパフォーマンスと品質を提供することです。 このプロセスは、Azure Virtual Desktop、Windows 365のクラウド PC、Microsoft Dev Box を使用する場合に重要です。ユーザーは、リモートで作業するときに高品質のエクスペリエンスが期待されます。

RDP では、さまざまな機能と手法を使用してグラフィックス データを処理および送信し、オフィスの生産性、ビデオ再生、ゲームなど、さまざまなシナリオに適しています。 これらの機能と手法は次のとおりです。

  • ハードウェアおよびソフトウェア ベースのエンコード: CPU または GPU を使用してグラフィックス データをエンコードします。

    • ハードウェア アクセラレーション エンコード: グラフィックス エンコードの処理を CPU から、個別の GPU を使用してリモート仮想マシン上の GPU にオフロードします。 GPU を使用すると、3D モデリングや高解像度ビデオ編集など、グラフィックスを集中的に使用するアプリケーションのパフォーマンスが向上します。

    • ソフトウェア エンコード: CPU を使用してグラフィックス データを低コストでエンコードします。 ソフトウェア エンコードは、個別の GPU を使用しないリモート仮想マシンで使用される既定のエンコード プロファイルです。

  • 混合モード: 異なるコーデックを使用してテキストとイメージのエンコードを分離し、コンテンツの種類ごとに最適な品質と最小のエンコード コストを提供します。 混合モードは、ソフトウェア エンコードでのみ使用できます。

  • アダプティブ グラフィックス: 使用可能な帯域幅と画面の内容に基づいてエンコード品質を調整します。

  • 全画面表示ビデオ エンコード: より高いフレーム レートと優れたユーザー エクスペリエンスを提供します。

  • デルタ検出とキャッシュ: 送信する必要があるデータの量を減らします。

  • 複数のコーデックのサポート: ローカル デバイスでハードウェア デコーダーを使用します。 コーデックには、H.264 とも呼ばれる高度なビデオ コーディング (AVC) ビデオ コーデックと、H.265 とも呼ばれる高効率ビデオ コーディング (HEVC) ビデオ コーデックが含まれます。 HEVC/H.265 のサポートには、互換性のある GPU 対応リモート仮想マシンが必要です。

  • 4:2:0 と 4:4:4 のクロマ サブサンプリング: 画質と帯域幅の使用量のバランスを提供します。

リモート セッション、ローカル デバイス、ネットワークの使用可能なリソース、および提供するユーザー エクスペリエンスに応じて、これらの機能と手法を組み合わせて使用できます。

この記事では、これらの機能と手法の一部を使用して、RDP 経由でグラフィックス データをエンコードして配信するプロセスについて説明します。

ヒント

可能な場合は、ビデオ再生をローカル デバイスにリダイレクトするマルチメディア リダイレクトを使用することをお勧めします。 マルチメディアリダイレクトは、ビデオデータのビットストリームをデコードして画面上の正しい場所にレンダリングするローカルデバイスにビデオデータのビットストリームを送信することで、ビデオ再生のためのより良いユーザーエクスペリエンスを提供します。 この方法では、エンコード構成に関係なく、リモート仮想マシンの処理コストも削減されます。 詳細については、「 リモート セッションでのビデオ再生と呼び出しのマルチメディア リダイレクト」を参照してください。

混合モード

既定では、グラフィックス データはコンテンツに応じて分離されます。 テキストと画像は、ソフトウェア エンコードのみを使用する場合に、さまざまなコンテンツ タイプで最適なエンコード パフォーマンスを実現するために、コーデックを組み合わせてエンコードされます。 このプロセスは混合モードと呼ばれます。

平均して、リモート セッションのグラフィックス データの約 80% はテキストです。 最も低いエンコード コストと最高の品質をテキストに提供するために、RDP はテキスト用に最適化されたカスタム コーデックを使用します。 画像コンテンツは効果的にエンコードするのが難しいため、使用可能なビットレートに適切に適応するコーデックを使用することが重要です。

残りのコンテンツは、画像とビデオに分かれています。

  • イメージは、ローカル デバイスの機能とマルチメディア リダイレクトが有効になっている場合に応じて、AVC/H.264 または RemoteFX グラフィックスでエンコードされたソフトウェアです。 マルチメディア リダイレクトを使用する場合、イメージの AVC/H.264 エンコードは使用できません。

  • ビデオは、AVC/H.264 でエンコードされたソフトウェアです。

AVC/H.264 は、画像の圧縮率が良好で、プログレッシブ エンコードが可能で、ビットレートに基づいて品質を調整できる、広くサポートされているコーデックです。 最新のデバイスで広くサポートされているローカル デバイスのハードウェア デコーダーに依存しています。 ローカル デバイスでハードウェア デコーダーを使用すると、ローカル デバイスでの CPU 使用率が削減され、ユーザー エクスペリエンスが向上します。 デバイスの製造元に問い合わせて、AVC/H.264 ハードウェア デコードがサポートされていることを確認します。

次の図は、ソフトウェア エンコード シナリオで混合モードを使用して RDP 経由でグラフィックス データをエンコードして配信するプロセスを示しています。

混合モードを使用して RDP 経由でグラフィックス データをエンコードして配信するプロセスを示す図。

このプロセスについては、次のように説明します。

  1. フレーム ビットマップは、最初にビデオが含まれているかどうかを検出することによって処理されます。 ビデオが含まれている場合、フレームはビデオ コーデックに送信されます。これはソフトウェア ベースのシナリオでは AVC/H.264 でエンコードされ、フレームはグラフィックス チャネルに渡されます。

  2. フレームにビデオが含まれていない場合、イメージ プロセッサは、差分の変更があるかどうか、モーションが検出されたかどうか、またはキャッシュでコンテンツが使用可能かどうかを判断します。 コンテンツが特定の条件と一致する場合、フレームはグラフィックス チャネルに渡されます。

  3. フレームにさらに処理が必要な場合、画像分類子はテキストと画像のどちらを含んでいるかを判断します。

  4. テキストと画像は、さまざまなコーデックを使用してエンコードされ、コンテンツの種類ごとに最適な品質と最小のエンコード コストを提供します。 エンコードされると、フレームはグラフィックス チャネルに渡されます。

テキストと混合モードの画像に 2 つの別個のコーデックを使用する代わりに、 全画面表示ビデオ エンコード を有効にして、AVC/H.264 ビデオ コーデックを使用してすべての画面コンテンツを処理できます。

全画面表示のビデオ エンコード

全画面表示ビデオ エンコードは、画面コンテンツが主に画像ベースであり、混合モードの代替として使用されるシナリオに役立ちます。 全画面表示ビデオ エンコードは、AVC/H.264 または HEVC/H.265 を使用して、すべてのグラフィックス データを処理します。 その結果、画面コンテンツがテキストベースの場合、混合モードエンコードよりもパフォーマンスが悪くなります。

全画面表示ビデオ プロファイルは、より高いフレーム レートと優れたユーザー エクスペリエンスを提供しますが、リモート仮想マシンとローカル デバイスの両方でより多くのネットワーク帯域幅とリソースを使用します。 3D モデリング、CAD/CAM、ビデオの再生や編集などのアプリケーションにメリットがあります。

HEVC/H.265 と AVC/H.264 ハードウェア アクセラレーションの両方を有効にしても、HEVC/H.265 がローカル デバイスで使用できない場合は、代わりに AVC/H.264 が使用されます。 HEVC/H.265 では、AVC/H.264 と比較して、同じビデオ品質で、または同じビットレートで品質が向上した場合と比較して、25 ~ 50% のデータ圧縮が可能です。

AVC/H.264 では、GPU アクセラレーションがなくても全画面表示のビデオ エンコードを有効にできますが、HEVC/H.265 には互換性のある GPU 対応リモート仮想マシンが必要です。

詳細については、「 Azure Virtual Desktop の GPU アクセラレーションを有効にする」を参照してください。

ハードウェア GPU アクセラレーション

Azure Virtual Desktop、Windows 365のクラウド PC、および Microsoft Dev Box では、リモート デスクトップ プロトコル (RDP) を使用してアプリのパフォーマンスとスケーラビリティを向上させるために、レンダリングとエンコードにおけるグラフィックス処理装置 (GPU) アクセラレーションがサポートされています。 GPU アクセラレーションは、グラフィック デザイナー、ビデオ エディター、3D モデラー、データ アナリスト、視覚化スペシャリストによって使用されるアプリケーションなど、グラフィックスを集中的に使用するアプリケーションにとって非常に重要です。

GPU アクセラレーションには、ユーザー エクスペリエンスを向上させるために連携する 2 つのコンポーネントがあります。

  • GPU 高速アプリケーション レンダリング: GPU を使用してリモート セッションでグラフィックスをレンダリングします。

  • GPU 高速フレーム エンコード: RDP は、ローカル デバイスへの転送用にレンダリングされたすべてのグラフィックスをエンコードします。 画面の一部が頻繁に更新されると、AVC/H.264 でエンコードされます。

ワークロード内の画面コンテンツが主に画像ベースの場合は、 全画面表示ビデオ エンコード を有効にして、すべての画面コンテンツを処理して、より高いフレーム レートと優れたユーザー エクスペリエンスを提供することもできます。

詳細については、「 GPU アクセラレーションを有効にする」を参照してください。

4:2:0 および 4:4:4 のクロマ サブサンプリング のサポート

クロマ値は、エンコードに使用される色空間を決定します。 既定では、クロマ値は 4:2:0 に設定されており、画質とネットワーク帯域幅のバランスが取られます。 AVC/H.264 を使用する場合、画質を向上させるためにクロマ値を 4:4:4 に増やすことができますが、ネットワーク帯域幅も増加します。 GPU アクセラレーションを使用してクロマ値を変更する必要はありません。

詳細については、「 Advanced Video Coding (AVC) ビデオ コーデックを使用してクロマ値を 4:4:4 に増やす」を参照してください。