Featured image of post OBS 多路推流折騰記:那些本不必要的麻煩

OBS 多路推流折騰記:那些本不必要的麻煩

乾脆還是不直播得了,自己玩。

長話短説,最近我開始直播我的遊戲實況,我並不指望有多少人看,Just, Why not? 再者每個直播平台都會有直播回放。相當於免費儲存我每一次遊戲的錄影,何樂而不為?

扯遠了,如你所見,近期我有了多平台同時直播的需求,然而 OBS 本身顯然不支援同時推流,同時也因為不支援設定代理的特點和眾所周知的原因,無法推流到 twitch.tv,於是我開始尋找解決方案。

明確需求

  • 多路平台同時直播
  • 最好對效能影響小
  • 其中一路需要推流需要代理

多路推流

多路推流有現成的外掛可用:Github

在 Release 頁面下載.exe安裝包,安裝完成後記得在「停靠視窗」選單裏勾選「多路推流」。這時候預設會彈出一個獨立視窗,可以趁這個機會順便調整一下 OBS 的佈局。

啓用多路推流面板

外掛的設定也沒什麼好説的,用在原版 OBS 的填法在這個外掛裏如法炮製即可。

Bilibili 直播姬

莫名其妙,B 站小於 50 粉絲的 Up 主只能使用直播姬開播,其他國內平台做出類似規定者大概也不在少數,啓用第三方推流模式之後,直播面板會顯示推流的配置。此時的不需要按照直播姬給出的推流地址進行配置,因為直播姬莫名其妙的給了一個每次都會變的內網 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或者絕大部分 distro 自帶的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 和 B 站上推流,遇到了很多原本不必要的麻煩。我可以怪 OBS 沒有內建代理功能,也可以怪 Clash Verge 等代理工具不支援 RTMP,轉來轉去,最終要怪的,還得是 GFW。雖然最後的結果還算令人滿意,僅僅為了推流而折騰這些東西的體驗實在是稱不上良好。也許我今後我應該去研究修改 Mihomo 核心,讓其支援 RTMP 協議,亦或是自己寫一套獨立的實現單獨轉發 OBS 的流量,不論如何,在這片土地上,想要暢快的直播,道阻且長。

最後,歡迎關注我的 Twitch 頻道: https://www.twitch.tv/powerfullz233