2024年4月30日
ネットワーク経由で、あるPCのOBSから別のPCのOBSへ映像を伝送する方法のメモです。
ローカルIPアドレスは各自で調べてください。今回は次のような構成で構築します。
使用ポートは適当な数字で構いませんが、普通は4桁以上を使います。受信側で他のアプリが使用している場合は使えません。
コンピュータ | ローカルIPアドレス | 使用ポート |
---|---|---|
送信側(ゲーム用) | 10.0.1.2 | - |
受信側(配信用) | 10.0.1.1 | 3500 |
安定性のために、余っているLANポート同士を繋いでも良いです。この場合、両方のコンピュータでネットワーク設定でIPアドレスを手動で設定する必要があります(DHCPサーバーなんてないため)。
(ローカルIPアドレスは一般家庭であれば192.168から始まることが多いですが、今回は10.0.1.0にしています。)
ソースへメディアソースを追加し、以下のように設定します。
ローカルファイル
のチェックを外します。入力
にudp://10.0.1.1:3500
と設定します。YUV色範囲
はリミテッド
を選択します。
フル
にしてください。FFmpegオプション
にcodec:a=aac
を設定します。OSによってローカルネットワーク関連の許可の確認が入る場合があります。
OBSを一からインストールする場合、録画として設定してください。
OBSがインストールされていて、もし使っているなら、プロファイルを新規に作成してわかりやすい名前をつけてください。
プロファイルを新規に作成すると出力解像度がリセットされるので、お好みの設定に変更してください。
出力
を開き、出力モードを詳細
にします。録画
タブを開き、種別
をカスタム出力 (FFmpeg)
に設定します。FFmpeg出力の種類
をURLに出力
に設定します。ファイルパスまたはURL
をudp://10.0.1.1:3500?pkt_size=1024
のように設定します。コンテナフォーマット
はrtp_mpegts
またはmpegts
にします。映像ビットレート
は結構大きめにします。有線LANなら80000 Kbps
とかでいいと思います。キーフレーム間隔 (フレーム)
は小さい方が画質がよくデータ量が大きくなり、遅延も小さくなります。10
とかにしてもいいと思います。すべてのコーデックを表示
にチェックを入れます。映像エンコーダ
は、GPUがAMD製チップならh264_amf
またはhevc_amf
、NVIDIA製チップならh264_nvenc
またはhevc_nvenc
を指定します。Intelは…どういうわけかQSVの選択肢がありませんでした。音声ビットレート
は320 Kbps
、音声エンコーダ
はaac
にします。録画開始します。
受信側に映像が表示されれば完了です。
よく紹介される2PC配信の手法としては、これと同様にゲーム用PCでOBSを立ち上げておき、HDMIキャプチャに対して全画面プロジェクターを行うというものもあります。これにはHDMIキャプチャの導入が必要です。
映像伝送をネットワーク経由で行ってしまえばHDMIキャプチャは不要です。ただしネットワークが耐えられる必要があります。少なくとも1Gbpsの有線LANは必要でしょうし、対戦ゲームの配信であれば対戦ゲームと映像伝送を同時に行っても耐えられるだけのルーターが必要です。
OBSの起動が必要なのはHDMIキャプチャを使用した方法でも同様であるものの、OBS自体が一定程度のGPUリソースを持っていったり、伝送のためのエンコードやネットワーク負荷はPCが不安定となる要因であるため、2PC配信のメリットである安定性は薄れることとなります。
複雑な画面処理や音声処理を外部でできるとか、ゲーム側のOBSやPCが落ちても配信が止まらないというのはメリットではあります。