モノトーンの伝説日記

Apex Legends, Splatoon, Programming, and so on...

OBS Studio の録画に NVENC の HEVC Encoder を使って mkv コンテナーで保存する方法

 カスタム出力 (FFmpeg) では,mp4 でしか出力できないので,Xaymar 氏の StreamFX を使います。

1. StreamFX のインストール

 下記のリンクから,「streamfx-windows[year]-[version]-[hash].exe」をダウンロードし,インストールします。

 執筆時は year: 2019, version: 0.9.2.0, hash: c6fb402d となっています。

github.com

 StreamFX は今回の用途以外にも,シェーダーの入力ソースや追加のフィルター,Apple ProRes での書き出しなどに対応しています。

2. 録画の設定

 エンコーダーに「NVIDIA NVENC H.265/HEVC (via FFmpeg)」を選択します。GUI でパラメーター調整できるので,カスタム出力でできたとしてもより楽な方法で指定できるのはいいですね。

 一応ここでも注釈しておきますが,Look-ahead 設定は,Maxwell/Pascal (GTX 900/1000 series) は 8,Turing/Ampere (RTX 2000/3000 series) は 24 が上限です。ほかにも「No NVENC capable devices found」というエラーログが出ることがあるのですが,うまくエンコードができない場合,そのグラボで使用できないパラメーターが指定されています。

 ちなみに,RTX 3080 でテストしたときにもこのような現象が起こっていたので,どの制限に引っかかるか地道に調べてみてください。

 あと,単体の Quantization Parameter 設定がなかったので,それだけ,Custom Settings に「-qp=26」としていました。今まで,AVC で qp を 26 で録画していたので,そのまま HEVC にスライドする感じです。手元のざっとした計算だと録画ファイルの容量は半分といったところでした。

 パラメーター周りの詳細は StreamFX の wiki を参照してください。

github.com

まとめ

 AMD Ryzen 9 5900X に RTX 3080 で本格的なゲーム環境ができたので,新しい設定とかも作りつつまったりやっていこうとしていたのですが,今日気づいたんですが,「CoreAudio AAC Encoder」(Windows 向けの CoreAudio Toolbox)入れ忘れてた!! って感じです。なので入れました(標準の ffmpeg 内臓エンコーダーより CoreAudio のエンコーダーのほうが音質がよい)。

 一般的には iTunes をインストールすればいいはずです。もし仮に,CoreAudio だけ入れたい場合,以下の手順に従い,AppleApplicationSupport/64.msi のみをインストールしてください。ちなみに,最新版だとその msi ファイルがなくて,そのファイルが存在している最新版 iTunes は「iTunes 12.10.8.5」でした。参考まで。

obsproject.com

 これで,HEVC+AAC-LC w/Matroska Video とかいう最強録画環境ができましたね。ざっと試した感じは容量半減なのでとてもありがたいです。qp=26 だと,15 分 2 GB ぐらいが 1 GB 程度になりますから。

 最後に録画ファイルから切り出したスクショでも貼っておきますかね。自分はこれぐらいの圧縮率が限界(電線付近とか,電灯付近が結構ノイズ目立ちますね。しかし動いてるとこの辺りは許容できます)だと思っていて,それが qp=26 なので。25 とか上げたらもっと画質よくなるのはわかってるんですけどね。

f:id:mntone:20201216012713p:plain