どうも。ちぇるしーです。
ノートPCでなんとかBMS配信(YouTube Live)できないかと色々頑張ったのでその備忘録。Beatoraja編とは銘打ったものの多分続かない。
インターネットの海には特に説明もないまま「ここは○○を選択しましょう。」とだけ書いてある記事ばかり転がってるので自分なりにまとめてみた。
結論から言うとある程度妥協すれば720pでの配信が行えるようになった。ただ最大でも10分ちょっとしか配信テストしてないから長時間続けると重くなったりするかもしれない。(追記:1時間配信したけど大丈夫だった)
配信についての一般的な内容も書いてるから少しでも役に立つ人がいてくれたらなと。詳しい人にとってはあたりまえ体操なのでブラウザバックどうぞ分からないところとかコメントで指摘してくれるととてもとても助かります。
PCスペック等
OS : Microsoft Windows 10 Home 64-bit
CPU : Intel(R) Core(TM) i5-6200U @ 2.30GHz
RAM : 8.00GB
GPU : Intel(R) HD Graphics 520
OBS ver26.0.2 / Beatoraja ver0.8 / skin:LITONE5
設定の話をする前に
超基本的な設定はこの記事を参考に既に済ませておいた。とはいえ画質の設定以降は変えまくることになる。
【YouTube Live】OBSを使ってゲーム配信するための設定方法 - 新・VIPで初心者がゲーム実況するには
で、まずOBSのソースの話を。
PCゲーム画面を映そうとするならソースは主に「ウィンドウキャプチャ」、「ゲームキャプチャ」、「画面キャプチャ」の3種類から選ぶが、どれが最適なのか。
・ウィンドウキャプチャ
そもそもウィンドウ欄に"[java.exe]:beatoraja 0.8" が出てこなかった。なんで?
・ゲームキャプチャ
「フルスクリーンアプリケーションをキャプチャ」と「特定のウィンドウをキャプチャ」のどちらでも可能。もし他にフルスクリーンの窓を開いているなら後者。一応configの窓は最小化しておいた方がいいかも。OBSとBeatorajaの窓は同一の仮想デスクトップに置いても別々に置いても大丈夫だった。少し時間を置くかウィンドウを行き来させないとOBSに映らないことに注意。
・画面キャプチャ
普通に映るがゲームキャプチャと比べてPCが重くなるらしい(実際少し重かった)ので却下。
どのキャプチャ方法がどんななのかというのはこの記事参照。
OBS Studioに画面を映したい。頻繁に使う4つのキャプチャー方法 - 新・VIPで初心者がゲーム実況するには
OBSの設定について
本題の詳細設定。弄った項目は以下の通り。
○出力タブ
○映像タブ
- 基本(キャンバス)解像度
- 出力(スケーリング)解像度
- 縮小フィルタ
- FPS
ここから順に設定内容とかを書いていく。目標としては画質は最低限だけ確保してとにかく負荷を軽くする方向で。
!重要!
追記:裏で色々開きっ放しだから重いのでは?と思い(ギャグではない)OBSやら必要なものとタスクマネージャ以外全部閉じたところ、なんとめちゃくちゃ改善。おそらく大量にタブを開いてたChromeが原因かなと思われ。これに気付いたのがこの記事をほぼ書き終えた段階だったから書き直すのめんどくさいし追記という形にしておく。
出力タブ
・出力モード
一応どちらも試したが詳細の方でいい。「基本の方が軽い」と書いてる記事もあったが細かく指定できる分詳細がよさげ。
・エンコーダ
ソフトウェアエンコーダの"x264"とハードウェアエンコーダの"QuickSync H.264"の2種類が選べた。
一般的にソフトウェアエンコーダは画質は良いがPC負荷が重く、ハードウェアエンコーダは逆に画質は落ちるがPC負荷が軽いので、当然後者を選ぶべき…なのだが、なぜかx264の方が断然スムーズだった。というかQuickSyncで解像度を1280x720以上にしたら秒単位で固まるレベル。え?なんで??
理由は分からないがとりあえずx264を選択。
追記:上記の通り改善した後はQuickSyncの方が良くなった。画質上げまくっても大丈夫!という程ではなくゲーム側のFPS値が若干高い程度だけど。
・レート制御
CBR(Constant Bit Rate)は固定ビットレート、VBR(Variable Bit Rate)は可変ビットレート、ABR(Average Bit Rate)は平均ビットレートのこと。CBRの方が安定するらしく、YouTube側にも推奨されているのでこちらを選択。
・ビットレート
めちゃくちゃ難儀したところその1。高いほど画質も上がるが、高ければ高いほどいいというわけではない。
まず、上り回線速度の7~8割は超えない*1ようにしないと配信がカクつく恐れがある。幸いにも回線速度は50~60Mbpsと十分すぎるほどだったので特に気にせず。計測は下のリンクから。*2
speedtest - Google 検索
もう一つ、YouTube側で「この解像度ならビットレートはなんぼからなんぼね」というような指定*3がされており、その範囲内で設定しないと配信中に怒られが発生する。(後述)
とりあえず2000kbpsにした。
追記:当初より状況が改善したとはいえ高すぎるとYouTube様にバッファが発生云々のエラー吐かれるのでいい塩梅を探った結果3000bpsに。
・キーフレーム間隔
デフォルトでは0(自動)や3になっているが、YouTubeに推奨されている通り2にする。
・CPU使用のプリセット
エンコーダによって多少名称が変わるようだが、画質重視か安定(負荷の軽さ)重視かを選ぶところ。とにかく負荷を軽くしたかったので、ultrafastを選択。けどどうやらveryfastとかでも十分負荷は軽いらしい。
追記:あまり負荷の増大を感じず、画質がほんの少し良くなった気がしたので最終的にqualityを選択。
・プロファイル
ここもプリセットと同じ理由でbaselineを選択。
追記:プリセットと同じ理由で最終的にhighを選択。
・Bフレーム
x264の場合はx264オプションの欄に"bframes=n"と入れる。YouTubeに推奨されているので2にしたが、YouTube側の設定で低遅延や超低遅延にしている場合は0の方が安定するらしい。今回は通常の遅延にしているため2でいいのだが、一応0も試してみたところあまり違いは分からなかった。また、一般的に上記のキーフレーム間隔と同じ数値にした方がいいとのこと。
映像タブ
・基本(キャンバス)解像度
この数字が大きい小さいからどうというよりは出力解像度と揃える方が画質、負荷両方の面で良くなるという理由で変更した。出力解像度を最終的に1280x720に設定したのでこちらも同じく1280x720に。
・出力(スケーリング)解像度
めちゃくちゃ難儀したところその2。なるべく高い解像度にしたかったが、他の設定をどう弄っても解像度が高い程ゲーム側が重たく感じた。また、最低の640x360では流石に画質が低すぎたので852x480を選択。
追記:十分ゲームが動いてくれたので1280x720に変更。今回はそこまで画質は求めていない為1920x1080は試していない。
・縮小フィルタ
ランチョス>バイキュービック>バイニリアの順に画質が良く、負荷が重くなる。が、ここもプリセットやプロファイルと同じ理由で最終的にランチョスを選択。
・FPS
音ゲーなので60fpsにしたいところだが、ビットレートの謎制限(後述)もあったので今回は30fpsで妥協。正直30fpsでもそんなに気にならなかった。色々選べるが基本30か60の二択でよい。
YouTubeのエラーと原因
・「ストリームの現在のビットレート(-- Kbps)が推奨値より高(低)くなっています。ストリームのビットレートは -- Kbps を使用することをおすすめします。」
ビットレートの項目で書いた通りビットレートがYouTubeの指定した範囲外の場合に出る。OBSで設定した値が指定範囲内の場合でも配信状況によって実際のビットレートは上下するのでこのエラーが出ることがある。
・「動画の解像度を確認してください。現在の解像度(852x480)は最適ではありません。」
解像度を852x480に設定した時に出るエラー。OBS側で選択できる解像度が852x480なのに対して、YouTubeが指定している解像度はよく見ると854x480なので設定欄を書き換えてあげるとエラーは……出る。は?
どうやらOBSで854x480と指定しても852x480と認識してるっぽい。YouTubeくんさぁ…
・「YouTube が受信している動画が少ないため、滑らかなストリーミングを維持できません。視聴者側でバッファが発生します。」
このエラーが出るときはビットレートを高め*4に設定してる時*5で、それより低くすればほぼ出なかった。が、調べるとどうもビットレートに対して回線速度が足りていない時に出るエラーの様。どうして
このエラーのせいであまり高いビットレートを設定できなかった。
配信してみる
実際の配信はこんな感じ。ちなみにBMSは当時まだ始めて1週間ぐらい。サドプラ…
無事配信できた!パチパチ。
補足メモ
- 上でも書いたけどYouTube側の設定で選べる遅延は今回は通常の遅延に設定。
- OBSを管理者権限で実行すると配信時のカクつきが抑えられるので推奨。
- 出力タブの「配信サービスのエンコーダ設定を適用する」にチェックを入れるとキーフレーム間隔等を配信サイト側で自動で設定してくれるらしいが、どれが自動でどれが自動じゃないかが分からなかったので今回はチェックを入れていない。
- Chromeを開いていると重い原因の一つにハードウェアアクセラレーションという機能があるのでオフにするといいかも。自分は既にオフでも重かったので潔くChrome自体を閉じた。
一から設定する時は
基本この順序で決めていけばいいはず。
エンコーダはx264以外を選ぶ。
→上り回線速度と指定ビットレート範囲を見比べて解像度(とFPS)、ビットレートを決める。
→配信テストしながらビットレートやプロファイル等の設定を色々試す。
最後に
めっちゃくちゃお世話になった記事をこちらに。公式マニュアルか?ってレベルでとにかくボリュームがすごかった。百聞は一見に如かず。
OBSに画質を求めるのは間違っているだろうか - 俺の外付けHDD
モンハン新作も配信できるようにしたいね