TVMW6でNVENCを使ったH.265/HEVCエンコード比較
投稿日:2017/7/29 更新:2019/10/13 コメント 10件 自作パソコン GPU, GTX 1050, msi, NVENC, TMPGenc, TMPGEnc Video Mastering Works 6, TVMW6, エンコード, ペガシス前置き
NVENCをしたかったのでハードウェア「MSI GeForce GTX 1050 GAMING X 2G」とソフトウェア「TMPGEnc Video Mastering Works 6(以下、TVMW6)」を揃えて漸く、GeForceによるNVENCエンコード環境を整えることができたのでいろんなパターンでエンコードしてみました。
A’s Video ConverterでNVENCを使ったH.265/HEVCエンコードテスト
ソース動画
エンコードは主に下記のEDIUS Pro8で作成したMP4(H.264/AVC)の動画を使っていますが、エンコード条件によっては異なるサイズや形式の動画も使用しています。
サイズ | 1920 x 1080 |
形式 | MP4 (H.264/AVC) |
フレームレート | 29.97p |
ビットレート | 5991 kbps (約6.0 Mbps) |
ファイルサイズ | 457 MB |
時 間 | 10 分 |
動画内で使用している動画素材はMazwai.comからダウンロードしたものでCC BY 3.0 USのライセンス(クレジット、ライセンスへのリンク、改変内容の記述が必要)が付与された素材なので自由にダウンロードしてエンコード時間などを比較する時などに使ってもらっても構いません。ライセンス条項などはYouTubeの説明欄や動画内に記載しています。
ダウンロード (ZIP形式)
出力設定(共通)
基本的に容量を半分以下に減らすのが目的なのでビットレートを半分(3.0Mbps)にして出力テストしています。
ビットレート | 3.0 Mbps |
最大ビットレート | 3.5 Mbps |
レート調整モード | VBR (平均ビットレート) VBV 無し |
VBRの標準パス数 | 1 Pass |
PC環境
CPUファンにはENERMAX ETS-T40-TBを使用していますがPWMファンが煩くて3pinファンに交換しているのと、本来はファンをフロント側に取り付けるのが一番冷却効果が得られるんですが自作メモリークーラーと干渉するのでリア側に取り付けているので冷却能力はだいぶ下がっています。補足情報としてエンコード時の室温は30度前後、オーバークロックは一切していません。
Tag : メモリクーラー
CPU | Core i7 2600K |
GPU | MSI GeForce GTX 1050 GAMING X 2G |
MB | BIOSTAR TZ77XE4 |
Memory | 16GB (8GB x 2枚) |
PCスペック |
消費電力の計測
消費電力の計測にはサンワサプライの「TAP-TST8」を使用し、アイドル時のPC全体の消費電力は60~70W
前後を推移している感じです。
H.264/AVC(MP4)にエンコード
x264、QSV(Intel Media SKD Hardwear)、NVENCを使ってMP4(H.264/AVC)にエンコードしてみました。
x264(H.264/AVC)
ほとんど利用しないですが比較用としてソフトウェアエンコードをしてみました。設定値などの詳細は画像を見て下さい。
エンコード時間は10分7秒
、エンコード中のPC全体の消費電力は135~145W
あたりを推移
CPU使用率はほぼ100%
を推移
CPUコア温度は60°
前後を推移
※コア温度の最大値はエンコードごとにリセット済
GPUはほとんどお休み中…zzz
QSV(H.264/AVC)
QSV(CPU)を使ったハードウェアエンコードです。Core i7 2600KではH.265/HEVC形式にエンコードできないんですがQSV(Intel HD Graphics 3000)を使ってMP4(H.264/AVC)にエンコードできるのでエンコードしてみました。
エンコード時間は3分49秒
、PC全体の消費電力は110~120W
を推移
CPU使用率は30~50%
台を推移
CPUコア温度は50°
あたりを推移
GPUはZzz…
NVENC(H.264/AVC)
GPUのNVENC(ハードウェアエンコード)を使ったエンコード
エンコード時間は3分7秒
、PC全体の消費電力は120~135W
を推移
CPU使用率は30~50%
台を推移
CPUコア温度は53°
前後を推移
GPU温度は3分ほどのエンコードでしたが55°
前後まで上昇
H.265/HEVC(MP4)にエンコード
x265、NVENCを使ってMP4(H.265/HEVC)にエンコードしてみました。
x265(H.265/HEVC)
x265(ソフトウェアエンコード)を使ったエンコード
エンコード時間は元動画の約3倍の29分22秒
CPU使用率はほぼ100%
のフル稼働状態
CPUのコア温度は Max67°
まで上昇、PC全体の消費電力は140W
前後を推移
GPUはZzz…
NVENC(H.265/HEVC) ※ソース動画 1920 x 1080
NVENCを使ってMP4(H.265/HEVC)にエンコード
エンコード時間は元動画の1/3以下の3分5秒
グラフが大幅に変化しているところからエンコードを開始し、CPU使用率は40~50%
の間を推移
CPUコア温度はMax53°
、PC全体の消費電力は130W
ほど
GPU温度が上がる切る前にエンコードが終わったのでそれほど温度が上昇せず。ただ、バッチツールに登録して連続エンコードを行うと60°
台まで上昇
NVENC(H.265/HEVC) ※ソース動画 1280 x 720
エンコードに使用する素材動画を1280 x 720のものに変更して同じテストを行ったらエンコードは1分53秒
と元動画の1/5の時間で終了
NVENC(H.265/HEVC) ※ソース動画 3840 x 2160
エンコードに使用する素材動画を3840 x 2160のものに変更して同テストを行ったらエンコード時間4分56秒と元動画の1/2ほど時間が掛かっていました。
1280 x 720(1分53秒)、1920 x 1080(3分5秒)、3840 x 2160(4分56秒)とソース動画のサイズを変更してエンコードしてみましたが、サイズが大きくなるにつれてエンコード時間も比例して長くなる傾向にあるようです。
NVENC(H.265/HEVC) ※1280 x 720へリサイズ
素材動画は1920 x 1080のままで1280 x 720へダウンスケール(リサイズ)してみたところ、エンコード時間は5分38秒
(リサイズなし: 3分5秒)掛かりました。
NVENC(H.265/HEVC) ※フィルター追加
素材は1920 x 1080のままでフィルターの「色調補正」を以下のように設定してエンコード
エンコード時間はフィルターなしの3分5秒から約5倍にも増加して15分41秒
も掛かりました。同じフィルター設定でx265(NVENC)だとフィルターなし(29分22秒)と比べても大差なくプラス1~2分程度の増加しかありませんでした。
その他のテスト結果と計測データのまとめ
H.264/AVC(MP4)形式で出力
エンコード | ソースサイズ | エンコード時間 | CPU使用率(%) | CPU/GPU温度(°) | 消費電力(W) |
---|---|---|---|---|---|
x264 | 1920×1080 | 10分7秒 | 100% | 60°/40° | 135~145W |
QSV | 1920×1080 | 3分49秒 | 30~50% | 50°/42° | 110~120W |
NVENC | 1920×1080 | 3分7秒 | 30~50% | 53°/55° | 120~135W |
H.265/HEVC(MP4)で出力 ※デフォルト設定
※フィルターやサイズなどの変更なしのデフォルト設定でのエンコード
エンコード | ソースサイズ | エンコード時間 | CPU使用率 | CPU/GPU温度 | 消費電力 |
---|---|---|---|---|---|
x265 | 1920×1080 | 29分22秒 | 100% | 67°/44° | 140W |
NVENC | 同上 | 3分05秒 | 40~50% | 53°/57° | 130W |
NVENC | 1280×720 | 1分53秒 | – | – | – |
NVENC | 3840×2160 | 4分56秒 | – | – | – |
H.265/HEVC(MP4)に出力 ※追加設定
出力はすべてH.265/HEVC(MP4)で1360×768は筆者のモニターの解像度でキャプチャサイズです。尚、一部ソース動画の長さが異なっています。
エンコード | ソース情報 | 出力設定 | エンコード時間 (ソース動画の長さ) |
---|---|---|---|
NVENC | H.264 1920×1080 |
1280×720 ダウンスケール |
5分38秒 (10分) |
NVENC | 同上 | 色調補正 | 15分41秒 (10分) |
x265 | 同上 | 色調補正 | 30分 +2分 (10分) |
NVENC | H.264 1360×768 ※1 |
H.264 → H.265 | 13分32秒 (119分) |
同上 | M2TS 1920×1080 ※2 |
M2TS → H.265 | 4分21秒 (10分) |
同上 | M2TS 1440×1080 (地デジ) |
M2TS → H.265 | 7分20秒 (38分) |
同上 | 同上 | M2TS → H.265 (カット編集 ※3) |
7分47秒 (38分) |
同上 | 同上 | M2TS → H.265 (1360×768にリサイズ) |
10分37秒 (38分) |
同上 | 同上 | M2TS → H.265 (クロップ、リサイズ ※4) |
29分20秒 (38分) |
同上 | WMV 1920×1080 |
WMV → H.265 | 6分59秒 (10分) |
同じM2TSの動画でもカット編集を加えただけでもエンコード時間が異なりますし、フィルターを2つ付加させるとエンコード時間が3倍に跳ね上がったりもします。更にフィルターを追加するとさらにエンコード時間が延びることが予想されます。動画素材の種類やサイズ、またフィルターによってかなりエンコード時間は異なってくることだけは分かりました。
x265で同じ設定だとエンコード時間がそもそも長いんですがエフェクトを追加したからと言ってエンコード時間が数倍に跳ね上がることはないようなのでNVENCはその辺の処理が苦手なのかも知れません。
※1 Bandicamでキャプチャした動画
※2 EDIUSで作成
※3 動画の前後10秒ほどをカット
※4 映像クロップで画面サイズが小さくなったのを元の1440×1080に戻す
画質比較
ビットレートを上げると画質が向上する代わりに容量が増加しますがその辺の兼ね合いは個人個人で異なるとは思いますし、画質に対する評価もそれこそ人によってかなり差があると思います。参考になるかどうか分かりませんが一応比較用の動画をアップしました。
ただ、ちゃんと比較できるようにエンコードした動画をサーバーにアップロードしようとしたんですがプレイヤーこそ表示されますが再生できないので諦めてYouTubeにアップロードすることにしました。よく分からないですが恐らくYouTubeでは変換処理が入ると思うのでオリジナルのものと多少異なるとは思います。尚、視聴する場合はどちらの動画も最高画質(1080p)で御覧下さい。
ビットレート 1/2 (6.0Mbps → 3.0Mbps)
筆者の主観ですが元動画のビットレートが6.0Mbpsのものなら半分の3.0Mbpsまで落として出力しても同等な画質に感じています。容量的は457MB → 223MB
と約半分になっています。
ビットレート 1/12 (6.0Mbps → 0.5Mbps)
比較用としてビットレートを1/12まで落としてみました。ここまで落とすと流石にブロックノイズがだいぶ目立つようになりましたが、ただ視聴に堪えないレベルでもないと思います。容量には457MB → 52MB
となっていてビットレートと比例するような容量変化ではありませんでしたがそれでも1/9程度まで落ちています。
10 件のコメント
こちらを参考にさせていただきました。本当にありがとう。
お役に立てたようで良かったです。
丁寧な比較検証を有難うございました!NVENC設定の参考になりました。
動画素材も非常に良かったので、ベースサンプルとして使わせて頂いています。
コメントありがとうございます。
参考になったようで良かったです。
ではでは。
私の知りたかった比較情報がすべてこの記事に集約されていました。
大変勉強になりました。ありがとうございます。
結構、時間を掛けて書いた記事なので
そのようなお言葉を頂けただけでやった甲斐がありました。
ありがとうございます。
唐突な質問ですみません。
エンコードに関して素人です。お察しください。
一旦は長文にならないように当方の環境までは書きませんが、
私の環境でNVENCだと高速になるので時間的には満足ですが、
動きの激しいシーンだとかなりブロックノイズが気になる事が発覚しました。
普段はH.264で2パスだから綺麗なのかもしれませんが、
NVENCには2パス設定ができませんよね?
NVENCでももう少し画質向上になる設定変更の余地についてヒントをいただけると幸いです。
コメントありがとうございます。
現在、新環境に移行してグラボを取り外しているので確認することはできませんが、
画像を確認するとNVENCを使ってH.264/AVCにエンコードする時には
エンコーダーパス設定が無効になっていたので2パスは使えないようです。
マニュアルも確認してみましたが
QSV(Intel Media SDK Hardware)やNVENCエンコーダーでは、
2パス VBR 処理は行えません、と記載されていました。
画質にこだわるならやはりx264やx265のソフトウェアエンコードで
2パスエンコードするしかないと思いますよ。
ありがとうございます。
私はまだまだ知識が足りてないようです。
GeForceをフルで活かした、ブロックノイズの少ない高画質なエンコードは現状はできないということでしょうか?
VBVとはビットレートが固定されたモードなので
動きの速いシーンではブロックノイズがどうしても出やすいです。
画質を上げるにはVBR(平均ビットレート)で2パスにするのが一番だと思いますが、
NVENCでそれができないようなのでブロックノイズの少ない高画質なエンコードは
NVENCでは現状では難しいのかも知れませんね。