コンテンツにスキップ

英文维基 | 中文维基 | 日文维基 | 草榴社区

利用者:BitMaster206/sandbox

下記: en:NVIDIA NVENCの翻案

NVIDIA NVENCは、NVIDIAが提供するビデオエンコード・CPU負荷軽減用のGPU機能である[1]NVIDIA GeForce 600シリーズ(Kepler)から提供されている[2]

これが提供するエンコーダーはOBS Studio[3]Bandicam[4][5]といったライブストリームソフト・レコーディングソフトの他、Adobe Premiere[6][7]DaVinci Resolveのような動画編集ソフトウェア、FFmpeg[8][9]、GeForce Experience等のゲームキャプチャーソフトなどでサポートされている。

また、エンコーダとしての機能を持つNVENCと同時に、ハードウェアデコーダを提供するNVDECも存在する。[1]

バージョン

[編集]

Keplerでの初搭載以降、改良が加えられ続けている。

NVENCのバージョン別機能差分[10][11]
GPU ハードウェア H.264 (AVC)

(H.264では、NVENCはBフレームとして最大解像度4096x4096、最大8ビット深度の映像のみサポートする)

H.265 (HEVC) AV1
世代 GPU コードネーム 対応 クロマ ロスレスエンコード クロマ ロスレスエンコード 画面解像度 色深度 Bフレーム AV1
4:2:0 4:4:4 4:2:0 4:4:4
1世代 GK110 Yes No No 未対応 未対応
GK107
GK106
GK104
2世代 GM107 Yes Yes Yes 未対応 未対応
3世代 GM206 Yes Yes Yes Yes 不明 No 4096x4096 8ビット No
GM204 No
GM200
4世代 GP108 未搭載
GP107 Yes Yes Yes Yes Yes Yes 8192 x 8192 10-bit No 未対応
GP106
GP104-2xx+
GP104-1xx
GP102
GP100 4096 x 4096
5世代 GV10x 8192 x 8192
TU117
6世代 TU116 Yes
TU106
TU104
TU102
7世代 GA107 Yes Yes Yes Yes Yes Yes Yes Yes Yes
GA106
GA104
GA102
GA100 非搭載
8世代 AD107 Yes Yes Yes Yes Yes Yes 8192 x 8192 10-bit Yes Yes Yes
AD106
AD104-250
AD104-400
AD103
AD102
世代 GPU コードネーム 対応 クロマ ロスレスエンコード クロマ ロスレスエンコード 画面解像度 色深度 Bフレーム AV1
4:2:0 4:4:4 4:2:0 4:4:4

第1世代(Kepler GK1xx)

[編集]

第1世代NVENCはKepler世代のすべてのGPUに搭載され、H.264ハイプロファイル(YUV420, I/P/Bキーフレーム,CAVLC/CABAC)とH.264 SVC 一時エンコードVCE、および Display Encode Mode(DEM)に対応した。

NVIDIAのドキュメントによれば、このエンコーダーはピーク性能時にリアルタイムで1920x1080の映像を最大8倍(ベースラインでは30Hzを1倍とする)のスループットでエンコードできる。あくまでこれは理論値で、この理論値はNVENC高パフォーマンスプリセット(圧縮効率やクオリティを最小に下げた状態)を利用した場合の数値である。実際の性能はプリセットやユーザーが指定したプリセット・設定、GPUとメモリの周波数に依存する。高クオリティプリセット使用時には若干の性能低下が見られるが、 圧縮アーティファクトは減少する。

第2世代(第1世代Maxwell GM107)

[編集]

第2世代NVENCは第1世代Maxwellアーキテクチャの一部GPUに搭載された。この世代では高パフォーマンスHP444プロファイル(YUV4:4:4, 予測敵ロスレスエンコード)に対応し、エンコーダースループットが最大16倍(1080p 480Hzに相当)まで向上した。

ただし、Maxwell GM108にはNVENCが搭載されていない。

第3世代(第2世代Maxwell GM20x)

[編集]

第3世代NVENCは第2世代MaxwellアーキテクチャのGPUに搭載された。この世代ではH.265の対応が始まったほか、H.264のエンコーダーのスループットが4K60Hzまで向上した。しかし、H.265エンコードではBフレームへの対応がなされず、I/Pフレームのみの対応となった。最大のNVENC H.265 コーディングツリーユニット(以下、CU)のサイズは32(H.265標準では64が最大である)となり、最低値は8である。

H.265によるエンコードにはサンプル・アダプティブ・オフセットがない。また、アダプティブクオンタイゼーション、ルック・アヘッド・レートコントロール、アダプティブ・Bフレーム(H.264における)、そしてアダプティブGOPといった機能はNVIDIA Video Codec SDK 7のリリースにより追加された。これらの機能にはCUDAによるハードウェアアクセラレーションが用いられている。

SDK 7ではアダプティブ・クオンタイゼーションに次の2つ形式を利用する。

一般向けGeForceカードと一部のローエンドQuadroカードでは同時にエンコードできるジョブの3つまでに制限されている。これは上位グレードのQuadroカードを利用することで回避できる。

第4世代(Pascal GP10x)

[編集]

第4世代NVENCはPascalアーキテクチャのGPUに搭載された。この世代ではH.265 Main10 10ビットハードウェアエンコーディングに対応した。この変更により前世代のH.264/H.265エンコーダーと比べ、4K動画において2倍ほどの性能向上が見られた。またH.265における8Kエンコード、4:4:4の彩度比でのサブサンプリング、ロスレスエンコード、サンプルアダプティブオフセットに対応した。

NVIDIA ビデオコーデックSDK 8には、Pascal独自の機能である重み付き画素値予測(CUDAベース)が追加された。この機能はH.264のBフレームが規定されたエンコードセッションではサポートされていない。

H.265エンコードにおけるBフレームの対応はされていない。また、最大CUサイズは32×32である。

NVIDIA GT1030とモバイル版Quadro P500に搭載されているGP108チップでは、NVENCエンコーダがサポートされていない。

ラップトップ向け製品では、Maxwell GM108チップ、及びPascal GP108チップをベースとした世代のNVIDIA MX グラフィックスでのNVENCサポートが省かれている他、GeForce MX350に搭載されたNVIDIA GP107チップでは製造過程でNVENCエンコーダが無効化されている。

第5世代(Volta GV10x/Turing TU117)

[編集]

この世代のNVENCは第4世代のNVENCと同様の機能を有する。

引き続き、H.265におけるBフレームの対応が見送られている。

GeForce MXなどの携帯機向けグラフィックスでは、TU117チップを搭載するGeForce MX450のNVENCハードウェアエンコーダが製造過程で無効化されているが、GeForce MX550ではこの機能が製造過程で有効化されている。

第6世代(Turing TU10x/TU116)

[編集]

第6世代NVENCはH.265エンコードにおける、8K30FPSエンコード、複数フレームからの参照を含むBフレームサポート、アルファチャンネルサポートが追加された他、H.265における25%のビットレート保持とH.264における15%のビットレート保持のサポートが追加された。ただし、NVIDIA GeForce GTX1650の初期リリースは前世代のNVENCを搭載したため、この世代からは除外されているが、2020年にGTX1650カードのNVENCがこの世代のものにアップデートされた。GTX1650 SuperはTU117チップではなくTU116チップを使用していたため、当初よりこの世代のNVENCを使用していた。

第7世代(Ampere GA10x)

[編集]

この世代のNVENCはTuring世代のものと基本的には同等だが、NVDECに(フィルムグレインを含む)AV1ハードウェアデコードサポートが追加されている。

エントリークラスの携帯機向けグラフィックスでは、GA107チップをベースとしたGeForce MX570にて2つのバージョンが存在している。そのうちひとつ(GeForce MX570 A)ではハードウェアエンコーダとデコーダが製造過程で無効化されている。

第8世代(Ada Lovelace AD10x)

[編集]

NVIDIAはAda Lovelace世代のグラフィックボード2搭載されるこの世代のNVENCにて、8K・10ビット深度・60FPS対応を増やしたAV1ハードウェアエンコーダを追加することを告知した。

OSによるサポート

[編集]

NVENCチップの動作にはデバイスドライバの対応が必要である。このドライバはNVENCの動作に際し複数のインターフェースを追加する。NVENCチップへのアクセスにはプロプライエタリのNVENC APIが必要である。

NVENCドライバはNVIDIA GeForceドライバに含まれている。

NVENCはMicrosoft WindowsLinuxにてサポートがされている。ただし、NouveauはNVENCに対応していない。

  1. ^ a b Video Codec SDK” (英語). NVIDIA Developer. 2024年11月10日閲覧。
  2. ^ NVENC Application Note” (英語). NVIDIA Docs. 2024年11月10日閲覧。
  3. ^ Hardware Encoding | OBS”. obsproject.com. 2024年11月10日閲覧。
  4. ^ Company, Bandicam. “Hardware Acceleration: NVIDIA NVENC/HEVC, Intel, AMD VCN” (英語). Bandicam Screen Recorder. 2024年11月10日閲覧。
  5. ^ Company, Bandicam. “ハードウェアアクセラレーション - Bandicamの使い方”. Bandicam. 2024年11月10日閲覧。
  6. ^ Adobe Premiere Pro の GPU で高速化された書き出しでコンテンツ クリエイターの作業がより迅速に | NVIDIA” (英語). NVIDIA Japan Blog (2020年5月29日). 2024年11月10日閲覧。
  7. ^ 株式会社インプレス (2020年5月20日). “Premiere ProがNVENC対応。書き出しが5倍高速に”. PC Watch. 2024年11月10日閲覧。
  8. ^ Using FFmpeg with NVIDIA GPU Hardware Acceleration” (英語). NVIDIA Docs. 2024年11月10日閲覧。
  9. ^ 無料のムービー変換ソフト「FFmpeg 6.0」リリース、NVENCやQSVでのAV1エンコードに対応 - GIGAZINE”. gigazine.net (2023年3月1日). 2024年11月10日閲覧。
  10. ^ Video Encode and Decode GPU Support Matrix” (英語). NVIDIA Developer (2016年11月9日). 2020年8月22日閲覧。
  11. ^ NVIDIA VIDEO CODEC SDK” (英語). NVIDIA Developer (2016年11月9日). 2020年8月22日閲覧。