【NVENC】A’s Video Converterのハードウェアエンコで最速fpsを叩き出す方法・設定を考えてみる【QSV】
この記事ではお手軽に動画のハードウェアエンコードができるBluesky氏のソフト「A’s Video Converter」のハードウェアエンコで最速fpsを叩き出す方法・設定を考えてみます。
ハードウェアエンコードはそもそも高速ですが、CPUやRAMなどのハードウェア、エンコードやデコードするソフトウェアがボトルネックとなって、本来のGPUの性能を最大限に引き出せない場合が多々あります。ハード面でのボトルネックの解消は高速化に大きな効果がありますが、今回はソフトウェア面の設定を調整して高速化を目指します。
ハードウェアエンコに限らず、個人での動画編集ソフト+エンコーダーの組み合わせと言えば、「AviUtl+rigaya氏のエンコーダープラグイン」の組み合わせが有名です。AviUtlは高機能であり、rigaya氏のエンコーダープラグインにはQSV、NVENC、VCEに対応したものもあって私も重宝していますが、AviUtlの仕様上、GPUの性能を最大限に引き出すことは不可能です。
そこでまずは利用するソフトウェアごと変更します。「HandBrake」など、無料のエンコードソフトは複数ありますが、私は「A’s Video Converter」というソフトに目を付けました。動画のエンコードに特化したアプリなので、優劣はつけ難く、目的に応じて使い分けましょう。とにかく、今回はこれを利用します。
本題です。「A’s Video Converter」の設定を練りましょう。
なお、dGPUを搭載している場合は、CPUがQSV対応でも強制的にdGPU内のデコーダにてデコードされてしまいます。デコーダーの設定方法を含めてdGPU搭載パソコンでQSVを有効にする方法は別の記事をご覧ください。
高速化の基本
全ての設定、動作はGUI上で行います。エンコードの速度はビットレート、解像度等、あらゆる設定項目で大きく変化します。それらの設定は今回は取り扱わないものとして、エンコーダーよりむしろデコーダー、厳密に言うとエンコーダーとデコーダーの組み合わせを吟味して速度を比較してみます。
よってエンコードの設定値は同じ条件で、ベンチマークを取ってみます。エンコード環境と設定値は下記の通りです。
エンコード環境
OS | Windows 10 Pro 64ビット バージョン1909 |
CPU | Intel Core i5 8400(ターボブースト:オン) |
GPU | NVIDIA GeForce GTX 1660 Super(PCIe 3.0 x16動作) |
RAM | 16GB(2800 MHZ) |
ストレージ | Intel SSD 760p 256 GB(PCIe 3.0 x4動作。TLC) |
ソフト | A’s Video Converter |
ビデオデコーダー | LAV FiltersのLAV Video Decoder |
元動画 | H.264。1280x720p |
速度設定 | 速度重視 |
レートコントロール | CBR |
ビットレート | 1000 kbps |
Bフレーム数 | 0 |
ハードウェアビデオプロセッサ | なし (ハードウェアエンコーダー上でのリサイズやデインタレースなどはなし) |
オーディオエンコード | パススルー |
実行結果
早速実行結果を確認しましょう。赤マーカーの設定の組み合わせが最も速くなりました。
表の「ソフト上でのHWデコードオン/オフ」とは、A’s Video Converterを開き一番上の[設定]→[トランスコード設定]→[デコード]タブの順にクリックしたウインドウ内の[ハードウェア デコードを有効にする]のチェックが入っているか否かです。
QSVでのH.264/AVCエンコード
ソフト上 でのHW デコード オン/オフ | LAV Video Decoder上での ハードウェア デコーダの設定 | 最低fps | 最高fps |
オフ | None | 110 | 125 |
オフ | Intel QuickSync | 616 | 637 |
オフ | NVIDIA CUVID | 112 | 128 |
オン | None | 114 | 128 |
オン | Intel QuickSync | 113 | 128 |
オン | NVIDIA CUVID | 113 | 129 |
NVENCでのH.264/AVCエンコード
ソフト上 でのHW デコード オン/オフ | LAV Video Decoder上での ハードウェア デコーダの設定 | 最低fps | 最高fps |
オフ | None | 1435 | 1464 |
オフ | Intel QuickSync | 500 | 517 |
オフ | NVIDIA CUVID | 1441 | 1512 |
オン | None | 1361 | 1391 |
オン | Intel QuickSync | 1355 | 1400 |
オン | NVIDIA CUVID | 1383 | 1402 |
QSVでのH.265/HEVCエンコード
ソフト上 でのHW デコード オン/オフ | LAV Video Decoder上での ハードウェア デコーダの設定 | 最低fps | 最高fps |
オフ | None | 111 | 131 |
オフ | Intel QuickSync | 489 | 502 |
オフ | NVIDIA CUVID | 114 | 129 |
オン | None | 114 | 130 |
オン | Intel QuickSync | 112 | 129 |
オン | NVIDIA CUVID | 111 | 129 |
NVENCでのH.265/HEVCエンコード
ソフト上 でのHW デコード オン/オフ | LAV Video Decoder上での ハードウェア デコーダの設定 | 最低fps | 最高fps |
オフ | None | 1513 | 1543 |
オフ | Intel QuickSync | 508 | 518 |
オフ | NVIDIA CUVID | 1552 | 1586 |
オン | None | 1506 | 1535 |
オン | Intel QuickSync | 1498 | 1533 |
オン | NVIDIA CUVID | 1498 | 1533 |
まとめ
分かったことは下記の通りです。
- エンコードとデコードは同一のデバイスを使用する。(QSVエンコならQSVデコード、NVENCならNVDECの組み合わせ)
- A’s Video Converter上の「ハードウェア デコードを有効にする」の設定は必ずチェックを入れない。
おおよそ予想通りの結果となったと思われる。
表を見ると、別のデコーダーを設定してもfpsの数値上では変わらない(正常に設定されていない)ように見えるが、タスクマネージャーを観察すると確かに指定したデコーダを利用していることが分かる。しかし、データの受け渡し等に時間がかかってしまい、結果的に同等のfpsの値となるようだ。この辺は、CPUやRAM、VRAMの高速化やPCIe 4.0の採用などで若干改善される可能性はある。
なお、「LAV Video Decoder」の設定で「DXVA2」(DirectX Video Acceleration 2.0)や「D3D11」(Direct3D 11)を通してQSV、NVDECでデコードさせると更に高速になるようだが、仕様など詳しいことはさっぱりわからん。以上。
ディスカッション
コメント一覧
まだ、コメントがありません