ハードウェアエンコード
hardware video encoding / ハードウェアエンコード
映像の圧縮を、CPUの汎用計算ではなく専用の回路で行う方式です。NVIDIAのNVENC、IntelのQuick Sync Video、放送機器のASICやFPGAが代表で、速さと消費電力で有利な代わりに画質と設定の自由度で制約があります。
- 対になる方式
- ソフトウェアエンコード(x264、x265などをCPUで動かす)
- NVIDIAの実装
- NVENC。GPU内の専用回路で、CUDAコアとは別に動く
- NVENCのAV1エンコード
- Ada Lovelace世代(第8世代NVENC)以降が対応。Ampere世代は非対応
- NVENCの4:2:2エンコード
- Blackwell世代(第9世代NVENC)でH.264・HEVCとも対応
- NVENCの同時セッション数
- GeForce系は最大12(NVIDIAの対応表の値)
- Intelの実装
- Quick Sync Video。CPU内蔵グラフィックスのメディアエンジンで処理する
- IntelのAV1エンコード
- Arc Aシリーズ世代から対応
- Intelの開発用API
- Intel VPL(旧oneVPL)。Intel Media SDKの後継で、Media SDKは更新終了
- 放送・業務用の実装
- ASICやFPGAを使った専用エンコーダー装置
同じ動画を書き出したのに、片方は数分、片方は数十分かかる。差はエンコードを専用回路でやったかCPUでやったかにあります。速いほうがいつも正解というわけではなく、用途によって選び分ける場所です。
ハードウェアエンコードが使われる場面
いちばん多いのがライブ配信です。1倍速より速く圧縮し続けなければ配信が破綻するため、CPUの負荷を上げずに処理できる専用回路が使われます。OBS StudioでNVENCやQuick Syncを選ぶ設定は、ゲーム実況でCPUを画面の描画に回したまま配信するための選択です。
もう1つが大量の変換です。アーカイブの数千本を配信用に作り直す、1本の素材から複数のビットレートを同時に書き出すといった作業では、処理時間がそのまま費用になります。クラウドの変換サービスにも、専用回路を使った高速の処理モードが用意されているものがあります。
放送や業務用の伝送装置では、GPUではなくASICやFPGAを積んだ専用機が使われます。エンコードの遅延が数十ミリ秒の単位で決まり、入力が途切れず、同じ設定で同じ結果が出ることが求められる場所です。局内の中継回線や、送出系のエンコード装置がこれにあたります。
ハードウェアエンコードとソフトウェアエンコードの違い
ソフトウェアエンコードは、x264やx265のようなエンコーダをCPUで動かします。動き探索の範囲、参照フレームの数、レート制御の細かい挙動まで設定でき、時間をかけるほど同じビットレートでの画質が上がります。一方で、CPUを占有し、処理時間は長くなります。
ハードウェアエンコードは、回路の中に処理の手順が固定されています。そのため速くて消費電力が低い代わりに、使える機能とパラメータが世代ごとに決まっており、細かい調整が効きません。同じビットレートで比べると、じっくり時間をかけたソフトウェアエンコードのほうが画質で有利になることが多く、差はビットレートを絞るほど開きます。
判断の目安は次の通りです。
- 実時間で処理し続ける必要があるなら、ハードウェアエンコード
- 同じ画質をより低いビットレートで出したいなら、ソフトウェアエンコード
- 本数が多く、1本あたりの処理時間が費用に直結するなら、ハードウェアエンコード
- 納品先の仕様が細かく、特定のGOP構造やレート制御を指定されているなら、対応を確かめたうえでソフトウェアエンコード
FFmpegでは、エンコーダの名前を変えるだけで切り替えられます。libx264がCPU、h264_nvencがNVENC、h264_qsvがQuick Syncです。同じコーデックでも、指定できるオプションはエンコーダごとに違います。
ハードウェアエンコードで世代を確かめるべき点
対応する機能はGPUの世代で変わるため、製品名だけで判断できません。NVIDIAの対応表では、AV1のエンコードはAda Lovelace世代の第8世代NVENC以降が対応し、その前のAmpere世代は非対応と示されています。4:2:2のエンコードはさらに新しく、H.264とHEVCのどちらもBlackwell世代の第9世代NVENCで対応と示されています。放送や業務用の素材で4:2:2を扱うなら、ここは確認が要ります。
同時に走らせられる本数にも上限があります。GeForce系のカードは同時セッション数が最大12と示されており、それ以上のチャンネルを1枚で回すことはできません。NVENCの数自体もチップによって1基から3基に分かれています。
IntelのQuick Sync Videoも同じ構造です。AV1のエンコードはArc Aシリーズの世代から対応で、それ以前の内蔵グラフィックスでは使えません。開発の側では、Intel Media SDKが更新を終えてIntel VPL(旧oneVPL)が後継になっており、古い資料のまま実装を進めると行き止まりになります。
よくある質問
NVENCとQuick Syncはどちらが速いですか
条件によって変わるため、一方が常に速いとは言えません。判断材料になるのは、必要なコーデックとクロマフォーマットに世代が対応しているか、同時に何本回すのか、GPUが他の処理と取り合いにならないかです。世代の対応表を先に確かめてから比較するのが確実です。
ハードウェアエンコードは画質が悪いのですか
同じビットレートで、時間をかけたソフトウェアエンコードと比べると不利になることが多いです。ただしビットレートを上げれば差は詰まります。配信のように実時間で処理する必要がある場面では、ビットレートで補うほうが現実的です。
納品用のファイルをハードウェアエンコードで作ってもいいですか
納品仕様が許していれば使えます。確かめる点は、指定されたプロファイルとレベル、クロマフォーマット、GOP構造、レート制御の方式に対応しているかどうかです。オールイントラや4:2:2 10bitのような指定は、世代によっては専用回路で出せないことがあります。
似ている形式との違い
関連する用語
最終更新