【Radeon】Twitch・YouTube配信者のためのOBS設定 ~最高画質の配信を目指して~

PC(Hardware)

こんにちは。日々最高画質の配信を目指してエンコード地獄を彷徨っているどーにゃです。

実はOBSで配信するなら素晴らしいパフォーマンスを発揮するRadeon

Radeonと言うと、最近性能がめっちゃ向上したのは知ってるけど、実際使ったことあんまりないしよくわかんないなあ…みたいな方が多いんじゃないでしょうか。

実はRadeonが優れているのはゲーム用途だけではなくて、エンコード用途でも非常に素晴らしいパフォーマンスを実現しています。正直、OBSで最高画質の配信をしよう!ってなるとRadeon一択ってくらい圧倒的な性能なのですが、あまり知られていない気がします。

今回は、そんなRadeonをより多くの方に使っていただくために、OBSの設定マニュアル的なものを作成しようと筆を取りました。

今回の記事を書くにあたって

今回の記事を書くにあたって、Sapphire Technology Japan様から「NITRO+ AMD Radeon™ RX 6950 XT PURE」をお借りすることができました。本当にありがとうございます。

絶対RX 6950 XTレベルのグラフィックカードは必要ない気がするのですが、「どうせならおっきくてかっこよくてつよいやつがいいよね!」と最近の小学生でも言わなそうな頭悪理論をかまされて送りつけられ…いただきました。

これだけのグラボがあれば設定的には余裕のパフォーマンスを発揮してくれるはず。

配信プラットフォームはどこでもいいの?

さて、Radeonで配信するならどのプラットフォームと相性がいいの?というお話ですが、個人的にはYouTubeをおすすめします(あくまでおすすめってだけで、うまくビットレートを絞ればTwitch等のプラットフォームでも高画質化はできますし、僕はTwitchで配信しています)。

YouTubeで配信する際の技術的なメリットで一番大きいのは、ビットレートが無制限であげることができることに尽きると思います。他にも細かいコーデックとかの話もあるのですが、他の配信サイトが6000kbpsあたりで制限しているのに対して無制限というのは流石天下のGoogle…といったところでしょうか。

Radeonを使ってエンコードするメリット

Radeonを使ってエンコードする最大のメリットは、その設定項目の細かさにあります。

Radeonグラフィックカードをエンコードに使用する場合、「AMD Advanced Media Framework」を使ってエンコードすることになります。こちらの設定オプションがOBS上でかなり細かく設定できるため、設定を追い込みやすいというメリットがあります。

また、CPUのエンコードに比べてグラフィックカードのほうが配信のようなリアルタイムエンコードに有利なので、Radeonは配信向けにとても使いやすいエンコード手段だと思います。

Radeonを使ってエンコードするデメリット

デメリット…といいますか、めちゃくちゃ高画質の配信ができるようになる反面、そういった設定にするとバクバクとビットレートを無尽蔵に喰い始めます(特にQP)。

そのため、Twitchを始めとしたビットレートの制限が大きいプラットフォームでは、正しい設定をしないとビットレートの壁が立ちはだかり、配信画面がとてもやんちゃなことになってしまうこともしばしば。

もちろん使えないわけではないですが、できればビットレートを使いまくれるYouTubeで活用するのがベストだと思います。

もしTwitch等のビットレート制限があるプラットフォームで使うということでしたら、必ず絞れる設定は絞って使う等の工夫をするようにしてください。

(2022/12/12追記) OBS Ver 28で変更されたエンコーダ設定

OBSのメジャーアップデートとなったVer28にて、ついにRadeonを使ったエンコードもBフレームを使えるようになりました。それに伴い、設定画面も以前に比べてかなり簡略化しました。

下記にて詳しくAMFオプションについての解説をしていますが、これらのオプションはすべて「AMF/FFmpegオプション」の項目にコマンドで入力する形式になりました。
記述方法は「parameter=value parameter=value」のようなおなじみの方法です。

下記の記事は以前のOBSバージョンで作成しているので設定の仕方は現在と異なりますが、機能の説明に関してはそのまま当てはまります。

OBSで設定できる、AMD Advanced Media Frameworkのエンコード項目

設定オプションの中身は、x264のオプションコードの内容とほぼ同じで、OBS上でオプションコードの中身をそのまま設定できるようなイメージです。

できるだけわかりやすく細かく解説するようにしている反面、ちょっと難しい用語も出てきます。もしこの記事について聞きたいことや相談などあれば、Twitchにて配信機材や設定について雑談配信しておりますので、是非僕の配信に遊びに来てください。

Twitch
Twitch is the world's leading video platform and community for gamers.

では、OBSで設定できる項目を詳しく解説していきます。

出力モード

「詳細」を選択しましょう。

表示モード

一番下に表示されている項目ですが、細かい設定をしていくのに必須の項目なので先にご紹介します。
出力モードよりもより細かく設定できるオプションの表示数を設定する項目です。
この記事を読んで高画質を目指そう!という方は「マスター」を選択しましょう。

プリセット

各プラットフォーム別に用意されているプリセットを読み込むことができます。
正直このプリセットはどれもあまりよろしくない…と個人的には思っていますので(だからこそこの記事を書いているわけですが)、ここでプリセットは選択しないです。

品質プリセット

「品質」を選択しましょう。
エンコード後の画質に大きく影響を及ぼします。グラフィックボードの負荷に大きく影響する項目なので、重すぎて配信がカクつくようであればバランスなどにしてみてください。

プロファイル

x264のプロファイル選択する項目です。使えるオプションの数が変わってきますので、この項目は基本的に「High」で問題ないです。

プロファイルレベル

プロファイルレベルは、再生に利用するメモリや処理の重さなどの上限が定められたものです。レベルごとに、画面解像度やフレームレートの上限が定められています。プロファイルレベルが低いと互換性が担保される代わりにサポートされる最大解像度が下がり、逆に高いと互換性が下がる代わりにサポートされる最大解像度が上がります。

困ったらとりあえず、1080p60で配信する際には「4.2」にしておきましょう。プロファイルレベルを上げすぎると再生できない環境が出てきてしまう可能性があるので、注意が必要です(今はそこまで気にしないで大丈夫だと思いますが…)。

コーディングの種類

エンコードする際のコーディングの種類を設定できます。

最高画質を狙うなら、エンコード負荷はかかるもののエンコード後のデータが少なくなる「CABAC」にしましょう。特にTwitchなどのビットレート制限があるプラットフォームの場合は大事な設定です。

最大参照フレーム数

最大参照フレーム数は、P-フレームもしくはB-フレームがいくつ前までのフレームを参照することができるか、という設定です。
値を大きくすると画質が向上しますが、エンコード負荷が大きくなります。
0~16の間で設定することができますが、3~9の間が画質向上が効率的に見込める数字と言われています。
最初は9に設定してみて、重ければ下げていくという設定の仕方でいいと思います。正直3で十分な気もします。

レート制御方式

この設定に関しては色々な意見が別れるところなのですが、個人的には「固定ビットレート(CBR)」をおすすめします。
配信サイトにもよるのですが、VBRにしてあまりにもビットレート変動幅が多いと配信の安定性に影響が及ぼされることがあり、そうなってしまうと高画質どころの話ではなくなってしまうからです。
録画の場合はVBRのほうが何かと使い勝手がいいと思うのですが、配信であればCBRのほうがいいと個人的には思います。

ただ、VBRのほうが突き詰めると画質が向上するパターンもあり…、ここは環境によって変わってしまうので、どちらも試してみて安定して高画質が狙える方を使ったほうが無難だと思います。VBRをどうしても使いたい場合は、エンコード遅延の少ない「VBRLAT」をおすすめします。

プレパスモード

エンコードを行う前に一旦データを読み込んで、ビットレート分布を最適化するオプションです。
負荷はかなり上がりますが、ビットレートの改善がされるのは個人的に嬉しいので「有効」にしています。
このモードを音にするとエンコードラグが出てしまう、という場合は無効のほうがいいですが、僕の環境では出たことがありません。

目標ビットレート

エンコード後の目標ビットレートを入力します。

配信サイトで上限が決まっている場合は、問答無用でその上限ビットレートを入力しちゃいましょう。上限がないYouTubeなどは、1080p60であれば9000kbps程度、重い映像データを取り扱う場合は12000kbps~15000kbpsあたりまで上げてあげると、ブロックノイズが少なくなると思います。このあたりは取り扱うデータによって異なるので、できるだけ自分の環境でテストしてみて確認することをおすすめします。

最小QP、最大QP

量子化パラメーター(Quantization Parameter)の略。
なんのこっちゃという方も多いと思いますが、この項目がかなり画質に影響を与え、QPが低いほど画質が向上し、高いほど画質が下がっていきます。
基本的に配信の場合はビットレートを固定する場合がほとんどですが、その際に情報量の少ないフレームではQPの値を上げてデータ量を節約し、情報量の多いフレームではQPの値を下げて品質を保つ、といった機能になります。
この設定では最小QPと最大QPという形で、QPの制限幅を指定することができます。

この数値は上げ過ぎるとエンコード不可が爆発的に増え、ビットレートもものすごいことになってしまいます。目安として最小QPを「15~20」、最大QPを「25~30」あたりで調整してみるとバランス良い設定になるかと思います。僕は今は最小15、最大25に設定しています。

フィラーデータ

CBRでのエンコードというのは、基本的に指定されたビットレートを少し下回るようにエンコードされます。その際に目標ビットレートに足りない部分を「フィラーデータ」と呼ばれるダミーデータで埋めることで、CBRの動作を実現しています。
有効にすれば常に目標ビットレートを保つようにしてくれますが、目標ビットレートに常に張り付いている必要はないという方は無効でもいいかなと思います。僕は安定性を向上させるために「有効」にしています。

フレームスキップ、スキップフレーム周期、スキップフレームの動作

「無効」一択です。
エンコードデータに対して目標ビットレートが低いときにフレームを間引く機能で、カクつきの原因になりますので基本的に使いません。

VBAQ

心理視覚チューニングのようなもの、と考えていただければOKです。
1つのフレーム内で、ビットレートの配分を自動的に最適化してくれる機能です。
よほどの理由がない限り「有効」が望ましいと思います。

HRDを強制

HRDとは、仮想参照デコーダ(hypothetical reference decoder)のことです。
もうこれだけだとなんの呪文だ???という感じだと思うんですが、このオプションを有効にするとHRD用のデータというのが付与されるようになります。
この機能はデコード(再生)側に配慮した設定で、再生互換性を向上させる効果があります(特にBlu-ray disc)。
配信するときにはほとんど関係ないオプションですし、多少ビットレートも使ってしまうので「無効」でいいと思います。

High Motion Quality Boost

切り替わりの早い映像ソースを扱うときに有効なオプションです。

ゲーム配信をする僕からすると大変ありがたい機能ですので「有効」にしています。

VBVバッファ、VBVバッファサイズ、VBVバッファ初期充満

VideoBuffer Verifierの略。エンコードの2パス以降の分析結果を反映させるときに使うバッファです。

VBVバッファは「手動」、VBVバッファサイズは「目標ビットレートの2倍」、VBVバッファ初期充満は「100%」で。

キーフレーム間隔

「2.00」一択です。理由は大体のプラットフォームが2秒を指定しているからです。

キーフレームとは完全な1枚絵で、画質は一番良い代わりにサイズも一番大きいものです。
Iフレームが多いほど高画質、低圧縮率な動画ということになり、シーク(早送り&巻き戻し)の基準となるフレームです。要は多すぎてもだめ、少なすぎてもだめで、そのちょうどいいバランスが2秒ということになります。プラットフォームによってはここが2秒じゃないと弾かれる可能性もあるのでご注意を。

IDR周期(フレーム数)、I-フレーム間隔、I-フレーム周期(フレーム数)、P-フレーム間隔、P-フレーム周期(フレーム数)

全部デフォルトでいいし知らなくて良い項目です。

が、一応解説しておきます。

Iフレームというのはキーフレームと同じものです。

Pフレームは、基準となるIフレームから変化した部分”だけ”をデータとして記録して、
IにPを重ねることで次のフレームとして表示するものです。
このためIフレームよりサイズが小さく、Pフレームを使うことで動画の圧縮率が上がります。

Bフレームは、直前と直後のI、Pフレームを参照して作られるフレームです。
前のフレームと後のフレームの差分だけをデータとして記録していて、
必要最低限のデータなので最もサイズが小さいです。

これらの設定は、それぞれのフレームの間隔と周期をそれぞれ設定するものなのですが…。面倒くさい上にだいたいうまくいかないのでそのままでいいです。

デブロックフィルタ

整数変換のブロック境界のみを平滑化する機能です。意味わからん。
要は圧縮率を向上させることによって、ブロックノイズの発生を抑制する機能です。処理は重くなりますがそこまでの負荷ではないので、基本「有効」がおすすめです。

動き推定

フレーム間でピクセルがどれだけ移動したかを予測することで、ビットレートを節約できる機能です。「ハーフ&クォーターピクセル」が最もいいパフォーマンスです。

映像API、ビデオアダプター

APIとアダプターの設定ですが、デフォルトのままでOKです。

複数枚グラフィックカードを使っている方はビデオアダプターで選択することができます。

OpenCL 転送、OpenCL 変換

Open CLを使うオプションですが、基本的に使うことはないと思います。

マルチスレッド

フレーム送信、パケットの取得にマルチスレッドを使うかどうかの設定です。

マシンスペックに余裕がある場合は「有効」でいいと思います。

キューサイズ

デフォルトの「8」でOKです。画質に影響する項目ですが、負荷も尋常じゃなく上がってしまうのでデフォルトのままが一番だと思います。

最後に

なるべく細かく、かつわかりやすく説明したつもりですが、いかがだったでしょうか。

前述の通り、もし質問などあればお気軽に僕の配信やTwitterで聞いてください。雑談配信のときでなくても、全然関係ないゲーム配信とかしているときでも全然大丈夫です。

Twitch
Twitch is the world's leading video platform and community for gamers.

今回は色々な検証実験を行いましたが、「NITRO+ AMD Radeon™ RX 6950 XT PURE」はクロックも大きく振れることなく安定して動作してくれました。大型のクーラーで余裕を持って冷却できている証拠だと思います。ホワイトはMOD的な需要も多いと思いますので、気になる方は是非チェックしてみてください。

長々とありがとうございました。

コメント

タイトルとURLをコピーしました