APEX legendsのOBS配信での画面のカクつきに関する一考

前提

この記事ではAPEX legendsをOBSでゲーム配信するときのカクつき問題についての情報を整理します。ゲームの配信をされる方は、コンピューターに関する知識を蓄えることが本業ではないと思いますので、そういう方々の役に立てればと思います。

 

ただし、これから説明する内容は、私が実際に試した方法ではありませんので、有効性は未確認であることを悪しからずご了承ください。

 

なお、後のほうにも書いていますが、OBSの開発者によると「Windows 10のゲームモードをオフにして、ゲーム内の垂直同期をトリプルバッファにする」ことがオススメだそうです。まずはこの二つを確認してみてください。(Streamlabsはゲーム内の垂直同期の無効設定をおすすめしていますのでトリプルバッファが気に入らない場合はこちらも試してみてください)

 

また、デュアルディスプレイでそれぞれの画面のフレームレートが異なる方は、OBSのプレビューをOFFにするのも試してみるといいと思います(プレイ中だけオフすればいいですし、すぐオンに戻せるので試しやすいです)。

 

Windows 10の「ゲームモード」を無効にする 

Windows 10には「ゲームモード」という機能があります。場合によっては、この機能をオフしたほうがOBS配信時のカクつきが低減されるということですので、解説いたします。(OBSの開発者はAPEX配信ではオフしたほうがいいと言っています)

 

本来、Windows 10のゲームモードはゲームを実行するときのPCの性能を上げるとともに、Windowsの機能での録画などを提供する便利なものです。(PCの性能自体はハードウェアの性能で決まりますので、実際にはゲームの実行向けにWindowsの動作を調整しています)

 

よって、ゲームをするならゲームモードはONのほうがよいはずですが、どうやらこの機能はゲームの優先度を他のアプリより高くすることで実現しているようなので、OBS配信に使われる性能が下がることになる=カクつく原因になることがあるようです。

 

 

ちなみにOBSのサイトではゲームバー・ゲームモード・ゲームDVRともにOFFがオススメだと書かれています。ただしこの記事は英語です。

https://obsproject.com/wiki/how-to-disable-windows-10-gaming-features

 

以下の記事に設定方法が日本語で記載されています。

https://vip-jikkyo.net/fps-drops-in-obs-studio#Windows_10

 

なお、Windows Updateによって設定が初期化される場合がありますので、しばらくしてまたカクつくようになった場合などは設定を再確認してください。

 

OBSの設定を変えてみる

OBSの設定変更については先ほど掲載した記事の全文がたいへん参考になります。

https://vip-jikkyo.net/fps-drops-in-obs-studio

ただ、こちらだけでは、PCに詳しくない方には少し解説が不足している気がしますので、捕捉を致します。(またAPEXの場合にはやらないほうがいいんじゃないかなと感じることも捕捉します)

 

OBSのエンコーダーの設定について

OBSでもっとも基本的なエンコーダーはx264ですが、これはCPUで動画の処理をしますので、CPUの使用率が高い場合はカクつきの原因になります。

 

それに対して、nVIDIA GeForceシリーズのGPUが搭載されたグラフィックボードを使用している場合は、「NVENC」や「NVENC(new)」を選ぶとGPUに大半の動画処理を任せることができるので、CPUの使用率が高くてGPUの使用率が低い場合はこちらの設定のほうがよくなります。

(しかし、逆に言えば「GPUの使用率が高い場合はNVENCにはしないほうがいい」ということになります。APEX配信はGPUの使用率が高くなるのが問題だとOBSの開発者が言っているので、NVENC以外の設定にするのも一考の価値があるかと思います)

 

よって、x264が一つの候補になりますが、Intel製のCPUの場合は、CPUにある動画エンコード処理機能を優先的に使う「QuickSync H.264」というものがあるそうですので、選択可能なら、こちらを試してみる価値はあると思います。

 

また、x264でもCPU使用のプリセット設定をveryfastからsuperfastやultrafastに変えることをあわせて検討してください。これによりCPUの使用率を下げることができます。

(なお、CPUの負荷が低い設定=画質が悪い設定、ですのでご注意ください)

 

最終的にどれが一番いいの? ですが、CPUとGPUの組み合わせ(と同時に動いているアプリ)次第なので、実際に試してみるしかないところです。

 

APEX Legendsの場合、降下時や戦闘時の負荷が高く、よくカクつきが見られるようなので、エンコーダーの設定を変えて実際の配信を行うか、OBSの録画機能を使って、動画のこの辺りをチェックしてみましょう。

 

出力解像度・フレームレートについて

解像度が高いほど・フレームレートが高いほど、負荷は高くなるので、PCの性能が低い場合にはこれを下げるのがてきめんに効きます。が、FPSゲームであるAPEX legendsの配信では60fpsにしたいでしょうし、解像度も1920x1080のいわゆる1080pにしたいところでしょう。ですので、ここでは詳しく解説しません。

 

OBSのプレビュー機能をオフにする(デュアルディスプレイの人向け)

複数のディスプレイを使用していて、対応フレームレートが違う場合(144Hzと60Hzの組み合わせなど)は、OBSのプレビューをオフにすると改善することがあるようです。

 

プレビューが見れないと今視聴者向けに表示している画面がどうなっているかわからないので、配信者には不便ではありますが、その辺はスマートフォンで自配信をチェックするとか、必要なときはプレビューをオンにするなどの手段で対応できるかと思います(配信を止める必要はなく、右クリックでオンオフするだけなのでさほど問題にはならないはずです)。

 

なお、解説の記事では60Hz化も対策として挙げられていますが、ゲームプレイも60fpsになるので基本的にはオススメできません。

 

OBSの開発者によるAPEX配信向けの設定について

先に簡単に触れていますが、2019年2月にOBSの開発者がAPEX配信する際のオススメ設定をツイートしています。(2019年の情報なので、既に古くなっている可能性がありますが)

https://twitter.com/OBSProject/status/1093974215877951493

 

英語なので翻訳しますと、「APEXのOBS配信でフレームレートが下がってカクつきが発生するのはGPUを使い過ぎるせいです。よってGPUの使用率を下げる必要があります。簡単な方法は、『APEX内の設定で垂直同期をトリプルバッファにするとともに、Windows 10のゲームモードを無効にする』ことです。」とのことです。

 

 なお、Streamlabs(スパチャがきたときに画面に通知を出したりできるサービス。配信者なら知ってる方も多いかと)は「垂直同期をオフにする」ことを対策として挙げているようです。どちらも試してみたいところですね。

(若干見え方も変わるので、プレイに影響がないことも含めて試してください)

 

グラフィックボードがGeForceの場合のみの設定変更

GeForceならではの機能がカクつきの原因となる可能性があるとのことです。

機能は二つありまして、一つはShadowPlay機能です。ゲームの録画機能などを提供するものですが、OBSやWindowsのゲームモードとはまた別のものになります。これまで使ったことがないとか、必要がないなら無効にしておいたほうがよいでしょう。

 

二つ目は、G-Syncです。nVIDIA GeForceシリーズとG-Sync(またはFreeSync)対応ディスプレイを使っている場合、G-Syncという機能が有効だったり無効だったりしますので、これを切り換えてみるのも確認事項の一つになります(試してみるかどうかの優先度はあまり高くないと思いますが……)。

ちなみにG-Syncはプレイ時の画面表示を滑らかにするためのものですから、オフにしたときにゲームプレイの体感が悪くなるならやめときましょう。

 

nVIDIAのドライバソフトウェアの更新で設定が初期化される可能性があるので、時折確認してみてください。

 

他の項目について

元の記事は、他の項目についてもよくまとまっていますので、ぜひ目を通してください。

また、OBSのアップデートで設定が初期化される可能性があるので、カクつき問題が再発したら再確認してください。

 

そもそもなぜカクつきが起きるのか?

そもそもカクつきはなぜ発生するのでしょうか?

いまさらですが、原理を解説しておきます。

 

YouTubeに配信する例で解説しますが、まずPCでゲームを動かしています。OBSは、その画面を取り込んで、マイクから入ってくる音声とミックスして動画にします(いわゆる動画エンコードという処理)。

 

そして、エンコードができる端からYouTubeに送信しています(これは「流れ」なので英語ではそのまま「ストリーム」と呼ぶことがあります。視聴者が見るときも同じような仕組みなのでこちらも「ストリーム」と呼びます)。

 

さて。配信者が送っているゲームのライブの動画は、OBSの設定の通りの解像度・フレームレートです。しかし、YouTubeライブ配信を見ている視聴者は色んな画質(解像度・フレームレート)で見ることができます。この仕組みがどうなっているかというと、YouTubeは送られてたきた動画のデータをさらに複数の形式に作り直す(エンコード)しています(……のはずです)。ここはYouTubeのサーバーでの処理です。

 

最後に視聴者がYouTubeが作り直した動画のデータを、自分のPCやスマートフォンで受け取って、画面に表示してスピーカーやイヤフォンを鳴らしているわけです。

 

では、画面のカクつきが起きる原因になる場所はどこでしょうか。

可能性としては「全て」です。しかし、配信者側で気にしても仕方の無い項目がありますので、その辺りを解説します。

 

配信者のOBSでの動画作成が間に合わない場合、フレーム(一枚の絵)を跳ばして描画します。例えば、60fpsは60秒に60枚の絵を作るということですが、手抜きして1秒に1枚にすれば処理が楽になります。なので、性能が足りないときは適度にOBSのエンコーダが手抜きをします。つまりカクつきます(CPUやGPUの処理が間に合わない場合です)。

ちなみにゲームのほうではGPUが同じことをしていますので、性能の低いGPUだったり、「重いゲーム」と言われる高性能を要求するゲームの場合、フレームレートを高くできない(60fpsにはできても144fpsは無理、など)わけです。

 

次に、OBSからYouTubeに動画を送る場合ですが、これが間に合わない場合も似たような手抜き処理をOBSが行いますから、カクつきます(主に回線速度が足りない場合です)。

ちなみにOBSのビットレートを下げる対策はデータ量を減らす設定なので、主に回線問題に効きます。(エンコーダーの作り次第ではありますが、画像圧縮の程度を下げるのでCPUやGPUの性能問題にも多少は効果があります)

 

続いて、YouTubeでのエンコードですが、YouTubeは全世界からのライブ配信に対応するため、これを多数のサーバーで行っているわけですが、調子の悪いサーバーを引いたときは動画エンコードが間に合わないのでカクつきます。(配信サイト側の問題なのでどうにもできません。YouTubeなら配信枠を取り直すことで「サーバーのガチャ」みたいなことができますから、枠の取り直しでよくなる場合があるのはそういう理屈です)

 

YouTubeから視聴者のPC・スマートフォンにデータを送る場合も同じことが言えます。ただし、これはYouTubeの配信用のサーバーの調子が悪い場合と、視聴者の回線の調子が悪い(あるいは、回線の混み具合だったりスマートフォンのパケット契約の量を使い切っているとかの)場合があります。(これは配信サイトか、視聴者の環境のせいですのでどうにもできません。配信サイト側の場合は枠の取り直しでガチャをする手はあります)

 

視聴者が動画データをしっかり受け取れていても、最後の最後の画面表示でカクつく場合もあります。沢山のブラウザのタブを開いていてメモリが足りないとかCPUの使用率が高い場合は動画を再生する性能が不足する、というわけですね。(これは視聴者の環境のせいなのでどうにもできません)

 

最後に

長々と書いてしまいましたが、配信をされている方の参考になれば幸いです。

また、ここは違うよ? などの指摘がありましたらコメントをください。

 

2020/07/25 追記 discordのハードウェアアクセラレーションについて

discordの設定の「テーマ」のところに「ハードウェアアクセラレーション」があります(Mac版の場合なので、Windows版で設定の場所が違ってたらすみません)が、こちらもGPUを使ってDiscordの描画を支援する設定になりますので、GPUの使用率が高い場合はオフしたほうがいいかもしれません。(注釈に書いているフレームの低下が生じる場合〜 というのはゲームプレイ時のフレームの低下の話ですが、OBS配信への影響が発生する可能性はあります)