Featured image of post OBS マルチストリーミング奮闘記:不要なトラブル

OBS マルチストリーミング奮闘記:不要なトラブル

配信しない方がマシ、自分で遊ぶだけ。

手短に言うと、最近ゲームプレイのライブ配信を始めました。多くの視聴者を期待しているわけではなく、ただ、なぜやらないのか?という感じです。さらに、各配信プラットフォームにはライブの再生機能があります。つまり、毎回のゲーム録画を無料で保存できるわけですから、利用しない手はありません。

さて、本題に入りますが、ご覧のとおり、最近複数のプラットフォームで同時に配信する必要が出てきました。しかし、OBS自体は明らかに同時配信をサポートしておらず、プロキシ設定の欠如と他のよく知られた理由により、twitch.tvへの配信ができませんでした。そこで、解決策を探し始めました。

要求の明確化

  • 複数のプラットフォームで同時に配信する
  • パフォーマンスへの影響が少ない方が良い
  • 1つの配信にはプロキシが必要

マルチストリーミング

マルチストリーミングには既成のプラグインがあります:Github

Releaseページから.exeインストーラーをダウンロードします。インストールが完了したら、「ドック」メニューで「Multi-Output」にチェックを入れるのを忘れないでください。デフォルトでは別ウィンドウが表示されますので、この機会にOBSのレイアウトを調整しましょう。

マルチストリームパネルの有効化

プラグインの設定は簡単で、元のOBSと同じ手順で設定できます。

Bilibili ライブアシスタント

奇妙なことに、Bilibiliではフォロワーが50人未満の配信者はライブアシスタントを使用する必要があり、他の国内プラットフォームでも同様の規則があるかもしれません。サードパーティの配信モードを有効にすると、ライブパネルに配信設定が表示されます。この時、ライブアシスタントが提供する配信アドレスを使用する必要はありません。なぜなら、ライブアシスタントは毎回変わるローカルIPを提供するからです。単に127.0.0.1またはlocalhostに置き換えるだけで良いです。

Bilibili ライブアシスタントのサードパーティ配信モード プラグインの設定

Twitchへの配信

Twitchへの配信はGFWのために多くの不要なトラブルが発生します。

OBS自体はプロキシ設定をサポートしていません。当初、ClashのTAPモードを使用してOBSのトラフィックを強制的にプロキシしようとしましたが、ClashのTAPはrtmpトラフィックをリッスンしないため、失敗しました。そこで、Twitchと通信でき、GFWの影響を受けない転送サーバーを設定することにしました。

調査の結果、CaddyはRTMPプロトコルをサポートしておらず、nginx-rtmpモジュールはRTMP専用に設計されています。ほぼ唯一の選択肢です。

前提条件:

  • 基本的なLinuxコマンドライン操作に慣れていること。
  • サーバーにdockerdocker composeがインストールされていること。
  • 適切なコマンドラインテキストエディター、例えばnvimやほとんどのディストロにデフォルトで付属しているnano

ディレクトリを作成:

1
mkdir nginx-rtmp && cd nginx-rtmp

docker-compose.ymlを作成:

1
2
3
4
5
6
7
8
9
services:
    nginx-rtmp:
        image: tiangolo/nginx-rtmp:latest
        container_name: nginx_rtmp
        ports:
          - "1935:1935" # RTMP port
        volumes:
          - ./nginx.conf:/etc/nginx/nginx.conf
        restart: unless-stopped

nginx.confを作成:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
worker_processes  auto;

events {
    worker_connections  1024;
}

rtmp {
    server {
        listen 1935;
        chunk_size 4096;

        application live {
            live on;
            push rtmp://live.twitch.tv/app/{Twitchのメインストリームキー};
        }
    }
}

設定を開始:

1
2
docker compose up -d
# 古いバージョンのcomposeプラグインの場合は docker-compose up 

ファイアウォールのポートを開くのを忘れないでください。私のファイアウォール設定は、記事To Fix The Docker and UFW Security Flaw Without Disabling Iptablesに基づいており、ポートを開くコマンドは次のとおりです:

1
ufw route allow proto tcp from any to any port 1935

設定が完了したら、OBS内の配信ターゲットアドレスにrtmp://サーバーip/liveを入力し、任意の配信キーを入力します。設定が完了したら配信を開始できます。

Netch

サーバーがない場合、Netchを使用してOBSプロセスをプロキシして配信することもできます。

まず、Netchバージョン1.9.2をダウンロードします。必ず1.9.2バージョンであることを確認してください。プロセスモードを追加し、OBSフォルダーを追加して、そのプロセスモードのプロキシを有効にします。

プロセスモードの作成

結論

TwitchとBilibiliに同時に配信するために、多くの不要なトラブルに遭遇しました。OBSにプロキシ機能が組み込まれていないことを非難することもできますし、Clash VergeなどのツールがRTMPをサポートしていないことを非難することもできます。しかし最終的には、GFWを非難するしかありません。最終結果は満足のいくものでしたが、配信のためにこれらのことを苦労して行う経験は決して良いものではありません。将来的には、Mihomoカーネルを修正してRTMPプロトコルをサポートさせるか、OBSのトラフィックを転送する独立した実装を開発することを検討すべきかもしれません。いずれにしても、この土地でスムーズに配信するのは道のりが長く険しいです。

最後に、私のTwitchチャンネルをフォローしてください: https://www.twitch.tv/powerfullz233

Licensed under CC BY-NC-SA 4.0
Hugo で構築されています。
テーマ StackJimmy によって設計されています。