次の方法で共有


リモート デスクトップ プロトコル経由のグラフィックスのエンコード

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

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

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

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

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

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

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

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

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

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

  • 複数のコーデックのサポート: ローカル デバイスのハードウェア デコーダーを使います。 コーデックには、Advanced Video Coding (AVC) ビデオ コーデック (H.264 とも呼ばれます) と、高効率ビデオ コーディング (HEVC) ビデオ コーデック (H.265 とも呼ばれます) が含まれます。 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 への引き上げに関する記事をご覧ください。