OBSのLook-ahead機能は本当にいらない子なのか?
![画像1](https://assets.st-note.com/production/uploads/images/68260199/picture_pc_7237f0ab7decd3b896150a6c07128d8f.png?width=1200)
ネットでOBSのオススメ設定を調べてみると、必ずと言っていいほど「Look-aheadはONにするな」と書いています。
その理由はと言いますと「動きの少ない場面ではいいけれど、動きの激しい場面では画質が下がる」とのこと。
それは本当なのでしょうか?
本当にそれほどにダメな機能なんでしょうか?
ということで、実際にOBSでの説明を読んでいきます↓
『動的Bフレームを有効にします。有効にした場合、GPU使用率の増加を犠牲にして最大数まで、必要な分だけ多くのBフレームを使用することで視覚的品質を向上させます。』
英語だとこう↓
![画像4](https://assets.st-note.com/production/uploads/images/68334034/picture_pc_cf075f25db848f002d0c15c3ae3b6862.png?width=1200)
↑有効にすると、GPUの使用率が高くなる代わりに、必要なBフレームを最大限に使用するだけで、視覚的な品質が向上します。
と書かれています。
そして一方、NVIDIA公式のOBSGuideにはこうあります。↓
![画像2](https://assets.st-note.com/production/uploads/images/68319128/picture_pc_79ed3324b5ceb1cba1d483e5eae9ed69.png?width=1200)
先読み: チェック済み。これにより、エンコーダーは、0 から指定した B フレームの数までの B フレーム数を動的に選択できます。Bフレームは画質を向上させるので素晴らしいですが、利用可能なビットレートを多く消費するので、高モーションコンテンツの品質を低下させます。先読みは、両方の世界のベストを可能にします。この機能は CUDA アクセラレーションです。スムーズなストリームを確保するために GPU 使用率が高い場合は、これをオフに切り替えます。
↑翻訳だとこんな感じ。
この二つの説明を読む限りでは
・ONにするとOBSで『指定した最大Bフレームと0』の間で自動的にBフレームを設定するようになる。
・Bフレームは画質を向上させるがビットレートを多く消費する。
・Bフレームは動きの激しいモーションの品質を下げる。
・GPU使用率が増える
・Look-aheadはCUDAアクセラレーション、つまりNVIDIAが開発した機能である
と読める。
ただ、これらの説明でよく分からないのが、
Look-aheadは0~最大Bフレームまで動的に使用するという部分です。
OBSの説明だと必要な分だけ最大限にBフレームを使用すると読めます。
しかしNVIDIAの説明を読む限りでは、between 0 and the number of B-Frames you specify.とあります。
specifyは特定のという意味ですから、あくまで指定したBフレームまで、ということになります。
例えばOBSで最大Bフレームを2に指定した場合、0~2の範囲で変動するということになります。問答無用で0~4になるわけではありません。NVIDIAの説明だとそう。
しかしOBSの説明を見ている限りだとすごく全力でBフレームをねじ込んできそうな感じがします。
更にNVIDIA NVENC OBSガイドの推奨設定の項目を見ていくとこうあります↓
![画像5](https://assets.st-note.com/production/uploads/images/68718533/picture_pc_ffb3400fe2b9624689471d801eb11453.png?width=1200)
最大 B フレーム: 4 に設定します。[先読み] オプションをオフにした場合は、これを 2 B フレームに減らします。
↑NVIDIAの説明によると、
Look-aheadをオンにする場合は最大Bフレームを4に設定するのがオススメ。
Look-aheadを使用しない場合は最大Bフレームを2に設定するのがオススメ。
ということなのですが、
もしLook-aheadが問答無用で4フレーム使用するのだとしたら、あえて最大Bフレームを設定する必要はないはずです。2に設定しようが3に設定しようが必ず4まで使用されるならあえて4に設定するよう書かないはずです。
Look-aheadが使用するBフレームの数はOBSで設定した最大Bフレームの数に制限される。と考えていいと思います。
・Look-aheadを使用すると何が変わるか?
Look-aheadはキーフレーム間隔を最適化します。
これは非常に大きなメリットです。
![画像5](https://assets.st-note.com/production/uploads/images/69022937/picture_pc_d94d36f5e934dbe9d11d43eeea6f67ef.png?width=1200)
Look-aheadをオンにすると、キーフレームがシーンの切り替わるタイミングで挿入されるようになります。
![画像6](https://assets.st-note.com/production/uploads/images/69023031/picture_pc_84bbc8ac6be23ef42d1461fdfa904ae8.png?width=1200)
↓Look-aheadがオフの場合、シーンチェンジは一切考慮されることなく、等間隔でキーフレームが打たれます。
![画像7](https://assets.st-note.com/production/uploads/images/69023091/picture_pc_48453c61357b0c0999d72b32c079372f.png?width=1200)
![画像8](https://assets.st-note.com/production/uploads/images/69023108/picture_pc_422195a399d6dd4dee2ea5d137626b43.png?width=1200)
![画像10](https://assets.st-note.com/production/uploads/images/69030003/picture_pc_92775c607a176a01c71a8da953dabad7.png?width=1200)
↑このときはキーフレーム間隔2秒で検証していました。
Look-aheadがオフの場合は常に等間隔でキーフレームが打たれていますが、オンにすると変わります。
オンの場合も基本的には2秒間隔ですが、時折2秒を下回ることがあります。それがLook-aheadの判断によって挿入されたキーフレームです。
この時の検証では、Look-aheadの判断で挿入されたキーフレームは全てシーンチェンジのタイミングになっていました。
・キーフレームがシーンチェンジのタイミングで挿入されるアドバンテージとは?
動画は3つのフレームから構成されます。
Iフレーム(キーフレーム):最も情報量が多いですフレームです。そのフレーム全ての情報を持っています。
Pフレーム:直前のフレームを参考に作られるフレームです。データ量を減らす役割があります。
Bフレーム:前後のフレームを参考にして作られるフレームです。処理量は多いですが画質が良いです。同じくデータ量削減において大きな役割を果たします。
この3つのうち、PフレームとBフレームは、Iフレーム(キーフレーム)なしでは表示できません。
そしてPフレームとBフレームは、映像の大きな変化に対応することがあまり得意ではありません。
![画像9](https://assets.st-note.com/production/uploads/images/69025095/picture_pc_f6e0102ec5adc2b77a470e50e5b35ec4.png?width=1200)
Look-aheadをオンにすると、シーンが切り替わった最初のフレームにIフレームが来るように最適化されます。
オフだとキーフレームは常に等間隔です。シーンチェンジのタイミングでPフレームやBフレームが来る可能性が高くなります。
・画質に差は出るのか?
Look-aheadオンオフによって画質に差が出るのか、まったく変わらないのかを検証します。
![](https://assets.st-note.com/img/1667274410930-QevHkvIAWB.png?width=1200)
![](https://assets.st-note.com/img/1667277141136-1XajzD76Og.jpg?width=1200)
分かりやすくするために拡大します
![](https://assets.st-note.com/img/1667276987279-H26HSPPHh8.jpg?width=1200)
シーンの最初のコマがキーフレームであるかどうかで違いが出ます。
そしてその差はそのまま、シーンの最後のコマまで続きます。
![](https://assets.st-note.com/img/1667277920440-hptIvt0nqx.jpg?width=1200)
分かりやすくするために拡大します
![](https://assets.st-note.com/img/1667278714543-B2oKJo4wPH.jpg?width=1200)
シーンチェンジのタイミングで情報量の大きいIフレームが来ることで、直前のフレームを参照するBフレームとPフレームにいい影響を与えます。
Look-aheadはBフレームを0にできる
Bフレームは前後のフレームを参照するため、前後のフレームに差がありすぎると困ってしまいます。
上の比較画像がまさにです。Look-aheadオフの場合、シーンチェンジのタイミングでIフレームが来なかったことで、直前のシーンの影響をもろに受けてしまい、変化に対応しきれず、細部のクオリティが下がってしまっていました。
そういう状況でBフレームを0にできるようになるというのは有利な点と言えます。
一方で、Look-aheadをオフにすると、動きの激しい場面でも必ずBフレームが挿入されてしまいます。(最大Bフレームを0に設定しない限りは)
しかし、Bフレームは画質向上において大きな役割を持っているので、最大Bフレームを0に設定するのはオススメできません。
以上のことを踏まえてLook-aheadの使用をお勧めします。
「いや、そんなん言うてもやっぱり不安だわ」という方はまず、最大Bフレームを2に設定したままLook-aheadをONにしてみるというのもいいかと思います。