この記事の概要を簡単まとめ!
- GTX 1080TiからRTX 2080Tiにアップグレード成功
- GP102からTU102になり、コーデックもアップグレードした
- H.264より高効率な圧縮形式H.265/HEVCをテストする
- H.264を基準として約1/2のbpsで同等の画質を実現する
- bpsが削減できると配信やアーカイブとして手元に残すのに便利になる
- 残念ながらTwitchは未だにHEVC未対応、他にも未対応なソフトウェア・サービスが多い
- 高画質も圧縮もできるHEVCは使い方次第で何でもできる
RTX 2080Tiを入手したことは、自分の中では大きな成果である。基本性能の向上で無理に電圧を上げなくても十分な映像出力が可能になり、アフターバーナーによって調整することで過去最大の効率を達成した。伝説のレジェンドの設定はモニタが対応しない関係で高画質の設定は特にしていない。そのこともあって配信と同時に使用しても最大温度60℃台、消費電力170W台と、GPUにも財布にも優しくなった。
加えていいことがもう1つある。GPUファミリーはGP102(Pascal)からTU102(Turing)になったことで、コーデックにH.265/HEVCが追加された。現在主流のH.264に対して2倍の圧縮効率があると実証され、今後のスタンダードになると期待されていたが、何故か一般化が遅れ、新コーデックのAV1の登場で危うくなりかけている。しかし使わないのはもったいないので検証することにした。
ひとっ飛びできる目次
HEVCは高画質も圧縮もできる
GPUとコーデック
1080Tiから2080Tiへ
前回、RTX 2080Ti(EVGA RTX 2080 Ti XC Ultra)のレポートと、それをアフターバーナーで調整した結果について記事にした。このことからわかるように、私はこれまで1080Tiを使っていたのを2080Tiにアップグレードし、まず無調整状態でFFXVベンチマークを実施し、その後アフターバーナーで電圧を調整して最適解を見つけ、快適に使用している。
1080TiはTitan X(Pascal)およびTitan Xpを除き、Pascal世代最強のGPUとして有名である。DisplayPortによる高解像度出力とVR Readyに対応し、出力可能な最大解像度は4Kとなっている。4Kテストについてはこのサイトが詳しいが、そもそもモニタが対応していないと4K出力が不可能なため、ハードウェアの構成は確認しておく必要がある。この場合はDisplayPortを持つモニタ以外使えない。
その1つ上の世代で同系列のGPUである、2080Ti。高解像度・高画質はモニタの関係上行っても意味がないので、それを考えれば性能が十分な1080Tiのままでもいいのではと思う人も多いはずだ。しかし私はあえて、基本性能が高いものを入手し、それを最適化によって低電圧・低消費電力設定を行った。これにより発熱を抑え、低電圧によりプロセッサをはじめとする各種パーツへの負荷を軽減することで、全体の寿命が長くなることを狙っている。常に全力でなければ使えないものより、50%前後の力で余裕で使える方が運用しやすいはずである。
GP102からTU102へ、コーデックもアップグレードした
GPUには必ずファミリーと世代がある。1000番台にはPascalが採用されている。世代は第6世代である。また1600番台も第6世代と第7世代の両方が存在するが、ファミリーはTuringのみになっている。2000番台はファミリーがTuring, 世代は第7世代となる。単純に考える場合、1080TiはGP102/第6世代、2080TiはTU102/第7世代のGPUである。なお、ここに書いた以外のGPUについて、ファミリーと世代はNVIDIA公式がまとめているビデオエンコード・デコードGPU対応表を、GPUの詳しいファミリーの情報についてはTechPowerUpのGPU Databaseから調査したいGPUの型番を調べることで判明する。
さて、単に性能だけを考えた場合はファミリーと世代を気にすることはあまりない。だが配信者には重要なファクタであり、現在の環境ではTuring+第7世代であることが前提条件である。その理由はビデオエンコード・デコードを行うコーデックの対応関係にある。1000番台および第6世代の1600番台のGPUはH.264を搭載し、第7世代の1600番台および2000番台以降はH.264の後継となる、H.265/HEVC(以下HEVC)を搭載している。ただしHVECのBフレームサポートは2000番台以降に限られるため、本格的に使用する場合は2000番台以降が選択される。
ここで疑問に思う人がいるだろう。そもそもH.264とHEVCとは何なのかということを。これらは一般にコーデックと呼ぶもので、符号化方式を使ってデータのエンコード(符号化)とデコード(復号)を双方向にできる装置やソフトウェアのこと、またそのためのアルゴリズムのことを示す。コーデックは画像系のJPGやPNGもその1つであるが、動画系の場合は特にH.264, HEVC, MPEG-4のことを示すことが多い。これがなければ、動画の再生は困難を極めると言っても過言ではない。
HEVCのテストは今後の配信に必須
単にゲームするだけの一般ユーザーなら、コーデックは通常気にしない。だがこれが配信しているとなれば事情が異なる。配信する際多くの人はOBSを使用していることと思われる。基本的にOBSで配信ないし録画する場合のコーデックはH.264(x264)を基準とし、各種設定もこれに合うように整備されている。また、多くの動画投稿・配信サイトで採用・推奨されているコーデックがH.264ということもある。OBSは2つ以上のGPUでのエンコードはサポートしているが、その設定方法は非常に面倒で、ハードウェア的設定ミスによる事故も起きやすい。そのため、性能の良いGPU、Pascal世代なら1070Ti以上でゲームと配信を同時に行っていることが多い。
1080Tiであれば十分すぎる性能を持っているうえ、NUROモバイルにしたことで配信回線は安定しているため、正直そのままでも良かった。それでも性能と低発熱・省電力を狙って2080Tiにした結果、副産物としてついてきたのがHEVCである。新しいコーデックが使えるというのなら、使わない理由などないはずだ。それで少しでも画質が向上し、容量を削減できるというのなら、積極的に使っていくべきである。
そこでOBSでのHEVCの設定方法について、備忘録を兼ねてここに記録することにした。なお、私は主戦場がTwitchであり、その関係でHEVC非対応であるため主に録画についての解説となるが、配信でHEVCを使う場合の解説も記載する。
HEVCをOBSで使う
実験環境の記載
HEVCを使用する環境について、それに関係する要素のみ抜き出して掲載する。
- CPU: i7-9700
- GPU: EVGA RTX 2080 Ti XC Ultra
- NVIDIAドライバ: 536.99 WHQL
- OBS: 29.1.3
- MSI Afterburner: 4.6.5
- データ用HDD: WD1002F9YZ(1TB, 7200rpm, SATA III)
- 録画先HDD(外付け):
- OBS設定
- レンダラー: Direct3D 11
- カラーフォーマット: NV12
- 色空間: 601
- 色範囲: 一部/リミテッド
これらの条件のもと、設定と実験を行っていく。
設定方法
HEVCを有効にするには設定を変更する必要がある。まずは配信と録画のそれぞれで、次のように設定する。
- 配信:前提として配信先のプラットフォームがHEVCに対応している必要がある。対応している場合、映像エンコーダのプルダウンメニューに”NVIDIA NVENC HEVC”が存在するのでそれを選択する。音声エンコーダはAACで問題ない。以下はYouTubeの場合の設定であり、参考資料は次のヘルプページである。
- レート制御:サイトに準ずる。多くの場合CBRであり、YouTubeでもこれを推奨している。
- ビットレート:解像度に合わせる。1080p/60fpsの場合最小4Mbps, 最大10Mbpsである。
- キーフレーム間隔:2秒を推奨し、基本条件は4秒以下。
- プリセット:デフォルトはP5: Slow(高品質)。ここは変える必要はない。
- チューニング:デフォルトは高品質。ここも変える必要はない。
- マルチパスモード:CBRはbpsが変動しないので1パスを選択する。
- プロファイル:mainのままにする。カラーフォーマットを10bit対応にしている場合はmain10。
- Look-ahead:度々議論の的になるがONにする。詳細はここを参照。
- 心理視覚チューニング:デフォルトでON。
- GPU:単一GPUなら0のまま変更しないこと。
- 最大Bフレーム:一般に2である。
- 録画(標準):通常はこれだけで必要な設定が完了する。
- 録画ファイルのパス:任意の場所を指定する。スペースなしのファイル名に関しては任意。
- 録画フォーマット:MP4またはFragmented MP4
- 映像エンコーダ:ここにHEVCを指定する。
- 音声トラック以下の項目は任意設定。
- エンコーダ設定は配信と同じ設定でOK。
- 録画(カスタム出力 FFmpeg):標準よりも詳細な設定を行える。
- FFmpegの種類:ファイルに出力
- ファイルパスまたはURL:任意の場所を指定する。スペースなしは任意。
- コンテナフォーマット:mp4
- マルチプレクサーの設定:なし
- 映像ビットレート:配信と同じにしておく。
- キーフレーム間隔:ここでは1フレーム単位で設定できる。2秒にする場合、FPS設定によって60か120かが変わるので注意。
- 出力をリスケールする:よほどのことがない限り使わない。
- 映像エンコーダ:hevc_nvenc(hevc_amf)を選択する。
- 映像エンコーダ設定:なし
- 音声ビットレート:128kbpsまたは192kbpsが一般的。
- 音声トラック:任意
- 音声エンコーダ:AACが既定である。
- 音声エンコーダ設定:なし
これらは私の実際に使用している設定であるが、HEVCに関しては環境とプラットフォームに依存する部分が多い。HEVC対応は一部プラットフォームのみでしか行われていないということが多く、その代表がTwitchだ。残念ながら非対応であるため、従来のH.264で配信しなければならない。また、殆どのブラウザはHEVC再生に対応せず、まともに対応するのはフリーのプレイヤーであるVLCくらいである。Windows標準では再生したいなら金払えの一点張りで非常にクソである。
HEVC VS H.264 それぞれの比較
HEVCとH.264の比較を、実際の録画で行う。配信はTwitchメインである以上HEVCが使えないためである。JR EAST Trani Simulator 京浜東北・根岸線の秋葉原-神田を走る2分1秒の動画を、次の設定で4回録画しそれぞれを比較する。解像度は1080pで固定するものとする。
- H.264 CBR 60fps 映像2808kbps+音声192kbps
- H.264 CBR 60fps 映像5808kbps+音声192kbps
- HVEC CBR 60fps 映像1404kbps+音声192kbps
- HVEC CBR 60fps 映像2904kbps+音声192kbps
説明時は番号がその設定で録画したものであることを示す。なお、動画そのものは容量が大きいためアップロードができず、ブラウザ自体がHEVC再生に対応しないため画像でのみ解説する。
画質比較
まずは見た目の画質について比較する。比較のため拡張子はpngとし、残596m時点のスクリーンショットを以下に掲載する。
画像内にはそれぞれの録画設定を記載している。正直なところ、動きが激しいものではないのでその違いは明確には分からないというのが感想である。ただ注目すべきはHEVCでの1404kbpsで、この設定にも関わらず画質がH.264の1番の設定に追い付いている。これをH.264で行った場合、非常に荒くなって見れたものではない。これは経験している人も多いのではないだろうか。
ちなみにこれよりも動きの激しい映像が伝説のレジェンドで、この場合のH.264は2808kbpsであるとゲームを映している側に微妙な画像の乱れを観測できた。その後HEVCで録画する時、2倍値の原理から2904kbpsで録画を行っている。これは音声は192kbpsで変わらないが映像はH.264の2倍の効率があることを考慮したものである。単純計算で6000kbpsを目標として、6000-192=5808[kbps]
が導かれ、その半分の値が2904kbpsだからである。この設定で映像の乱れは殆ど見られなくなった。その詳細はYouTubeのアーカイブにある。
容量比較
次は容量を比較する。1が43.5MB, 2が86.9MB, 3が23.2MB, 43.5MBという結果となっている。1と3で容量が1/2、画質は(人間の目には)差が全くないため、単純にH.264よりも2倍の動画を保存することができるようになる。そして1と4では全く同じ容量になり、画質は4の方が高い。また設定上で同じ画質になる2と4で比較すれば、やはり容量が1/2の差がある。H.264では高画質にするほど容量が重すぎてアーカイブとして残すのにも苦労するが、HEVCであれば容量を圧迫せずに残すことができると分かる。この部分だけでも使う価値がある。
対応状況
だが最も問題となるのが対応状況だ。対応状況については少し前にも書いたとおりであるが、主要プラットフォームであるYouTubeとTwitchで見た場合、YouTubeはHEVCに加えて最新コーデックのAV1も対応している。それに対してTwicthはどういうわけか、H.264にしか対応していない。ヘルプページを参照してもHEVCの記載はなく、OBSの設定で配信先をTwitchに指定した状態でコーデックのプルダウンメニューを開くとH.264しかないことからも分かる。これに関しては由々しき事態であり、遅れていると言わざるを得ない。その割にツイキャスはゲームズ配信においてHEVCを使える旨が書かれている。
そのため対応状況からも配信先を選択する理由になる。対応していなければおとなしくH.264を使っていくしかないということで、各プラットフォームの努力義務に委ねるしかない。
高画質も圧縮もできるHEVCは使い方次第で何でもできる
以上でNVEnc HEVCのレポートを終了する。GPUしべ長者を行った結果の副産物として得たH.265/HEVCは、これまでの配信をさらに良くするものとして期待できるものとなった。これまでH.264で行っていた私は、1080Tiだったので不満こそなかったが満足もしていなかった。そのため2080Tiにして良かったとは常々思っていることである。
しかし残念ながらTwitchはHEVC登場から10年経った今でも全く対応する気がないのでその効果は配信では生かせていない。そのため今は録画に使用することでその効果を発揮している。将来的に対応すれば使えるのだがこれの期待は到底できない。それはともかく、H.264と比較すれば明らかに画質で進歩しており、これを使わない理由は存在しないと言える。使えるものなら使う、それが当然の流れである。
HEVCがH.264に対して2倍の効率を持つということは、高画質も圧縮も行えるということである。H.264で3000kbpsの画質を求めるならHEVCでは1500kbpsで足りることになり、容量は半分となる。3000kbpsなら同じ容量で2倍の画質が実現できる。求めるものが画質なのか容量なのかによって使い方を変えることができるので、HEVCは使い方次第で何でもできると言える。目下の問題は対応プラットフォームが少ないことと、次世代コーデックとされるより高効率のAV1が存在することだが、AV1が使用できるGPUがNVIDIAはRTX 4000番台、AMDはRX 7600以上でなければ使用できないという重い制約がある。これを考えればしばらくはHEVCが使われることは確定である。AMDでも上位モデルはHEVCを利用することができるため、その意味ではHEVCは標準装備であることが伺える。
RTX2000番台を手に入れると、HEVCという特典が付く。この特典を手に入れたのなら、積極的に使っていくといい。それが新たな助けになるはずだ。
以上、NVEnc HEVC設定書:H.264との違いと使い方の備忘録、であった。ついてきたものは使わないともったいないので、しっかり使っていこう。
KIBEKIN at 00:00 Aug. 13th, 2023
スポンサーリンク