戶外台實況教學

戶外台教學

身為一個 當過網管 略懂幾行code的小菜雞 想來解釋一下戶外台最基本構成的幾個要件

  1. 攝影裝置
    • 泛指所有有鏡頭的設備
  2. 推流裝置
    • 泛指所有可上網的設備
  3. 收流設備
    • 泛指所有可以接收視訊流的設備

大概分這些吧

流程圖

By 上面的定義 大概會長這樣

flowchart LR 攝影裝置-->|擷取卡| 推流裝置-->|網路 SRT| 收流設備-->|VLC|電腦-->|OBS| Twitch/YT

這邊如果你是用手機 就可以整合攝影裝置和推流裝置

flowchart LR 手機-->|網路| 收流設備 -->|VLC|電腦-->|OBS|Twitch/YT

如果 你想看到你的YT或 Twitch 直播 上上下下(X

flowchart LR 手機-->|網路|Twitch/YT

所以 綜觀上面要件

最少最少

我們會需要

  1. 一台直播用的電腦
  2. 一台手機
  3. (一台收手機畫面的電腦? 或是虛擬機也可以)

講到這裡好像有點太複雜了

在上一張圖

flowchart LR 手機-->SRT_Server-->直播電腦-->Twitch/YT

SRT Server

docker 環境預備

https://dockerdocs.cn/docker-for-windows/install/

可以在自己的windows電腦上面執行

或是你有linux經驗

可以考慮 oracle cloud的always free

我查到的資料有10TB每個月的網路流量 應該是夠用

GCP 最基本的Cloud compute engine

流量好像不夠用QAQ

Untitled

或是 你可以直接花錢租

我有點懶得在電腦上面裝docker Desktop 就先看上面的教學吧

SRT_SERVER 採用的是 別人打包好的docker image

1
docker run -d --name belabox-receiver -p 5000:5000/udp -p 8181:8181/tcp -p 8282:8282/udp --restart=always --pull=always  luminousaj/belabox-receiver:latest

網路

既然叫戶外直播 肯定沒辦法跟電腦連著同一個wifi吧

不管架在哪 都要設定的是

防火牆要去allow 8282port的 tcp流量流入(inbound traffic)

  • IF 你的SRT server架在雲平台上

你很有可能擁有一個public IP 省下了設定router(分享器/小烏龜)的麻煩

  • IF 你的 SRT server在家裡的電腦上
    • 分支1 — 使用種花網路的朋友可以直接申請固定IP 並記得PPPoE撥號出去讓自己的電腦擁有一個固定的public IP
    • 分支2 — 你可能沒辦法有一個固定IP 但你還是可以PPPoE撥號出去讓自己擁有一個會浮動的pubilc IP
graph LR 固定IP---1(PPPoE撥號) DDNS---浮動IP 浮動IP---2(PPPoE撥號) 浮動IP---3(沒撥號)

我看了我都很痛苦 我可以下次在解釋嗎

這邊最簡單的會是 有一個 固定IP 和 電腦直接使用這個固定IP 的組合

最困難的是 沒有固定IP 和 電腦不做PPPoE撥號 的組合

固定IP 和 電腦直接使用這個固定IP

恩 你甚麼都不用做

就把固定IP 照下面 手機 URL的格式寫進去就好了

沒有固定IP 和 電腦不做PPPoE撥號

我們有兩個東西要處理

  1. 浮動IP —> 每隔一段時間會變動

我們不想每次浮動IP改變的時候就去修改 IRL pro 裡面的設定

所以我們要使用 DDNS(Dynamic DNS) 讓我們不用修改IRL pro裡面的設定

DNS — 如果我們沒有DNS 那你每次想要看netflix 就不能直接輸入 netfilx.com 搜尋不能直接打google.com 就到google的搜尋頁面 而是需要 輸入 64.233.176.101 才能到google.com的網頁

有點懶 下次補上你們覺得怎麼樣

下面開放直接問 只是可以先幫我補一下你家的架構圖 從小烏龜開始往電腦畫

手機

我們使用IRL Pro這個app

這邊只教怎麼做 Connections 的設定

⚙️→Connections→New Connections


設定大部分會是預設 也可以參考 https://hitorigs.live/cloud-srt-irl-server-setting-up/


Name

可以任意填寫

URL

在srt server架設好之後 應該會知道 srt 伺服器的IP

然後 在docker 指令中 可以看到 srt伺服器 使用的 port 是 8282這個port

在8181這個port上 有一個stats的網頁 可以看到推流的狀態 等等在電腦上設定NOALBS 的時候會用到

所以大概會是這樣

srt://{ip}:8282

streamid

填入 live/stream/belabox

電腦

noalbs

我們要採用NOALBS 去控制OBS的實況場景 總不能 你手機斷線了 給大家看黑畫面吧

flowchart LR NOALBS---|Websocket| OBS

下載 : https://github.com/715209/nginx-obs-automatic-low-bitrate-switching/releases/tag/v2.8.0

下面兩個灰色的 有發現//的內容記得幫我仔細看 .env 如果你希望可以在聊天是用指令控制NOALBS

https://twitchapps.com/tmi/ Oauth 可以從這邊取

1
2
TWITCH_BOT_USERNAME=715209
TWITCH_BOT_OAUTH=oauth:YOUR_OAUTH_HERE

config.json

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
{
  "user": {
    "id": null,
    "name": "name",  //隨意設置
    "passwordHash": null
  },
  "switcher": {
    "bitrateSwitcherEnabled": true,
    "onlySwitchWhenStreaming": false,
    "instantlySwitchOnRecover": true,
    "autoSwitchNotification": true,
    "retryAttempts": 5,
    "triggers": {     //這邊是給你設定當串流碼率低於多少 會換OBS場景
      "low": 300,
      "rtt": 2500,
      "offline": null
    },
    "switchingScenes": { //需要在OBS裡面新增的場景 如果直播期間不在這個場景中 就不會按照碼率切場景
      "normal": "live",
      "low": "low",
      "offline": "offline"
    },
    "streamServers": [
      {
        "streamServer": {
          "type": "SrtLiveServer",
          "statsUrl": "http://{ip}:8181/stats",  //要填上你架設的SRT live server ip
          "publisher": "live/stream/belabox"
        },
        "name": "SLS",
        "priority": 0,
        "overrideScenes": null,
        "enabled": true
      }
    ]
  },
  "software": {
    "type": "Obs",
    "host": "localhost",
    "password": "KZzq0C3FDgywlpFM",  //在OBS->工具-> Websocket 伺服器 可以找到
    "port": 4455,
    "collections": {
      "twitch": {
        "profile": "twitch",
        "collection": "twitch_scenes"
      },
      "kick": {
        "profile": "kick",
        "collection": "kick_scenes"
      }
    }
  },
  "chat": {
    "platform": "Twitch",
    "username": "username", //Twitch的使用者名稱
    "admins": [],
    "prefix": "!",
    "enablePublicCommands": false,
    "enableModCommands": true,
    "enableAutoStopStreamOnHostOrRaid": true,
    "announceRaidOnAutoStop": true,
    "commands": {
      "Fix": {
        "permission": null,
        "alias": ["f"]
      },
      "Switch": {
        "permission": "Mod",
        "alias": ["ss"]
      },
      "Bitrate": {
        "permission": null,
        "alias": ["b"]
      }
    }
  },
  "optionalScenes": {
    "starting": null,
    "ending": null,
    "privacy": "privacy",
    "refresh": null
  },
  "optionalOptions": {
    "twitchTranscodingCheck": false,
    "twitchTranscodingRetries": 5,
    "twitchTranscodingDelaySeconds": 15,
    "offlineTimeout": null,
    "recordWhileStreaming": false
  },
  "language": "zh_tw"
}

OBS-SRT

這邊建議安裝VLC之後

官方 VLC 媒體播放器下載,最好的開放原始碼播放器 - VideoLAN

在OBS裡面新增 VLC視訊來源

然後網址填

srt://{ip}:8282/?streamid=play/stream/belabox

e.g.

IRLPRO streamid OBS VLC視訊URL
live/stream/belabox play/stream/belabox
live/stream/abc play/stream/abc

問 都問 下面都給你問 我盡我所能

有問題可以在下方utterances留言喔

updatedupdated2024-08-192024-08-19
載入評論