4つのベンダー。4つの固定機能シリコンのブロック。仕事はひとつ。ピクセルのフレームを、5ミリ秒未満で、数キロバイトのH.265やAV1に変え、それを毎秒60回、1枚も落とさずに行うことです。NVIDIA、AMD、Intel、Appleが、低遅延のストリーミングで実際にどう違うのか、そしてRemioが実行時に、どのように適切なものを選ぶのかを紹介します。
リモートデスクトップでハードウェアエンコーダーが重要な理由
高速なCPUコア1つで、libx264で1080pのフレーム1枚をエンコードしてみてください。最近のAppleのMシリーズやRyzen 7000なら、ultrafastのプリセットで、およそ8〜12ミリ秒、画質を保とうとするものなら、もっとかかります。それなら許容できそうに聞こえますが、予算を思い出してください。60 FPSでは、1フレームあたり16.6ミリ秒です。そこに、キャプチャ、パケット化、ペーサーのキュー、ネットワークへの送出、デコード、描画を加えます。CPUでのエンコードは、遅くするだけではありません。遅延の予算をまるごと食いつぶし、1080p60を超えると、フレームを落とします。
ハードウェアエンコーダーは、同じ仕事に、固定機能のシリコンを専用に割り当てて解決します。NVIDIAは、このブロックをNVENCと呼びます。AMDはAMF(より正確には、AMFが動かすVCNエンジン)と呼びます。IntelはQuickSync(iGPUの中のMedia Engine)と呼びます。AppleはVideoToolbox(これはAPIで、シリコンは、MシリーズとAシリーズのチップにあるMedia Engine)と呼びます。4つとも、理由はひとつです。最近の画面、最近のGPU、最近のユーザーが期待する遅延とフレームレートの目標を、ソフトウェアのエンコードでは満たせないからです。
Remioに特有の事情として、エンコーダーで節約したすべてのミリ秒は、ユーザーが、ペーサー、ネットワーク、レンダラーで取り戻すミリ秒です。私たちの公開している遅延の予算は、LANで約8 msの処理(残りはディスプレイ自身の60 Hzのリフレッシュ周期)を目標にしており、エンコード時間は、最も大きな変数です。エンコーダーの選択と、その設定が、そこから先のすべてを左右します。
4つのベンダーを、ひと目で
それぞれを深く掘り下げる前に、何を比べているのかを理解しておくと役立ちます。これらは互換性のあるライブラリではなく、ダイの上にある物理的なブロックで、それぞれが独自のISA、独自のドライバースタック、独自の癖、そして独自の複数年のロードマップを持っています。対応するコーデック、生み出す画質、達成する遅延、消費電力、そして存在するプラットフォームが異なります。
- NVENCは、2012年(Kepler)以降の、すべてのNVIDIA GeForce、Quadro、RTXに搭載されています。世代はアーキテクチャのファミリーに結びついています。Keplerが第1世代、Ada Lovelaceが第8世代です。Hopperのデータセンター向けの製品は、別のペースです。
- AMFは、古いVCEに代わった、AMDのVCN(Video Core Next)エンジンを提供します。すべてのVega、RDNA、RDNA2、RDNA3のGPUと、新しいAPUで利用できます。
- QuickSyncは、2011年のSandy Bridge以降のIntelのiGPUに搭載されており、地球上で最も広く展開されたハードウェアエンコーダーです。ArcのディスクリートGPUは、同じアーキテクチャをスケールアップしたものを使っています。
- VideoToolboxは、AppleのAPIです。その下のシリコンは、すべてのApple SiliconのMac、A6以降のすべてのiPhone、すべてのiPadに組み込まれたMedia Engineです。Mシリーズのチップは、SKUによって、1つか2つのエンジンを搭載しています。
NVENC — NVIDIAの、8世代にわたる洗練
NVENCは、ほとんどのストリーミングソフトウェアが、基準にして測定するエンコーダーです。ひとつには、NVIDIAに宣伝の予算があるためで、もうひとつには、このシリコンが、この10年、本当に優れていたためです。このブロックは、8つの世代を経ました。
- 第1〜3世代(KeplerからMaxwell、2012〜2014年):H.264のみで、ストリーミングには使えましたが、画質はlibx264に明らかに劣っていました。
- 第4世代(Pascal、GTX 10シリーズ):H.265エンコードを追加。同じビットレートで、NVENCの画質が、libx264のfastプリセットに追いつき、おそらく上回った世代です。
- 第6世代(Turing、RTX 20シリーズ、GTX 16シリーズ):よく引き合いに出される「Turing NVENC」の飛躍。低ビットレートでの画質が向上し、ライブの用途で、CPUエンコードのほうが意味のある差で優れているというふりを、配信者がやめるほどになりました。
- 第7世代(Ampere、RTX 30シリーズ):洗練。ワットあたりの画質は、Turingとほぼ同等です。
- 第8世代(Ada Lovelace、RTX 40シリーズ):NVIDIAで初めて、ハードウェアのAV1エンコードに対応し、上位のSKUには、デュアルエンコーダーエンジンも。AdaのNVENCは、libaom-av1のmediumプリセットに匹敵する画質のAV1を、CPUコストのごく一部で処理できます。
低遅延の用途では、NVENCは、3つの関連するレート制御モードを公開しています。CBRにlow-latencyのチューニングとp1プリセット(最速)が、標準の構成です。出力レートが決まっていて、先読みは1フレーム、Bフレームなし。Remioは、Windowsでhevc_nvencを動かすとき、まさにこれを使います。Ada Lovelaceでの、1080p60 H.265のエンコード時間は、常に1〜3 msです。
歴史的な落とし穴がひとつあります。コンシューマー向けのNVENCは、長年、NVIDIAのドライバーによって、同時エンコードセッションが3つに制限されていました。その制限は、2023年に8に引き上げられ、その後事実上なくなりました。それを警告している古いフォーラムのスレッドを読んでいるなら、その警告はもう当てはまりません。
AMF — ついに追いついた、AMDの挑戦者
AMDのAMF(Advanced Media Framework)はAPIで、その下のエンジンは、2つの異なるアーキテクチャを経てきました。古いVCE(Video Coding Engine)は、2012年のGCN時代のカードに搭載され、エンコーダーの直接比較では、毎回弱点とされてきました。同じビットレートで、NVENCより明らかに画質が悪く、特に動きの多いコンテンツで顕著でした。AMDも、配信コミュニティも、それを知っており、ベンチマークも裏づけていました。
その状況は、Vegaで導入され、続くすべての世代で洗練されたVCN(Video Core Next)で変わりました。
- VCN 1.0〜2.0(Vega、RDNA1):H.264とH.265で、画質が、ついにNVENCのPascal/Turingに、ごくわずかの差まで迫りました。
- VCN 3.0(RDNA2、RX 6000シリーズ):特に低いビットレートで、画質が大きく向上しました。私が、ゲーム配信におすすめできると感じる、最初のAMDの世代です。
- VCN 4.0(RDNA3、RX 7000シリーズ):NVIDIA Adaと並んで、AV1エンコードを追加。上位のSKUには、並列セッション向けの2つのエンコーダーも。AV1の画質は、第三者のベンチマークで、NVIDIAのAV1に匹敵します。
低遅延のストリーミングでは、AMFは、ultralowlatencyの使用プリセット、speedの品質プリセット、cbrのレート制御モードを公開しています。Remioは、hevc_amfで、その3つすべてを使います。ストリーミングのアーキテクチャのノートに記載している、同じ3点のプリセットです。RDNA3での、1080p60 H.265のエンコード時間は、通常2〜4 msです。RDNA2は、約3〜5 msです。古いVCN 1.x時代のカードは、5〜7 msに近くなります。予算の範囲内ではありますが、キーフレームのスパイクに対する余裕は小さくなります。
5年のあいだ、AMDのエンコーダーは、笑い話の種でした。RDNA2がそれを直し、RDNA3がAV1で競争力を持たせました。ストリーミングエンコーダーの二強は、三強になり、それは誰にとっても良いことです。
QuickSync — 目立たない、普及の王者
QuickSyncは、おそらく、すでにお持ちのエンコーダーです。2011年のSandy Bridge以降の、グラフィックスを内蔵するすべてのIntelのCPUに搭載されています。10年以上にわたる、ノートPC、NUC、オフィスのデスクトップに、ハードウェアの映像エンコードが眠っていたのです。ユーザーが、ディスクリートのGPUが必要だと思い込んでいたせいで。そんな必要はありませんでした。
アーキテクチャは、IntelのiGPUの系譜とともに進化してきました。
- Sandy BridgeからSkylake(2011〜2015年):H.264のみで、画質は平凡でしたが、ノートPCとしては、遅延と電力でクラス最高でした。
- Kaby LakeからCoffee Lake(2016〜2018年):H.265、10ビット、4Kエンコードを追加。
- Ice Lake以降(2019年〜):Gen11/Gen12のXe iGPUで、画質が劇的に向上。多くのベンチマークが、Gen12のQuickSyncを、NVENC Turingとわずか数パーセントの差と評価しています。
- Arcディスクリート(2022年〜):Intel初のディスクリートGPUのラインアップ。同じXe-HPGアーキテクチャをスケールアップしたもので、AV1エンコードに対応。Arcは、NVIDIA AdaやAMD RDNA3より先に、ハードウェアのAV1を搭載した初めてのコンシューマーGPUで、画質は意外なほど優れています。Intel Arc A380は、純粋なAV1のスループットあたりの価格では、いまも驚くほどお買い得です。
熱の特性は、QuickSyncの静かな強みです。すでにSoC上にあるiGPUの中にあるため、使うことによる追加のコストは、エンコードのブロックだけです。ディスクリートGPUを起こす必要も、GDDR6のメモリコントローラーを動かす必要もありません。ThinkPadやNUCでは、QuickSyncは、システム全体で約4分の1の電力で、NVENCに匹敵する画質を出します。RemioのWindowsホストでは、QuickSyncは、NVENCとAMFに次ぐ、3番目の選択肢です。劣っているからではなく、ディスクリートのGPUを持つユーザーは、たいてい、iGPUを他の処理のために空けておきたいからです。
VideoToolbox — Appleシリコンの、統合されたMedia Engine
Appleは、NVIDIAのようには、自社のハードウェアエンコーダーにブランド名をつけて売り込みません。APIはVideoToolboxで、シリコンはMedia Engineという、Appleが設計したブロックで、すべてのMシリーズのMacと、A6以降のすべてのiPhone/iPadのSoCに搭載されています。
Media Engineは、SKUによって、搭載数が異なります。
- M1、M2、M3:Media Engineが1つ。
- M1 Pro/Max、M2 Pro/Max、M3 Pro/Max:Media Engineが2つ。
- M1 Ultra、M2 Ultra:Media Engineが4つ(結合したダイごとに2つ)。
- M3 Max(16コアCPU):Media Engineが2つ。
- M4ファミリー:H.265のスループットを高めた、新しいMedia Engine。
各Media Engineは、H.264、H.265、ProResのエンコードとデコードを、ハードウェアで処理します。ProResのエンコードは、動画編集者にとっての目玉機能で、ほかのコンシューマー向けチップは対応していません。しかしストリーミングで重要なのは、効率の良いH.265 main10エンコードと、驚くほど低いエンコード遅延です。
注目すべき唯一の欠落は、出荷されているどのAppleシリコンにもAV1エンコードがないことです。Mシリーズのチップは、M3以降でAV1をデコードできますが、エンコードはできません。Macからのストリーミングでは、当面、H.265が実用的なデフォルトです。
Appleが本当に勝っているのは、電力効率です。M2 Proで、4K60のH.265を30 Mbpsでエンコードするとき、Media Engine全体の消費電力は、およそ3〜5ワットです。RTX 4070での、同等のNVENCの処理は、システム全体で35ワット近くを消費し、そのほとんどは、エンコーダーのブロックではなく、ディスクリートGPUのアイドル時の下限です。クライアントを待って、24時間365日、電源が入ったままのMac miniのホストにとって、これは、「電気代にほとんど表れない」と「はっきり表れる」の違いです。
並べて比較
4つのエンジンを、同じ軸で並べます。遅延の数値は、1080p60 H.265の超低遅延プリセット、Bフレームなし、1フレームのVBVで、Remioの構成です。画質は、8 MbpsのCBRでの、知覚的な大まかな順位で、絶対的な差は小さいです。
| 項目 | NVENC(Ada) | AMF(RDNA3) | QuickSync(Arc / Gen12以降) | VideoToolbox(M3以降) |
|---|---|---|---|---|
| H.264 | あり | あり | あり | あり |
| H.265(HEVC) | あり | あり | あり | あり(main10) |
| AV1エンコード | あり | あり | あり | なし |
| ProResエンコード | なし | なし | なし | あり |
| 最大解像度 | 8K H.265 | 8K H.265 | 8K(Arc)、4K(iGPU) | 8K H.265 |
| 1080p H.265での最大FPS | ~480 | ~360 | ~360 | ~600(M3 Max) |
| エンコード時間、1080p60 H.265 | 1〜3 ms | 2〜4 ms | 2〜4 ms | 2〜3 ms |
| 消費電力、4K60 H.265 | システム全体で~35 W | システム全体で~30 W | システム全体で~8 W(iGPU) | ~5 W |
| 画質の順位 @ 8 Mbps CBR | 同率1位 | 同率2位 | 同率2位 | 同率1位 |
| プラットフォーム | Windows、Linux | Windows、Linux | Windows、Linux、macOS(Intel Mac) | macOS、iOS、iPadOS、tvOS |
| 同時セッション数 | 無制限 | 無制限 | 無制限 | 無制限 |
率直にまとめると、リモートデスクトップのストリーミングが実際に使う設定(CBR、低遅延、Bフレームなし)では、4つとも、十分な余裕を持って足りています。差別化の要素は、AV1への対応(NVIDIA / AMD / Intelにあり、Appleにはなし)、電力効率(Apple、次にIntelのiGPU、そのほか)、そしてプラットフォームでの提供状況(WindowsのホストでVideoToolboxを、MacでNVENCを選ぶことはできません)です。
Remioが実行時に選ぶもの
Remioは、起動時にホストの能力を調べ、決まった優先順位でエンコーダーを選びます。WindowsホストとMacホストは、同じ選択のロジックに従います。
Windowsホストの場合:
- NVENC(
hevc_nvenc/h264_nvenc):NVIDIAのGPUがあり、ドライバーが応答すれば、最初に選ばれます。最も広い範囲のハードウェア世代で、一貫して低遅延のエンコーダーであるため、優先されます。 - AMF(
hevc_amf/h264_amf):VCNを搭載したAMDのディスクリートGPUやAPUがあれば、2番目に選ばれます。usage=ultralowlatency、quality=speed、rc=cbrで設定します。 - QuickSync(
hevc_qsv/h264_qsv):IntelのiGPUがあれば、3番目に選ばれます。私たちのパイプラインでは機能的に同等ですが、ディスクリートのGPUが使えるなら、iGPUは空けておくほうを優先します。 - libx264のCPUフォールバック:ハードウェアエンコーダーがどれも応答しない場合にだけ選ばれます。遅延の予算に収めるため、720p60か1080p30に制限されます。
Appleのホストの場合:VideoToolboxが唯一の選択肢で、私たちが望む唯一のものです。対応するすべてのMac(macOS 15以降)のMedia Engineは、H.265 main10を、そのまま処理します。フォールバックの経路は必要ありません。
コーデックの優先順位は、まずハードウェアH.265、次に万能のフォールバックとしてH.264です。これは、すべてのプラットフォームで、エンドツーエンドです。Remioは、現時点でAV1を使いません(そのためのホストでのエンコード、クライアントでのデコード、コーデックのネゴシエーションが、パイプラインにありません)。技術的にはAV1ができるハードウェアでも、H.265を貫きます。LANでのボトルネックは、ビットレートではなく、エンコードの遅延だからです。
画質と遅延のトレードオフ
どのハードウェアエンコーダーも、同じいくつかのつまみを公開しており、どのつまみも、画質と遅延を、同じ方向に引き換えにします。Remioの構成は、遅延のダイヤルの、最も攻めた端にあります。リモートデスクトップは、定義上、リアルタイムのアプリケーションで、20 msより古いフレームは、理想よりわずかにぼやけたフレームより悪いからです。
- CBRとVBR。可変ビットレートは、効果のある場所にビットを使うことで、同じ平均レートで、より良い画質を生みます。しかし、VBRは、フレームごとのサイズも予測できなくし、それはペーサーのキューを予測できなくし、遅延を予測できなくします。Remioは、どこでもCBRを使います。画質のコストは小さく、遅延の一貫性の恩恵は大きいです。
- Bフレーム。Bフレームは、過去と未来の両方のフレームを参照するため、デコーダーは、Bフレームをデコードする前に、未来のフレームが届くのを待たなければなりません。ビデオ・オン・デマンドなら問題ありませんが、リアルタイムには致命的です。Remioは、すべてのプラットフォームの、すべてのコーデックで、Bフレームを無効にしています。
- GOP/キーフレームの間隔。GOPが長い(キーフレームの間のフレームが多い)ほど、圧縮効率が上がります。GOPが短いほど、パケットロスからの回復が速くなります。Remioは、事実上無限のGOPで動き、デコーダーが損失を報告したときに、ホストに新しいキーフレームを要求します。失われたパケットは、まだ間に合うなら、すぐに再送されます。間に合わなければ、Remioは待たずにそれをスキップして、新しいフレームを要求します。これは、最新のフレームだけを描画するという、私たちのストリーミングの考え方に合っています。
- 先読み。NVENC、AMF、QuickSyncはすべて、適応量子化のための、複数フレームの先読みに対応しています。先読みの1フレームごとに、丸1フレームの遅延が加わります。Remioは、先読みなし、または1フレームで動かしています。どのエンコーダーでも、最も低い設定です。
- VBVバッファー。Video Buffering Verifierのウィンドウとは、エンコーダーが、目標のレートに戻る前に、どれだけのビットを「前借り」してよいかを決めるものです。VBVが大きいほど、画質はなめらかになります。VBVが小さいほど、レート制御が厳密になり、遅延が低くなります。Remioは1フレームのVBV、つまりビットレートをフレームレートで割った値を使います。これは、許される最小の値です。
このパターンは、4つのベンダーすべてで一貫しています。リアルタイムの低遅延は、制約付きの最適化です。オフラインのエンコードでは、先読みとBフレームが買ってくれる、数パーセントの画質を諦めるかわりに、リアルタイムの操作が求める、予測可能な遅延を手に入れます。出荷されているすべてのストリーミング製品、つまりRemio、Parsec、NVIDIA GeForce NOW、Xbox Cloud Gamingが、同じ方向に、同じ引き換えをしています。
ユーザーであるあなたが、実際に気にすべきこと
最後まで飛ばして読んだ方へ:最近のどのGPUのハードウェアエンコーダーでも、リモートデスクトップには十分です。
リアルタイムの構成での差は、どんな妥当なベンチマークのノイズの下限よりも小さいのです。Pascal世代のGTX 1060のユーザーは、RTX 4090のユーザーと同じRemioの体験を得ます。どちらも、約8 msの処理遅延(残りはディスプレイ自身の60 Hzのリフレッシュ周期)で、120 FPSのパイプラインを飽和させ、どちらも、LANのビットレートでは区別のつかない出力を生みます。
例外を、影響が出る頻度の順に挙げます。
- AV1対応のハードウェアは、一般に、遅いネットワークで役立ちます。ホテルのWi-Fiやモバイルのホットスポットで、Ada / RDNA3 / Arcのホストと、M3以降やRTX 40シリーズのクライアントなら、それを使うツールでは、同じ画質で、約25パーセント多くの余裕が得られます。LANでは、何もありません。RemioはまだAV1を使いません。パイプライン全体がエンドツーエンドでH.265なので、現時点では、これはRemioの利点ではなく、ベンダー側の利点です。
- AppleシリコンのMacは、驚くほど優れたホストです。Media Engineの低遅延、優れたH.265、3〜5 Wという消費電力で、Mac miniやStudioは、常時稼働のストリーミング元として、買えるものの中でも最高のひとつです。AV1エンコードがないことが唯一の欠点ですが、LANでは関係ありません。
- Intel Arc A380は、AV1では、不合理なほどお買い得です。約$120で、$400未満の他のどれよりも優れたエンコーダーのブロックが手に入ります。
- libx264のCPUフォールバックは、実際に機能します。ハードウェアエンコーダーがなくても、たとえば古いノートPC、iGPUのないサーバーでも、Remioは動きます。ただし、4K・60ではなく、CPUのコアを1つ燃やすことになります。
それらの極端なケースを除けば、正しい答えは、いちばんシンプルなものです。どのみち買うGPUを使えばいいのです。最近のすべてのベンダーが、同じ能力、同じ低遅延のプリセット、同じ画質の範囲に収束しています。Remioが実行時に適切なものを選ぶので、考える必要はありません。リモートデスクトップのセッションを開いた、本来の目的、つまりコードを書く、動画を編集する、サーバーを直す、カフェから修正を反映する、といったことに取りかかってください。
それが、固定機能のシリコンの、まさに肝心なところです。ただ動いて、意識しなくなるのです。