📡

Moblin・IRL Pro・BELABOX対応のSRTLAを自宅OBSで受信する環境の構築

に公開

概要

途切れない安定した外配信(IRL配信)を行うために、複数のモバイル回線などを束ねて通信を安定させる「ネットワークボンディング」は非常に有効な技術である。

本稿は、そのボンディング技術で広く使われるSRTLAプロトコルを利用し、OBS Studioで映像を安定して受信するための環境構築手法を解説するものである。この手法はMobirin, IRL ProBELABOXといった人気のIRL配信アプリと互換性を持ち、その強力なボンディング機能を自前のPCで受信可能にする。

従来、この環境の構築には技術的なハードルがあった。たとえば、SRTLAレシーバーがLinux専用であったため、WindowsやmacOSでの利用にはDockerが必須で導入が大変であった。また、受信状況に応じたシーン自動変更にはNOALBS等の別ツールの導入が必要で、設定が煩雑であった。

本稿では、これらの課題を解決する最新のツールgo-irlを導入する。

go-irlは、Go言語で書かれ、各アーキテクチャのバイナリが提供されているため、WindowsやmacOSにもネイティブ対応しており導入が容易である。これによりDockerは不要となり、特にWindowsやmacOSでは仮想環境のオーバーヘッドなく軽量な動作が期待できる。さらに、通信状況に応じたシーン自動変更機能も統合という特徴を持つ。

SRTとSRTLAについて

本稿の核となる技術、SRTとSRTLAについて解説する。

SRT (Secure Reliable Transport)

SRTは、オープンソースの映像伝送プロトコルである。UDPベースの低遅延性を維持しつつ、パケット再送機能によりTCPに匹敵する高い信頼性を両立させる。これにより、不安定なインターネット経由でも、安定したライブストリーミングを可能にする。

SRTLAは、BELABOXが開発した、SRTをボンディングに対応させる拡張プロトコルである。Wi-Fiとモバイルデータ通信といった複数のネットワーク回線を仮想的に束ねるリンクアグリゲーション(ボンディング) 機能を備えている。このボンディングにより、片方の回線に障害が発生してももう一方が通信を補完するため耐障害性が向上し、配信の中断を防ぐ。さらに、パケットを両回線に分散させることで個々の回線の不安定さを平滑化し、全体として安定したストリームを維持できる。

前提条件

ハードウェア・ソフトウェア

  • PC: OBS Studioが動作するWindows, macOS, またはLinuxマシン
  • OBS Studio: インストール済みであること

必要なツール (go-irl)

go-irl を利用する。

go-irlReleasesページから、使用するOS/アーキテクチャに対応したパッケージ(例: go-irl_x.x.x_windows_amd64.zip)をダウンロードし、任意のフォルダに展開する。

Step 1: OBS Studioの設定

まずは、OBS Studioでストリームを受信・シーンチェンジするための設定をする。

1. メディアソースの追加 (映像・音声)

  1. OBSの「ソース」パネルで + をクリックし、メディアソースを追加する。
  2. プロパティ画面で「ローカルファイル」のチェックを解除する。
  3. 入力フィールドに udp://127.0.0.1:5002 を指定する。
  4. 入力フォーマットフィールドに mpegts を指定する。
  5. 重要: 「ソースがアクティブになったときに再生を再開する」のチェックを解除する。

2. ブラウザソースの追加 (統計情報・シーン制御)

  1. 同じく「ソース」パネルで + をクリックし、ブラウザソースを追加する。
  2. プロパティのURLフィールドに、以下のように指定する。
    http://localhost:9999/app?type=simple&wsport=8888&onlineSceneName=LIVE&offlineSceneName=OFFLINE
    
    • type=simple の部分をtype=graphに変えると、接続状況のグラフが表示される。type=noneだと統計情報は表示されず、単に自動シーン変更のみ利用できる。
  3. 重要: シーン制御を有効にするため、プロパティ下部の 「ページ権限」を「OBSへの高度なアクセス」に設定する。
  4. 重要:「表示されていないときにソースをシャットダウンする」「シーンがアクティブになったときにブラウザの表示を更新する」のチェックを解除する。
  5. onlineSceneName=ONLINEofflineSceneName=OFFLINE で設定しているように、接続が切れた、または悪い状況ではOFFLINEという名前のシーンに自動で切り替わり、再接続されるとONLINEという名前のシーンに切り替わる。

Step 2: go-irlの起動

次に、go-irl をダウンロード・展開して、ランチャースクリプトを実行する。

  • Windowsの場合:
    展開したフォルダにある go-irl-windows.bat ファイルをダブルクリックことで起動する。

  • macOS / Linuxの場合:
    ターミナルを開き、展開したフォルダに移動して以下のコマンドを実行する。

    ./go-irl.sh
    

起動後はこのような画面になるはず。

ファイヤーウォール等のダイアログが出てきた場合は、適宜対応すること。

うまく起動できない場合は、OBSを起動していて、シーンがすでに追加されている状態であることを確認する。また、すでにポートが占有されている場合があるので、一旦PCを再起動するか、下記手順でポート番号を変更する。

配信中はターミナルウィンドウを開いたままにしておく。

ポート番号の変更やパスワードの設定

ポート番号の変更や、映像ストリームの暗号化パスワードを設定したい場合は、ランチャースクリプト(go-irl-windows.bat または go-irl.sh)をテキストエディタで開き、コマンドライン引数を直接編集する。

例: パスワードを設定する場合 (go-irl.sh の場合)
srt-live-reporter を起動している行を探し、-from のURLに passphrase を追加する。

# 変更前
./srt-live-reporter -from "srt://127.0.0.1:5001?mode=listener" ...

# 変更後
./srt-live-reporter -from "srt://127.0.0.1:5001?mode=listener&passphrase=<パスワード>" ...

※パスワードは10文字以上にすること。

Step 3: ストリームの送信と確認

最後に、モバイルデバイスからPCへストリームを送信する。

1. ネットワーク設定

  • PCが接続されているルーターにおいて、go-srtlaが待ち受けるポート(デフォルトではUDP 5000)のポートフォワーディング(ポート解放) 設定を行う。
  • PCのグローバルIPアドレスを確認する。
    • 固定IPアドレスではない場合、ルーターの再起動等でIPアドレスが変更される場合があるため、DDNSサービスを利用することをおすすめする。

自宅がポートフォワーディングに対応していない回線の場合、Cloudflare Zero TrustやTailscale, Zero Tier等のサービスを利用するとよい。

2. モバイルアプリケーションの設定

  1. IRL Pro, Moblin, BELABOX などの配信アプリケーションを開く。
  2. 接続プロトコルにSRTLAを指定する。
  3. 接続先アドレスに、PCのグローバルIPアドレスとポート番号を指定する。サーバー側で設定したパスワードと同じものを、passphraseに指定する。
    • srtla://<グローバルIPアドレス>:5000
    • Stream IDは設定不要
      • Moblinの場合は何か入力しなければ次に進めないため、適当な文字列をいれておく。
    • パスワードを設定した場合は、?passphrase=<サーバー側で設定したパスワード>をURLの後ろに追加する。

3. 配信開始

アプリケーションで配信を開始する。正常に設定されていれば、OBSのメディアソースに映像が表示され、ブラウザソースに統計情報が表示される。

Moblinの場合、WiFiとモバイル通信が有効な状態であれば、自動的にボンディングが有効になる。うまく動いていれば、右上に各ネットワークの使用割合が表示される。

Discussion