見出し画像

ゲーム配信を低速回線でも高画質(&低負荷)で行う方法

☆(2021年8月21日追記)記事を整理しました。あくまで執筆時(2020年4月)の私の環境下での設定です。

☆(2021年11月20日追記)現在は私の回線が光回線になったし、OBSもアップデートしているので、この当時の環境を再現したり確認することはもうできません。また、この記事に投げ銭できるようにしてましたが、中止します。お金を支払ってくださった方ほんとうにありがとうございました。この記事は参考程度に見ていただければ幸いです。

■配信を低速回線でもいいかんじにする

私はゲーム配信をしています。上り回線が低速(執筆時)だし、使用するノートPCの性能もそこまでよくないのですが、どう設定したらなるべく高画質で安定して配信できるのかしらっていろいろ試行錯誤してみました。その結果、最近はかなり画質も配信も安定してるとおもいます。ネット対戦と配信を同時にするのも、遅延メモリを大きくすれば大丈夫です。

今回はその設定方法を記事にします。設定をきめるために総当りで数値をひとつずついじってたしかめたりしてめっちゃ苦労しました。記事の更新はしていく予定です。

高スペックPCと高速回線の物理パワーでなぐれる兄貴も、なにかあって低スペックPCや低速回線を使わざるをえない状況になるかもしれないのでこの設定方法を知っておくのもいいかもしれませぬ(アピール)。

また、高スペックPC回線兄貴のための配信の設定について、他の方の記事(動画)などを紹介いたします。

■回線の速度(執筆時)

うちの回線の状況は、

画像1

こんなかんじです。下り(ダウンロード)は問題ないのですが、上り(アップロード)がすごくおそい。このせいで配信のときにビットレートを大きくできません。

■ノートPCのスペック(執筆時)

画像2
画像3
画像4

CPUはcore-i5で、メモリを16GBまで増設してます。2Dゲームだと問題なく動きますが、3Dゲームになると、グラフィックの処理が貧弱なので最低の設定にしてなんとか動くくらいの性能です。最新のファイナルファンタジーとか最低の設定にしても絶対に無理ですねこれは。

今回の配信の設定は、この回線とPCの環境が前提となっております。ご了承ください。

■配信ソフト

配信ソフトは、OBS( https://obsproject.com/ja )です。
最新版をダウンロードして問題ないとおもいます。

配信の質は、主に(設定 → 出力 → 配信)と(設定 → 映像)のところの数値で変わります。

この記事では、設定すると配信のときに軽くなると判断できたところを解説します。この記事で言及していないところは、基本的にはOBSをダウンロードした時の設定のままにしています。

また、私のこの環境では配信とネット対戦を同時にしてもギリギリ問題ない場合が多いですが、配信とネット対戦と録画を同時にするのは、さすがに負荷が大きすぎてむずかしいです。

解決策としてはPCを二台にして配信とネット対戦と録画を分担したり、録画は外付けのキャプチャーボードを使用するとかになってくるとおもいます。
でも高スペックPC回線兄貴はこの記事の設定だと配信の負荷は小さくなるので、PC一台でも大丈夫かもしれません。

参照ゲーム:サムライスピリッツ零スペシャル

https://store.steampowered.com/app/1076550/SAMURAI_SHODOWN_V_SPECIAL/

■OBS(プロファイル)

画像5

右下のCPUの%が低いほどPCに対する負荷が小さくなっています。

■OBS(ソース → スケールフィルタは無効にする)

画像6

スケールフィルタは、無効にしたほうがいいとおもいます。どれつかってもあまり効果が感じられなくて、PCの負荷が大きくなりました。

■OBS(ソース → フィルタ → エフェクトフィルタ → スケーリング・アスペクト比は無効にする)

画像7

ここでもスケールフィルタをかけられますが、このフィルタもあまり高画質になるようなかんじでもなく、PCに対して負荷が大きくなったので無効でいいとおもいます。

■OBS(設定 → 一般)

画像8
画像9

私はこんなかんじに設定してます。スタジオモードはべんり。

■OBS(設定 → 配信)

画像10

ここにニコ生とかyoutubeで配信するときに表示されるキーをコピペして入力します。コントロールから配信開始を押すと入力したサイトにOBSの映像や音声が出力されます。

2021.8.21追記 ツイッチだとOBSと連携しててなんか便利です

■OBS(設定 → 出力 → 録画)

画像12

配信と別の設定で録画を同時にするとすごく負荷が大きいです。配信と録画を同時にする場合は、エンコーダ:(ストリームエンコーダを使用)にするとまだ負荷が小さいです。ストリームエンコーダじゃない録画の方法は、有料部分(変動)にのせます。

■OBS(設定 → 出力 → 音声)

画像13

標準の音声ビットレートは、128だとおもう。ここを節約(96とか)して、その分のビットレートを映像にまわすことも考えられますが、画質がそこまであげられないぶん、音楽のクオリティはよくしたいという思いから、私はここは128にしています。
録画するときはビットレートをあまり気にしなくてもいいので、256まであげたりします。

■OBS(設定 → 出力 → リプレイバッファ)

画像14

んにゃぴ…よくわかんないです。いちおうチェックを入れています。

■OBS(設定 → 音声)

画像15
画像16

ほぼダウンロードしたときのままだとおもいます。ホットキーはプロファイルのソースのところが表示されています。

■OBS(設定 → ホットキー)

画像18

ショートカットキーみたいなかんじで、キーを設定して押すといろんな動作が実行できます。私は覚えられないし誤作動する可能性もあるので設定していません。

■OBS(設定 → 詳細設定)

画像19
画像20

■映像:色空間と色範囲についての比較

参照ゲーム:100% Orange Juice

https://store.steampowered.com/app/282800/100_Orange_Juice/?l=japanese

・元のゲーム画面の映像(PCスクリーンショット)

画像21

・色空間:601  色範囲:一部

画像22

・色空間:601  色範囲:全部

画像23

・色空間:709  色範囲:一部

画像24

・色空間:709  色範囲:全部

画像25

色範囲を全部にすると、かえって色がうすくなって見えにくくなるような…?。

色空間は601のほうが若干色味が濃くてくっきりしてるかも。

結論としては、色範囲は601か709のどちらか好みで。色空間は一部の方がいい。かもしれません。

■ネットワーク:IP選択

ここに後述する「プライベートIPアドレス」を入力しています。ネット対戦が前よりも快適になったような…?。しておいてもいいとおもいます。

■【PC動作を軽くするために①】:PC画面の解像度を1280×720に変更する

※(必須では)ないです。

画像26
画像27

私はマルチディスプレイにしてます。どっちも1280×720です。ゲームの動作は軽くなりました。

■【PC動作を軽くするために②】:「sfc /scannow」をする

(参考)

/Windowsのシステム修復機能「sfc /scannow」を試してみよう

https://freesoft.tvbok.com/tips/windows/sfc.html

OBSにいつのまにか問題が起こったときに、修復してくれたことが何度かあります。

■【配信を軽くするために①】:適切な解像度とビットレートを設定する

(参考)

/一般的な動画のビットレートはどれぐらい?~youtubeの動画を調べて分かった内容をまとめます

https://blog.socialcast.jp/01/post-661/


/最適なビデオ品質が得られるエンコーディング設定を選ぶ方法はありますか?

■【配信を軽くするために②】:プライベートIPアドレスを固定化する

(参考)

/【Windows 10】「プライベートIPアドレス」の固定化方法

https://streaming-beginners.com/local-ip-address-fixed/

この記事を参考にして、OBS(設定 → 詳細設定 → ネットワーク:IP選択)に固定化した自分のプライベートIPアドレスを入力します。

■【配信を軽くするために③】:Windowsやブラウザ(Chromeなど)の更新をチェックする

配信してて動作が重くなる時は、大抵はWindowsやブラウザが更新する時が多いです。

■【配信を軽くするために④】:配信がはじまったらPCのブラウザ(Chromeなど)を閉じる

配信を始めるときはブラウザから「ライブ配信を開始する」を押して配信を始める必要があるのですが、そのあとはブラウザを閉じても配信し続けます。

スマホから自分の配信を見れば、PCには負荷がかからないとおもいます。PC2台で分担するみたいな感じですね。

ブラウザを閉じたほうが負荷は少なくなります。ネット対戦と配信を同時にする場合は、この方法を使っています。配信を止めるときはまたブラウザを開いてライブ管理画面にいく必要があります。

ニコ生だとアンコちゃん(コメントビューア)をつかえばアンコちゃんから強制的にブラウザ側の配信を終了できます。

■高スペックPC回線兄貴のためのライブ配信のエンコード設定

(参考)

/┠質を重視!ライブ配信のエンコード設定╂x264┨

【ビットレートの計算式:BPP×幅×高さ×フレームレート÷1000】

ビットレートの設定(例)
 BPP(Bits Per Pixel)
 無難なBPP:0.1375(ビットレートを抑える)
 回線に問題が無ければ、BPP:0.150

計算(例)
 解像度:1280×720
 フレームレート:30fps
 
0.1375×1280×720×30÷1000=3801.6 kbps

「BPP:0.150」だと 4147.2 kbps

◆x264プリセットの詳細設定◆

※動画の概要欄にあります。

☆↓設定でかなり変わるところです。

★OBS(設定 → 出力 → 配信)

画像28

ここの数値でかなり変わります。項目や数値の最適な組み合わせ方を探すために、ほぼ総当りで試しました。

■出力モード:詳細 ■エンコーダ : Quick Sync H264 ■配信サービスのエンコーダ設定を適用する:☑ ■出力をリスケールする:空白 ■ターゲットの使用法:quality ■プロファイル :high ■キーフレーム間隔(秒、0=自動):3 ■非同期深度:3 ■レート制御:AVBR ■ビットレート:1500 Kbps ■精度:4200 ■収束:0 ■B Frames:3

■出力モード:詳細

基本 と 詳細 があります。基本だとレート制御のAVBRがつかえないので詳細にします。

■エンコーダ : Quick Sync H264

私の環境では、エンコーダは Quick Sync H264(ハードウェアエンコード) と x264(ソフトウェアエンコード)の2つが表示されます。もうひとつ、NVENC(ハードウェアエンコード)が表示される場合もあるようです。

いずれにしても、x264はPCにたいしてすごく負荷が大きいので、ハードウェアエンコードのQuick Sync H264を選択します。

NVENCにかんしては、どの項目が表示されるのかわからないため解説はできません。x264とNVENCの2つしか表示されない兄貴は、NVENCを選んで、どうぞ。

■配信サービスのエンコーダ設定を適用する:☑

いちおうチェックをしています。あまり目立った差はないような気もしますが、郷に入っては郷に従え感。

■出力をリスケールする:空白

PCとOBSと配信の画面解像度は、一致させたほうがPC負荷が小さいし、画質も劣化しにくいようです。なるべくリスケールはしないほうがいいとおもいます。

■ターゲットの使用法:quality

quality ~ balanced ~ speed ~ veryslow ~ slower ~ slow ~ medium ~ fast ~ faster ~ veryfast

以前のバージョンでは、ハードウェアエンコードはquality ~ balanced ~ speedまでしか項目がありませんでした。veryslow以下はx264でしかつかえなかったとおもいます。
じつはveryslow以下はQuick Sync H264ではまだためしていません。

でもいちばん画質のよい、qualityで問題ないです。balancedやspeedを選ぶとすごく画質が劣化します。そもそもハードウェアエンコードはソフトウェアエンコードよりも画質はよくないです。よっぽどveryslow以下のどれかがよかったら、また更新します。

■プロファイル :high

high ~ main ~ baseline

これもターゲットの使用法と同じで、そもそもハードウェアエンコードは画質があまりよくないので、いちばんよいhighを選びます。

ハードウェアエンコード自体がPC負荷が小さいです。mainやbaselineを選んでさらにPC負荷を減らしても、そこまで配信をスムーズにする効果はないとおもいます。

■キーフレーム間隔(秒、0=自動):3

1~20
0=自動となっていますが、なぜか0は選べません。youtubeだとキーフレームは4秒以下に設定します。

(参考)
/ライブ配信のエラー メッセージhttps://support.google.com/youtube/answer/3006768?hl=ja

キーフレームと非同期深度とB Rramesの数値は同じにしたほうがよさそう(試行錯誤並感)だし、B Rramesは0 ~ 3までなので、3にしてます。

■非同期深度:3

1 ~ 7

デフォルトは4です。たぶん数値を変えると映像がぼやける範囲が手前だったり奥だったり変動します。試行錯誤の結果、なんとなくキーフレームと同じにしたほうがいいかもしれないとおもった。

■レート制御:AVBR

CBR ~ VBR ~ CQP ~ AVBR

CBRは固定ビットレートです。選ぶと、ビットレート、B Framesの項目が表示されます。

VBRは変動ビットレートです。選ぶと、ビットレート、最大ビットレート、B Framesの項目が表示されます。

CQPは固定量子化量?らしいです。選ぶと、QPI、QPP、QPB、B Framesの項目が表示されます。デフォルトの値は23。この値を小さくするとさらに画質がよくなるとおもいます。ほぼ無損失ですが、配信ではPC負荷が大きくてつかえません。録画用だとおもいます。録画した場合もファイル容量がすごく…大きいです…。

AVBRはCBRとVBRのいいとこどり…なのかしら?。選ぶと、ビットレート、精度、収束、B Framesの項目が表示されます。特に精度の項目が重要なので、これを選びます。

(参考)
/OBS Studioエンコーダ詳細解説
http://mtkdt.blog.fc2.com/blog-entry-43.html?sp

■ビットレート:1500 Kbps

上り回線がだいたい1.8Mbps(=1800Kbps)。これ以下にビットレートを抑える必要があります。ビットレートは変動するので、上り回線のビットレートの7割くらいに抑えるのがいいのかもしれません。

音声のビットレートが128Kbpsなので、合計1628kbpsになります。30fpsならぎりぎり大丈夫なかんじですね。

1280×720の解像度で映像ビットレートが1500は、30fpsなら標準的か高い方のビットレートだとおもいます。

■精度:4200

0 ~ 10000

重要な項目。デフォルトは1000だった気がする。4200の根拠は、【ビットレートの計算式:BPP×幅×高さ×フレームレート÷1000】 です。

ビットレートの設定(例)
 BPP(Bits Per Pixel)
 無難なBPP:0.1375(ビットレートを抑える)
 回線に問題が無ければ、BPP:0.150

計算(例)
 解像度:1280×720
 フレームレート:30fps
 
0.1375×1280×720×30÷1000=3801.6 kbps

「BPP:0.150」だと 4147.2 kbps

4147.2 kbpsなのでシンプルに4200にしました。

■収束:0

0 ~ 10

いろいろ試してみましたが、結局ここは0でいいという結論になりました。私はあまり効果が感じられなかったです。数値を増やしたらなんか変わる気はしますが、画質がすごく良くなるとかはなかったです。気になる方はいろいろ試してみて、どうぞ。

■B Frames:3

0 ~ 3

キーフレームの数値に合わせたほうがよかった気がするので、3にしてます。デフォルトも3だったとおもう。3が画質的にはいちばんいいかもしれない。安定を求めるなら0。

3でもいまのところ、配信で不具合はないとおもいます。もし配信で止まったりするときは、ここを0にしてみるのもいいかもしれません。

>てぃる様のコメント

キーフレームは基本Iフレームで、B Framesは名の通りBフレームです。

全然別物のフレームなのに、合わせる意味が分かりません。

しかもキーフレームは秒数で設定することが多いため、キーフレーム3は3秒のこと(60fpsなら180という値、30fpsなら90という値)で合わせるのも難しい気がします。

>
ありがとうございます。

(参考)
/OBSに画質を求めるのは間違っているだろうか
https://nyanshiba.hatenablog.com/entry/2019/04/07/001832

(引用)

ビットレートが限られる環境下では、差分であるBフレームは品質保持に有効。
動きが少なく、ブロックノイズや纏わりつくようなアーティファクトが出なければ3に増やしても良い。
YouTube Liveの低遅延や超低遅延、Mixer FTLでは0にすると安定する。

★OBS(設定 → 映像)

画像29

ここの数値でもかなり変わります。ここも総当りで試しました。

■基本(キャンバス)解像度:1280×720 ■出力(スケーリング)解像度:1280×720 ■縮小フィルタ:バイリニア(スケーリングする場合ぼやけているが最速) ■FPS共通値:30

■基本(キャンバス)解像度:1280×720

youtubeなど、HD配信の最低値が解像度:1280×720(720p)なので、高画質としてはこれが最低基準だとおもう。youtubeだと、720p以下の解像度が640×360(360p)などは、かなりぼやけてしまう。720pでようやく人権が認められてるみたいなかんじがしますね…。

こことPCの解像度を一緒にすると、映像がぼやけたりするのが極力抑えられている気がします。PC解像度を1280×720に変更するのは必須ではないですが、私はこの方法けっこういいとおもう。

■出力(スケーリング)解像度:1280×720

基本(キャンバス)解像度と一致させないと、スケーリングするので、どうしてもぼやけてしまうとおもいます。ここは素直に一致させましょう。

■縮小フィルタ:バイリニア(スケーリングする場合ぼやけているが最速)

バイリニア(スケーリングする場合ぼやけているが最速) ~ 面積(荷重合計4/6/9サンプル) ~ バイキュービック(先端化スケーリング、16のサンプル) ~ ランチョス(先端化スケーリング、36のサンプル)

縮小フィルタはスケーリングするときに使用するフィルタなので、スケーリングしなければ画質に影響は出ないということだとおもう。

この設定では、【PC解像度】=【基本(キャンバス)解像度】=【出力(スケーリング)解像度】=1280×720 になっているのですが、バイリニア以外のフィルタを使用しても画質に変化はほぼなかったです。また、縮小フィルタはランチョスになるにつれてPC負荷が大きくなります。よって、最速のバイリニアを選択します。

■FPS共通値:30

60fpsで映像ビットレートが1500kbpsだと、さすがに画質が劣化しますし動きがカクカクになったり止まったりします。倍の3000kbpsが出せれば問題ないとおもいますが、これは上り回線の上限が1800kbpsなので、当然出せません。私の回線の状況では、30fpsにせざるを得ない。

どうしても60fpsで配信したいときは、解像度を半分の640×360にすればたぶんいけるとおもいます。基本解像度を変更すると、OBSのプロファイル上でソースとかのサイズが変わっちゃうので、また調整しなおさなきゃいけない。

ここで、【(設定 → 出力):出力をリスケールする】のところから640×360に変更すると、基本解像度は変更せずに、出力だけ640×360にできるんだとおもいます。当然画質はぼやけますね。ゲームでそこまで解像度が大きくなくてもいいやつだと、この設定でもいいかもしれません。

★OBS(設定 → 出力 → 録画)(例①)

画像30

■種別:標準 ■録画フォーマット:mp4 ■音声トラック:1 ■エンコーダ: Quick Sync H264 ■出力をリスケールする:空白 ■カスタムマルチプレクサーの設定:空白 ■ターゲットの使用法:Quality ■プロファイル:high ■キールレーム間隔(秒、0=自動):3 ■非同期深度:3 ■レート制御:CQP ■QPI:23 ■QPP:23 ■QPB:23 ■B Frames:3

■種別:標準

標準とカスタム出力(FFmpeg)があります。FFmpegはくわしい兄貴ならすごく高画質で録画できる方式のようなそうでもないような(謎)。

■録画フォーマット:mp4

mp4がいちばん互換性があっていいとおもいます。

■音声トラック:1

(設定 → 出力 → 音声)のトラック1~6とリンクしてます。

■エンコーダ: Quick Sync H264

(ストリームエンコーダを使用)、 Quick Sync H264、x264があります。録画だけならx264でもいいかもしれませんが、かなりPC負荷が大きいので、けっきょくハードウェアエンコードのQuick Sync H264でいいとおもいます。録画の場合はビットレートを盛れるので画質も向上できます。

■出力をリスケールする:空白

基本解像度とは別の解像度で出力したいときに使ってどうぞ。

■カスタムマルチプレクサーの設定:空白

んにゃぴよくわかんないです。

■ターゲットの使用法:Quality
■プロファイル:high
■キールレーム間隔(秒、0=自動):3
■非同期深度:3
■レート制御:CQP
■QPI:23
■QPP:23
■QPB:23
■B Frames:3

配信のところで解説したのとおなじ。

★OBS(設定 → 出力 → 録画)(例②)

画像31

録画のときはビットレートを盛れるので60fpsでは8400kbpsとかにできます。そのぶんファイル容量が増大します。CQPとは画質とファイル容量の差で選ぶかんじかも。

あと普段は30fpsで配信してると、録画するときに(設定 → 映像)のFPS共通値を60fpsに変更するのを忘れがちですね。ここは配信と録画で共通です。

以上です。お役に立てれば幸いです。


よろしければサポートおねがいします!