OBSで突然発生したフレームドロップの原因がわかった話
経緯からずらずら書くので簡潔に結論を知りたい人は目次からどうぞ。
カクつきの発生
最初にこの映像のカクつきが発生したのは、ゴーストオブツシマを最初に配信した時。
パッと見、ちょっとした回線ラグにしか見えないので、特に誰からも指摘されず、自分で気づいたのも配信終盤くらい…
いや、配信中は気づかなかったかも…?
状況整理
まず、わたしの配信環境は、自己紹介記事やYouTubeの概要欄にも書いてますが、ゲーム用の自作PCと配信用のノートPCがあって、配信用ノートPCに外付けのキャプボを接続していて、そこにゲーム用PCやPS4、Switchなんかをセレクターで接続しています。
今回問題が起きているのは、配信用ノートPCのOBSで発生しているのは間違いありませんでした。
このラグが発生する前に配信したときから、配信用ノートPCの設定類は何一つ変えていない状況だったので、正直原因に見当がつきませんでした。
※ラグ発生の1つ前の配信がこちら
また、OBS以外の動作は何一つ問題はなく、FaceRigやボイチェンの負荷も全く関係ありませんでした。
原因の探求
先にいうと、私のOBSの出力設定は以下のYouTubeを参考にして、ビットレートはかなり高めに設定しています。
まず、ラグの具体的なエラーメッセージとしては、OBSで録画または配信中、定期的に左下に「エンコードが高負荷です! 映像設定を下げるかより高速のエンコードプリセットの使用を検討してください。」と表示されます。
このエラーメッセージでググると、大体は以下の対策が出てきます。
・出力解像度を下げる
・フレームレート(FPS)を下げる
・ビットレートを下げる
・CPU使用プリセットをfasterやveryfastにする
・エンコーダがx264の場合はNVENCを使ってみる
先に書いたとおり、高ビットレートの設定を使用していたので、一旦それをすべて削除して、上記をすべて試しました。
全く解決しませんでした。
OSや何かシステム側の問題かと思い、通常のWindows Updateのほかに、Windows10のビルドバージョンもアップデートしましたし、Intelのチップセットドライバの更新とかもすべて実施しましたが、何も変わりませんでした。
さらなる原因探求
よりピンポイントな解決策を探るために、原因特定のためOBS上で確認すべき箇所がないかを探しました。
すると、OBS上部メニューの「表示」>「統計」から、どの処理で問題が起きているかがわかるという情報を得ました。
そして、統計ウィンドウと、タスクマネージャのCPU使用率を眺めていると、あることがわかりました。
「レンダリングラグが原因で逃したフレーム」や「エンコードのラグが原因でスキップされたフレーム」を検索キーワードとしてさらに調べました。
しかし、結局出てくる対策はさっきと同じ。
30秒おきにラグが発生するということは、なにか周期的な読み込みが原因じゃないかという予想も立てて、常駐ソフトなどもすべて確認しましたが、何も変わらず、何もわかりません。
初心に帰り、もう一度「本当に何も変えてないか」思い出す
やはり原因は「確実に問題なかった時」…つまりダクソ配信をした時から、「問題が発生した時」…つまりツシマを最初に配信した時までの間のどこかで、何らかの変更が加わったために起きるようになったと考えるのが筋です。
とはいえ…配信用ノートPCは本当になにもイジっていない。
最悪、配信用ノートPCもOSクリーンインストールするかぁ…?
配信用ノートPC『も』OSクリーンインストール…?
★原因特定:OBS上ソースの読み込み先に注意★
そう、配信用ノートPCは何もいじってなかったんですが、ゲーム用自作PCの方は、問題が発生したと思われるその間にOSをクリーンインストールしたんです。
でも、ゲーム用自作PCと配信用PCの接点は外付けキャプボつまりHDMI経由。
それでシステム的に影響を及ぼすはずが…
いや、本当にHDMIだけか?
ルータ経由でホームネットワークに繋がっているぞ。
しかも、前にSEKIRO配信で「できるだけ死なない」配信を2PCでやろうと思って準備してた時、死亡カウントはゲーム用PC上のテキストファイルに自動記録されるMODを使ってそれをOBS上にネットワーク共有で読み込みに行ってなかったか…?
そのOBSソース、ネットワークアドレスがそのままになってるけど、ゲーム用自作PCはOSクリーンインストールしたから共有設定もリセットされて、ファイルが接続できなくなってるんじゃないか…?
それ、30秒に1回、存在しないものを読み込みに行ってラグってんじゃないのか…?
はい、テキストを読み込みに行っていたOBS上のソースを削除したら、直りました。
★結論★
つまりは、OBS上のソースで、ファイルを読み込むタイプのものについて、その対象のファイルが削除されていたり、NASとかネットワーク上のファイルだった場合は接続先の設定が変わっていたりして、今OBS上で設定されているファイルパスでは参照できなくなっている場合に、今それを表示していなくてもソースとして存在していると、30秒に1回「ないものを探しに行く」みたいな状態が発生して、この問題が発生することがわかりました。
解決するためには、そのOBS上のソースを消すか、参照先を正しいものに修正すれば大丈夫です。
気づいてみれば本当にあっけないけどこれ自己解決するのに2~3日使った気がする…
本当にパソコン難しい…なんもわからん…
おわり
役に立ったぜ!という方は良かったら私のお小遣い稼ぎにご協力ください。
下記のリンクを踏んでからAmazonで自分用になんか買ってもらうと、アフィリエイトでいくらか私に入りますので喜びます(欲しいものリストとかじゃなく、紹介料的なやつです)
または、私がYouTubeにてメインに活動しているジャンル、大人のグッズを下記から購入いただけるとAmazonよりもたくさん紹介料が入りますので喜びます。