2024年1月2日現在、ニコニコとYouTubeで同時配信をしています。
ニコニコのほうはとくに遅延やフレーム落ちはしないけれど、YouTubeではなぜかガクガクになってしまいます。
配信する側としてもあんまり良い状態とは思えません。
2024年1月2日現在から対応した内容をメモとして残しておきます。
1.問題:YouTubeだけガクガクになる
休憩再開後の1時間36分頃から、もっさりした感じになってますね。タイマーが1番分かりやすいかも。下の動画は2024年1月2日のアーカイブ配信です。
実はこの後、次の操作によって一時的に症状が改善しました。
・Google Chrome(ブラウザ)をいったん閉じて、再起動する。
・VSeeFace(3Dソフト)をいったん閉じて、再起動する。
視聴者から見た状態
・見た目ガックガク。
・ニコニコは30FPS以上出てるけれど、YouTubeは10FPSくらいしか出ない。
・チャットの反映にものすごく時間がかかる。
ストリームの状態
・YouTubeのライブ配信管理画面で緑と黄色が数分おきに入替る。
・黄色の警告メッセージ「YouTube が受信している動画が少ないため、滑らかなストリーミングを維持できません。視聴者側でバッファが発生します。」
上流である配信者の通信環境が劣悪だから、下流の視聴者にガックガクの映像が流れているのは分かるんですけど、何が原因で劣悪になっているのか。
・・・もしかして、私のPCがしょぼいから・・・いや、その結論は最終手段だと思いたいですね。やれることをやり尽くしてから、「私のPCが雑魚でした。」と言いたいですね。簡単に決めつけては問題解決に至らない。
2.対応
2.1.通信環境の確認とYouTubeが推奨する設定
とりあえず通信環境を確認してみました。
配信者側なので上り(UPLOAD)回線の速度が問題ですね。単位はMbps(Mega Bit Per Second)で、この値が大きいほど1秒間でたくさんのデータを送信できる。
もう一つ「ping値」という情報伝達の往復にかかる時間を表す値があるらしいです。「レイテンシ」は片道の時間だけど、「ping値」と「レイテンシ」は混同されているとか。単位はms(ミリ秒)で、この値が小さいほど応答時間が短い。
このping値やレイテンシには「アンロード済み(Unloaded)」と「ロード済み(Loaded)」の2種類があって、アンロードは家庭で1台だけネット接続している場合、ロードは家庭で2台以上ネットに接続している場合の値らしいです。最低限を見たいので、ロードのほうで見るほうがいいですね。
専門家ではないので間違ってるかもしれないけれど、上り回線速度が映像を送る速度=ぬるぬる・ガクガク、ping値がコメントの取得速度と関係しているのかな?
複数のサイト・異なる時間帯で上り回線速度を測ってみました。
・USEN
・FAST.com(Netflix)
・SPEEDTEST
昼間のほうが値が良かったので、夜間だけの結果です。
上り回線速度:17Mbps~26Mbps
ping値(アンロード):16~20ms
ping値(ロード):45~50ms
・・・うーん。早いというわけではないけれども、そこまで遅いという感じではないはず。いろいろと見たんですが、この値は家庭用としては普通のはず。ただし、配信者としては遅いほうかもしれません。上り回線速度30Mbps以上、ping値15ms以下は欲しいとかなんとか。
でも通信速度が遅いだけだと、ニコニコではガクガクしなかった理由を説明できません。YouTube側の設定に問題があると思いたいです。PC買い替え問題と同様に、通信環境の変更は最終手段の一つと考えたいですね。
上記の通信環境でYouTubeが推奨するエンコードの設定を確認しました。
「解像度1080p、フレームレート60fps、最小ビットレート設定4Mbps、最大ビットレート設定10Mbps、推奨ビットレート設定12Mbps」
これが良さそうですね。
あとは「エンコーダの設定」と「詳細設定の推奨値」も記載通りにしておきます。
ニコ生の推奨設定も載せておきます。
[1080p配信の場合]
- ビットレート:映像・音声を合わせて最大20Mbps
- 音声ビットレート:最大384kbps
- 映像解像度:1920×1080
- 映像フレームレート:最大60fps
- 音声サンプリングレート:最大48kHz
- 音声チャンネル数:最大2ch(ステレオ)
※より良い画質で配信するためには、映像解像度は推奨設定を利用することをお勧めします。
※安定した配信が行えない場合は、ビットレートや解像度を下げてお試しください。
2.2.OBSの設定変更
OBSでは下記の設定を変更しました。
OBS設定>出力>エンコーダ設定>レート制御
「CBR(固定ビットレート)」から「VBR(可変ビットレート)」にしました。
YouTubeでは「CBR」が推奨されていますが、下記の記事を参考にして「VBR」にしました。NVIDIA NVENC H.264のCBRの場合、最大ビットレートを目指すVBRらしいので。
H.264エンコーダにおけるCBR(固定ビットレート)の実態は、
ビットレート = 最大ビットレート
を目指してレートコントロールするVBR(可変ビットレート, YouTubeストリームキーのことではない)。低いビットレート配分で済むシーンではネットワーク帯域を無駄遣いし、高いビットレートが必要なときVBVに沿ってわざわざ品質を落とすので、個人的にはVBRを推したい。
OBS設定>出力>エンコーダ設定>ビットレート・最大ビットレート
それぞれ下記に設定しました。
・ビットレート:3,000Kbps
・最大ビットレート:5,000Kbps
最大ビットレートが5Mbpsです。私の通信環境は「上り回線速度:17Mbps~26Mbps」なので大丈夫だと思いたいです。これで不安定ならビットレートの問題ではないと思います。
→「事前警告 ストリームの現在のビットレート(3133.89 Kbps)が推奨値より低くなっています。ストリームのビットレートは 6800 Kbps を使用することをおすすめします。」というエラーが出たので、おすすめされた通り次の値に変更した。
・ビットレート:6,800Kbps
・最大ビットレート:8,800Kbps
→「事前警告 ストリームの現在のビットレート(6937.12 Kbps)が推奨値より低くなっています。ストリームのビットレートは 6800 Kbps を使用することをおすすめします。」という日本語としてどうかしてるエラーが出たので、下記の記事を参考にして8,000Kbpsか10,000Kbpsにすることにした。とりあえずは低いほうを採用した。
・ビットレート:8,000Kbps
・最大ビットレート:10,000Kbps
→「ストリームは健全です ストリームは非常に良い状態です。」という表示に変わった。とりあえずこのビットレートでやってみることにする。
OBS設定>出力>エンコーダ設定>プリセット
P3:Fast(低品質)です。変えたわけではないですが。メモとして。
OBS設定>出力>エンコーダ設定>プロファイル
「main」を「high」に変更しました。
OBS設定>映像>FPS共通値
「30」にしました。ここは変更していません。
→ルーターとWiFi子機を買い替えたので、「60」にしました。・・・大丈夫?
OBS設定>詳細設定>遅延配信
遅延配信が有効になっていたので、無効にしました。
これが原因かもしれない。
OBS設定>詳細設定>ハードウェアアクセラレーション
ハードウェアアクセラレーションが有効になっていたので、無効にしました。
これも原因かもしれない。
OBS設定>詳細設定>ネットワーク
この問題では「IPアドレスの固定化で直る」という話も見かけましたが、IPアドレスの固定化はすでにやっているので今回は変更しません。
2.3.OBSのプラグインの設定変更
私はニコニコとYouTubeの同時配信に、OBSのプラグイン「obs-multi-rtmp」を利用しています。
OBSの画面上で「編集」ボタンから設定できます。
「配信の設定>映像の設定>エンコーダー」という項目では「OBSから取得する」にしています。配信サイト別の個別設定は保留しますが、1か所だけ変更しました。
OBS同時配信>YouTube>出力>低遅延モード
低遅延モードが有効になっていたので、無効にしました。
・・・もしかしたらこれかもしれない。同時配信のニコニコの設定では低遅延モードが無効になっていたので。・・・まあやってみたら分かるでしょう。
2.4.わんコメの設定変更
わんコメでは下記の設定を変更しました
右上メニュー>設定>その他>ハードウェアアクセラレーション
ハードウェアアクセラレーションが有効になっていたので、無効にしました。
2.5.YouTube Studio側の設定
YouTube Studioでは「ライブ配信の遅延」という項目で「通常の遅延・低遅延・超低遅延」の3つから選択することができます。現在は「通常の遅延」に設定しています。「低遅延」や「超低遅延」にしてもいいですが、その前にちょっと様子見します。
2.6.ライブ配信中の操作
エンコードなどの設定ではなく、配信中の操作として行うこと。
Google Chromeを最小化する・閉じる
配信中はYouTubeのライブ管理画面を開きっぱなしにするのですが、これが悪さをしているかもしれません。実際にChromeをいったん閉じる操作によって、一時的に症状が改善しましたから。気休めかもしれませんが、最小化・閉じるのいずれかの操作をしておこうと思います。
2.7.その他の操作
Google Chromeのキャッシュを削除する
念のため。
3Dモデルの軽量化
まだやっていませんが、もっと軽量な3Dモデルを目指さないといけないかもしれません。
3.これで試運転してみます
いったんこれで試運転してみます。
→非公開で試験運転したところ、14分後に「エラー YouTube が受信している動画が少ないため、滑らかなストリーミングを維持できません。視聴者側でバッファが発生します。」が出た。Chromeのタブを切り替えてから1分で直った。やはりYouTubeのライブ管理画面を開いているのが原因かもしれない。
→ライブ管理画面を非表示にする方法は対症療法でしかない。一時的には改善するが、10分ほどで再び同様のエラーが出てくる。
下の動画は2024年1月14日のアーカイブ配信。
いつもは夜に配信していましたが、昼に配信しています。
良くはなっていますが、2時間20分~30分を超えたあたりから、ちょっとカクついているのが気になりますね。
4.OBSの「統計」から考える。状況を再現する。
OBSのエラーメッセージを確認してみました。
OBS上部「表示」タブ>統計
ここを見ればドロップしたフレームの内訳を見ることができます。
レンダリング(OBSのソースを表示する処理が重すぎる)のか、エンコード(データを圧縮して送信する処理が重すぎる)のか、そういうものが見られるはずなんですが・・・。
なんと!どっちも0でした!・・・・・・え?どういうこと?
・レンダリングラグが原因で逃したフレーム:0/m(0.0%)
・エンコードのラグが原因でスキップされたフレーム:0/n(0.0%)
つまり、私のOBSの設定は間違ってないと思われます。
重すぎるソースを使っているわけでもなく、エンコードの問題でもない。
・・・困りましたね。原因の手がかりがありません。
エラー発生時の上り回線速度
念のために状況再現して上り回線速度を測ってみました。
「エラー YouTube が受信している動画が少ないため、滑らかなストリーミングを維持できません。視聴者側でバッファが発生します。」と表示された直後に、上り回線速度を測った。
上り回線速度:3.6Mbps~5.8Mbps
ping値(アンロード):37~83ms
ping値(ロード):954~1400ms
上記のエラーが解消され、「ストリームは健全です ストリームは非常に良い状態です。」と表示された直後に、上り回線速度を測った。
上り回線速度:4.3Mbps~6.4Mbps
ping値(アンロード):18~24ms
ping値(ロード):1000~1600ms
・・・エラーの状況と比例して上り回線速度も若干改善されているような?因果関係としては上り回線が改善されたからエラーが無くなったのかな。
・・・たぶんなんですけど、上り回線速度の閾値があって、一定未満だとガクガクになるけれど、ギリギリ一定以上になると滑らかさを取り戻す。それが時間経過によって上下している感じが現状である気がします。
つまり、上り回線速度が不安定で、一時的にとんでもなく遅くなってしまうのが原因かもしれません。でも配信前は上り回線速度に問題なかったのになんでだろう・・・。配信前にスピードテストしても意味ないってことですよ。困りましたね。とりあえず回線の見直しもしてみます。これはちょっと時間かかるかも。
5.ルーターとWifi子機を買い替える
2024年1月14日の配信後からの対応です。
最終手段①ですね。・・・禁じ手ですが。
ちょっと調べたこともついでにメモ。
ネット回線の契約は回線(物理)を取り扱う事業者と回線(信号)を取り扱う事業者がいます。前者を回線事業者、後者をプロバイダーと言うらしいです。
両者のおかげで各家庭がネットに接続できます。こういう事業者が届けてくれた信号を利用可能な形に変換する装置を回線終端装置(ONU)とかモデムと言うらしいです。
回線終端装置(ONU)やモデムはWiFi(無線)を飛ばす能力があったり、無かったりします。ある場合をホームゲートウェイと言うらしいです。無い場合は飛ばしてやる装置が必要になります。無線を飛ばしたり、複数のPCに有線接続するための装置をルーターと言うらしいです。ハブは
回線終端装置(ONU)やモデムとルーターはWANって書いてあるところをLANケーブルで接続します。LANケーブルにも規格があって、CAT(カテゴリー)の値が大きいほど伝達速度が速いです。
PCにWiFi子機を接続する前にドライバーのインストールが必要な場合があります。別のPCでダウンロード→USBでコピーすることで、ネットに接続していないPCにもドライバーをインストールすることが可能です。
ルーターに記載されているネットワーク名(SSID)と暗号化キーを必要な場所(「インターネットアクセス」とか「利用できるネットワークの表示」とか)に入力すれば、たぶん接続できるはずです。
以上。調べたメモ終わり。
ルーターの買い替え
買い換えました。
ルーターが変わったので、IPアドレスの固定化を設定していた場合は再設定を忘れずにやっておきます。
無線LAN子機の買い替え
買い換えました。
先にドライバーをインストールする必要があります。ELECOMの下記ページからダウンロードしてください。一時的にインターネットが使えなくなるので、ネットが使えるPCであればPCに先にインストールしておきます。ネットが使えないPCに入れる場合は、USBメモリなどにドライバーが入ってあるzipファイルを一時的に保存しておきます。zipファイルを展開して「Setup.exe」を実行すれば、ドライバーがインストールされます。
あとはIPアドレスの固定化の再設定を忘れずにやっておくことですね。
夜間(19時~23時)の上り回線速度を測ってみました。()は参考として従来の値です。
上り回線速度:58Mbps~91Mbps(17Mbps~26Mbps)
ping値(アンロード):17~25ms(16~20ms)
ping値(ロード):22~45ms(45~50ms)
かなり改善されましたね!
これで試運転してみました。
土曜日の夜間でしたが、とくに問題は発生しませんでした。バッチリですね!
しばらくはこの通信環境と設定でやっていこうと思います。
6.参考
大変参考になった記事。
上記記事も参考にしたという記事。公式リファレンスかな?
とくにNVIDIA NVENC H.264の項目を参考にしました。
ヒントを得た記事。