QSV(H264)からNVENC(H265)へ
近ごろNVidiaのグラボで使える、動画エンコード支援機能のNVENCが大幅な進化を遂げていると聞き、試したくなってGTX1660を購入しました。
NVENCでは、ほんの数年前までは遅すぎて使い物にならなかったH265のエンコード速度が格段の進化を遂げています。そのため、以前は動画のハードウェアエンコといえばIntelCPUで使えるQSVが主流でしたが、現在ではNVENCが主流になりつつあります。
次の表はNVENCのサポート状況ですが、最新世代でもGTX1650ではH265/HEVCのBフレームをサポートしていないので注意が必要です(Bフレームをサポートしていると動画の圧縮効率が上がります)。今回購入したGTX1660はBフレームにも対応しています。
出展:https://developer.nvidia.com/video-encode-decode-gpu-support-matrix
※追記
表にはありませんが、RTX3000シリーズやGTX1650SUPERもBフレーム対応です。
AviUtlの導入と設定
NVENCでのH265/H265動画エンコード環境を整えます。
Aviutlは古くからある定番の動画エンコードソフトですが、NVENCのH265エンコードはAviUtlに「rygayaの日記兼メモ帳」で配布しているプラグインを追加して行います。
AviUtl配布先:http://spring-fragrance.mints.ne.jp/aviutl/
NVENCプラグイン配布先:https://rigaya34589.blog.fc2.com/
NVENCプラグインは、rygayaの日記兼メモ帳のページ右フレームの[NVEnc+NVEncC]からzipファイルをダウンロードし、解凍後フォルダの中にあるauo_setup.exeをダブルクリックしてAviUtlがあるフォルダを指定してやるとインストールされます。
NVENCエンコード設定
動画エンコードの手順ですが、まずAviUtlでエンコードしたい動画のソースファイルを読み込み、読み込みが終わったらメニューの[ファイル]>[プラグイン出力]>[拡張NVEnc出力]と選択していくと、ファイルの保存場所を聞いてきます。
ここで動画の保存先を選んでファイル名を入力し、[保存]ボタンを押すと動画のエンコードが始まるのですが、まずは[ビデオ圧縮]をクリックしてNVENCの設定を行います。
動画の圧縮率は、基本的に設定項目中のQP I frame, QP P frame, QP B frameの3つの数値を増減させて調整します。数字が大きくなるほど圧縮率は高く、画質は粗くなります。HEVCのBフレーム対応グラボを搭載しているのであれば、[Bフレーム参照モード]でeachを選択すると、Bフレームサポートの恩恵を得られます。
その他の設定は、よくわからなければ上の写真の通りにしてみてください。
上に掲載した参考参考画像の設定で、1時間くらいのTS動画がソースによりますが600MB程度に収まりました。
エンコード速度
長さ1時間程度のTS動画を使い、H264-QSVとH265-NVENCでエンコード速度を比較しました。
ハードウェアエンコード | 圧縮方式 | FPS | 時間 | ファイルサイズ |
QSV (Intel i5 5675C) |
H.264 | 95~100 | 約20分 | 1.12GB |
NVEnc (NVidia GTX1660) |
H.265 | 160前後 | 約12分 | 1.04GB |
QSV/H264に比べてNVEnc/H265のほうが1.6倍くらい高速に動作しています。
(ちなみにBroadwell世代のi5 5675はQSVだけのためにあるようなCPUで、QSV速度だけなら現世代CPUに勝ります)
画質に関してですが、明らかにH265のほうが破綻が少なく綺麗です。静止画だとわかりにくいのですが、参考までに比較画像を掲載しておきます。
①QSV/H264
②NVENC/H265
うーん静止画ではさっぱり違いがわかりません
その他にもあるNVEnc利用方法
ここまではAviUtlを用いたNVEncの方法ですが、次の記事でバッチファイルを用いた高速化の方法を紹介しています。
実はAviUtlの中にフレームを通すことにより、直接NVEncで出力するのに比べてかなり遅くなっていて、NVEncの能力を最大限には活用できていません。
詳しくは次の記事を参照ください。
その他、エンコードと同時にフィルタ処理も行いたいという方はこちら
>>AviUtl小技(ロゴ消し)
>>AviUtl小技(部分モザイク・文字入れ)
ややこしいことは勘弁!初心者にも分かりやすく、もっとお手軽簡単に、という方はこちらのHandbrakeというツールを用いたやり方も是非ご覧ください。