LOLS IRL 講的是標準、相容 BELABOX 的 srtla,所以你自己的接收端,行為跟我們代管的中繼完全一樣。這裡說明該跑什麼、哪些連接埠重要,以及會讓行動網路連線永遠連不到你機器的那個錯誤。
你不用自己架任何東西:免費的 LOLS Cloud 中繼就是為了讓聚合開箱即用而存在,或者你也可以自架接收端,誰都不用依賴。大家選擇自己架,都有好理由。你想讓直播落在自己掌控的基礎設施上,你想要一台離你實體很近、而我們附近沒有中繼的機器,你不想有額度要顧慮,或是你就是喜歡自己跑東西。App 裡沒有任何東西綁死在我們的伺服器上,所以換過去只要改主機名稱,其他都不用動。
手機 (wifi + 行動網路)
|
| srtla,UDP,每個網路各一個 socket
v
srtla_rec 監聽公開的 UDP 連接埠,把各條連線重組
|
| 一般 SRT,UDP,在 localhost 上
v
媒體伺服器 MediaMTX 或同類軟體
|
+--> OBS,或再轉推到 Twitch / Kick / YouTube
兩個元件,各司其職。srtla_rec 來自 BELABOX 專案,是看得懂聚合的那一塊:你手機開的每一條連線,都會作為同一組的一員向它註冊,它再把這一組還原成單一條普通的 SRT 串流。接著它把串流轉送給 SRT 監聽端,由媒體伺服器接手。MediaMTX 是常見的選擇,可以把串流交給 OBS、重新發布或錄下來,但任何接受 SRT 的東西都行。
接收端必須從你手機直播所走的每個網路都連得到,實際上就是需要公開位址。一台小型 VPS 就夠了:這是封包轉送,不是轉碼,所以頻寬和普通的 CPU 比核心數重要得多。把它放在離你直播地點近的地方,原因跟挑最近的中繼一樣:距離就是補不回來的延遲,而且每次重送都要再付一次。
家裡區域網路上的接收端,位址像 192.168.1.50 這樣的,只有你的 Wi-Fi 連得到,其他地方都不行。你的行動網路連線沒辦法路由到私有位址,所以它永遠註冊不了,你沒有聚合,只是在多繞幾步的 Wi-Fi 上直播,而統計畫面只會顯示一條連線,不是兩條。
要嘛架在有公開位址的機器上,要嘛在路由器上把 UDP 連接埠轉送到你區域網路裡那台機器,並讓 App 指向路由器的公開位址。用動態 DNS 名稱,就不用每次位址變了都要重打。
| 連接埠 | 用途 |
|---|---|
| UDP,你的 srtla 連接埠,從網際網路進來 | 手機唯一會碰到的連接埠。慣例是 5000。每條聚合的連線都從自己的來源位址和連接埠進來,所以不需要為每條連線另外開放或設定任何東西。 |
| UDP,你的 SRT 監聽端,本機 | srtla_rec 轉送重組後串流的地方。MediaMTX 預設在 8890 監聽 SRT。除非你也想讓一般 SRT 用戶端推流進來,否則這個不需要對網際網路開放。 |
| 你的媒體伺服器提供什麼就是什麼 | RTMP、RTSP、HLS 或 WebRTC 輸出到 OBS 或觀眾,完全由你決定,不屬於聚合的路徑。 |
防火牆、雲端安全群組和路由器轉送規則,預設常常是 TCP。送往只有 TCP 的規則的 srtla 註冊,會在毫無錯誤訊息的情況下消失,看起來跟接收端掛了一模一樣。如果某條連線註冊不了,先檢查規則的通訊協定,再查別的。
srtla_rec 會把 SRT stream id 原封不動轉過去,所以 App 的 Stream id 欄位要填什麼,取決於後面那台伺服器要什麼。MediaMTX 的話是推流格式:一個路徑,開了驗證的話再加上帳密:
publish:mypath
publish:mypath:username:password
如果連接埠對網際網路開放,就把驗證打開。公開位址上沒有驗證的推流端點,遲早會被不是你的人發現。
srtla_rec 監聽的 UDP 連接埠。srtla_rec 每條連線都會記一筆連線註冊,全部屬於同一組。兩條連線應該會在同一組裡看到兩筆註冊。如果永遠只看到一筆,就是第二個網路連不到主機:私有位址、只有 TCP 的防火牆規則,或手機上開著 VPN。卡在某一步,或是想請人幫忙看一台不肯接受第二條連線的接收端?到 Discord 問,或寄信到 support@lols.gg。附上你所在的地區、統計疊圖顯示的內容和接收端的紀錄,通常來回兩則訊息就能解決。