2024年4月30日

LAN経由でOBSから別のPCのOBSへ映像を伝送する

ネットワーク経由で、あるPCのOBSから別のPCのOBSへ映像を伝送する方法のメモです。

ローカルIPアドレスは各自で調べてください。今回は次のような構成で構築します。
使用ポートは適当な数字で構いませんが、普通は4桁以上を使います。受信側で他のアプリが使用している場合は使えません。

コンピュータローカルIPアドレス使用ポート
送信側(ゲーム用)10.0.1.2-
受信側(配信用)10.0.1.13500

安定性のために、余っているLANポート同士を繋いでも良いです。この場合、両方のコンピュータでネットワーク設定でIPアドレスを手動で設定する必要があります(DHCPサーバーなんてないため)。

(ローカルIPアドレスは一般家庭であれば192.168から始まることが多いですが、今回は10.0.1.0にしています。)

ソースへメディアソースを追加し、以下のように設定します。

  1. ローカルファイルのチェックを外します。
  2. 入力udp://10.0.1.1:3500と設定します。
  3. YUV色範囲リミテッドを選択します。
    • もし明るさがおかしければフルにしてください。
    • (フルレンジで送る方法募集中)
  4. FFmpegオプションcodec:a=aacを設定します。

OSによってローカルネットワーク関連の許可の確認が入る場合があります。

OBSを一からインストールする場合、録画として設定してください。

OBSがインストールされていて、もし使っているなら、プロファイルを新規に作成してわかりやすい名前をつけてください。
プロファイルを新規に作成すると出力解像度がリセットされるので、お好みの設定に変更してください。

  1. 設定 - 出力を開き、出力モードを詳細にします。
  2. 録画タブを開き、種別カスタム出力 (FFmpeg)に設定します。
  3. FFmpeg出力の種類URLに出力に設定します。
  4. ファイルパスまたはURLudp://10.0.1.1:3500?pkt_size=1024のように設定します。
  5. コンテナフォーマットrtp_mpegtsまたはmpegtsにします。
  6. 映像ビットレートは結構大きめにします。有線LANなら80000 Kbpsとかでいいと思います。
  7. キーフレーム間隔 (フレーム)は小さい方が画質がよくデータ量が大きくなり、遅延も小さくなります。10とかにしてもいいと思います。
  8. すべてのコーデックを表示にチェックを入れます。
  9. 映像エンコーダは、GPUがAMD製チップならh264_amfまたはhevc_amf、NVIDIA製チップならh264_nvencまたはhevc_nvencを指定します。Intelは…どういうわけかQSVの選択肢がありませんでした。
  10. 音声ビットレート320 Kbps音声エンコーダaacにします。

送信側の設定

録画開始します。

受信側に映像が表示されれば完了です。

よく紹介される2PC配信の手法としては、これと同様にゲーム用PCでOBSを立ち上げておき、HDMIキャプチャに対して全画面プロジェクターを行うというものもあります。これにはHDMIキャプチャの導入が必要です。

映像伝送をネットワーク経由で行ってしまえばHDMIキャプチャは不要です。ただしネットワークが耐えられる必要があります。少なくとも1Gbpsの有線LANは必要でしょうし、対戦ゲームの配信であれば対戦ゲームと映像伝送を同時に行っても耐えられるだけのルーターが必要です。

OBSの起動が必要なのはHDMIキャプチャを使用した方法でも同様であるものの、OBS自体が一定程度のGPUリソースを持っていったり、伝送のためのエンコードやネットワーク負荷はPCが不安定となる要因であるため、2PC配信のメリットである安定性は薄れることとなります。
複雑な画面処理や音声処理を外部でできるとか、ゲーム側のOBSやPCが落ちても配信が止まらないというのはメリットではあります。