NDIによる2PC配信の構成
1:前置き
PS5全然当たりませんね!
倒す相手の弱点を探すためにひたすら抽選に応募しまくっています。
さて,すっかり誰得シリーズ化した自作PC編ですが,今回は配信環境の整備について検討します。
PS5では1080p対応のHDカメラで配信できるとのことです。従来私の配信では720p 60fpsを,6000Kbps(中画質程度)で配信していたのですが,フルHD1,080pでの配信に必要な回線速度は,1.5倍×1.5倍すなわち13500Kbpsということになります。垂れ流しのまま配信してもいいなら,PS5からのシェア機能で十分なんですが,家の回線速度があまり早くないので,10000Kpbs程度に帯域幅を圧縮したいところです。
h264の動画の圧縮ではCPUパワーを非常に圧迫するため,ボトルネックのCPUをいじめる訳にもいかず,従来動画の圧縮には,グラボ付属のnvencを利用して配信していたわけですが,今回のPCではグラボがボトルネックになっているので,軽くて優秀なnvencを利用するわけにもいきません。また新PCのCPUは爆熱のRyzen7 5800xのため,あまりCPUに負荷を掛けたくない事情があります。
前置きが長くなりましたが,今回こういった事情で2PC配信に挑戦しようと思いつきました。
コンシューマのゲーム機でも高画質配信やレイヤーを重ねたい時などは,PCを使って配信していると思いますが,そのときに必要となるのが,キャプチャーボードです。私が持っているのは5年ほど前に買ったRegia two というおんぼろです。このボード,1080iまでは対応していますが,なんと30fpsまでしか対応しておらず…
さすがに30fpsで配信するのは視聴者の方に申し訳ないので,60fpsの配信環境を準備したかったのですが,そうなるとキャプチャーボードを新調する羽目になります…(追加に1~2万円の出費)
何を隠そう,私今回のPC自作で貯金ゼロですから!!
景気の悪い話ばかりで申し訳ないですが,調べてみると,無料で素晴らしい技術があるじゃないですか。
2:NDI(ネットワークデバイスインターフェイス)とは?
NDIとはNDI(ネットワークデバイスインターフェイス)は、米国NewTek社によって開発されたIP利用における新しいライブビデオ制作ワークフロー支援プロトコルです。このNDIテクノロジーを活用することで、一般的なギガビットイーサネット環境においても、映像、音声、メタデータを、NewTek社TriCasterやIPシリーズなどのシステム間だけでなく、NDI互換のさまざまなシステム、デバイス、PCなどとのリアルタイムによる相互伝送を可能とします。
とのこと。
まさにゲーム配信にぴったりの機能です。ただし,ネットワーク経由の圧縮技術のため,LANポートやWi-Fiの帯域を100Mbpsほど使用してしまうのがネックとなります。現在のネットワーク環境は概ね1Gbpsのギガビットネットワークがデフォルトですから,100Mbps程度を圧縮に回しても十分な気がします。
配信のイメージ
この配置図がなんとなく,気持ち悪い
ルーター経由でゲーム用PCから配信用PCに送られたビデオデータを配信用PCで圧縮して,またルーターに戻しネットに配信するという動線に,素人目で無駄があるような気がします。
そこでNDIのネットワークとネット接続のネットワークを完全に分けて,相互のネットワークが干渉しないようにしたのが下の図。
3:私のNDI環境
これで,配信時のビデオデータをゲーム用PC⇒配信用PC⇒ルーター⇒インターネットという一方通行で配信することが可能となります。LANを2回線にするためにPCIスロットにつけるLANボードを用意注1しましたが,一個1,000円切るぐらいで売っていたので,キャプチャーボードを買うことを考えれば安い買物です。0.2秒程度のレイテンシーがあるので,配信用PCにマイクをつなげて音声をMIXするなら,10GBASE-TのLANボードでゲーム用と配信用をつなげることも検討したほうがいいですが,一個1万円以上するので,そこまでしなくてもいいでしょう。ちなみにNDI通信するときはLANケーブルは1Gbps以上対応のものを使用してください。(私は家にあった100MbpsのLANケーブルを付けて爆死しかけました。)
注1 LANボード増設しなくても,Wi-FiでネットをつなげてLANボードをNDI通信用に使っても同じことは出来ますし,ぶっちゃけWi-Fi環境のみでもネットワークの速度さえ確保されていれば,配信できちゃう優れものです。
PC2台をLANケーブルで直付けするときの注意点と効能
- ストレートケーブルかクロスケーブルか
- 複数のLANに接続するときのルーティング
- ウイルスソフト
- PC間の通信速度が倍増
ネットで調べると,直付けにするにはクロスケーブルをつなげろ,みたいなことが書かれていますが,今は自動で接続を確立してくれる「オートMDI/MDI-X」なる機能がだいたいついているので,ストレートケーブルを挿してOKです。(私は最初接続が確立できなかったので,無茶苦茶悩みました。
PCにLANケーブルを2本接続するだけではつながりません。私の場合IPアドレスをPC同士の接続とインターネット接続で分けるために,PCに2つのIPアドレスを割り振りました。ただ繋げるだけなら,IPを1つに統一して,「配信用PC-ゲーム用PCの接続」と「配信用PC-ルーター間の接続」をブリッジ接続にしたほうが簡単だと思います。しかし,これだと配信しないときでも,ゲーム用PCでネットを見るとき,配信用PCの電源を入れてネットにつなげるか,ゲーム用PCを普段ネットにつなげている場合は,配信の時に普段のネットを切って,配信PC経由でネットを見るという切り替え作業が必要になると考えました。そこで2つのIPアドレスを使用し独立した2つのネットワークを構築しました。
PCをLANでつなげて,PC共有をしても一向に繋がらない!!
そんな人はウイルスソフトを見てください。私の使っているESET Internet Securityもネットワークのファイアウォール的なものがあって,ウイルスソフトで他のPCを承認しないとping送信すらできない状況でした。
配信用PCには録画データがたんまりと入っています。それを取り出すとき、ルーター経由で転送すると、私の環境では速度は70MB/s(560Mbps)程度しかでず、GB以上のデータを送るにはかなりストレスが感じられます。思わぬ効能ですが、PC間のLANがあるおかげで2本のLANケーブルからデータの転送が送られるようで、合わせて140MB/s(1120Mbps)でのデータ転送が可能となりました。1GBASE-Tの環境でまさかの1000Mbps超えは正直うれしいですね。
4:OBSによるNDI配信の方法
NDIにご興味を持たれた方お待たせしました。以下でOBSでNDIを導入するときの方法と注意点を簡単に説明します。
注 OBSの導入や基本操作に関しては割愛します。
- NDIのOBSプラグイン(ndi-obs)を導入
- ゲームPCのOBSを起動し、上タブのツールからNDI Output settingを選択し、Main Outputにチェックを入れ、任意の名前を付けてOKを押す。
- OBSの設定
- 画面下の+を押す
- 配信用PCのOBSを起動し、NDITMSourceを選択
- 【Source Name】でゲーム用PCで設定した名前のNDIソース名を選択
- 【Bandwidth】でHighestを選択
- 注意点 ゲーム用PCからの信号を受け取れない場合は、配信PC側からゲーム用PCにNDI sourceを送ってあげる(上記手順のゲーム用PCと配信用PCを入れ替える)と、なぜか開通するようです。
ゲーム用PCと配信用PCの両方にOBSプラグインをインストールします。
こちらからダウンロードしインストーラを起動↓さあ、PS5よ、どこからでもかかってこい!(抽選当たってください)
Tweet