實作在家裡自架 IRL 戶外直播伺服器

markdown-img-paste-20190826235520713

2022/7/5 更新:目前比較推薦以 SRT 通訊協議架設雲端伺服器的方式來自架 IRL 伺服器,伺服器與手機的設定方式可以參考新的文章:自架 IRL 戶外直播伺服器 – SRT 篇(雲端 Server 設置及手機直播 APP 教學) 。「自動偵測流量切換 OBS 場景的 NOALBS 系統」的設定也請參考新版文章的說明。

IRL (In Real Life) 直播是 Twitch 平台上泛指所有不是直播電腦遊戲畫面,而是發生在真實生活中的直播型態。平台上一般稱這類的實況主/直播主為 IRL streamer,台灣一般稱做「戶外直播」。而大多數人是使用最簡便的智慧型手機搭配直播 APP 就可以開始進行直播。但最近許多專職的 IRL streamer 也開始使用所謂的實況背包,採用運動攝影機及專業的直播編碼器來進行直播,關於硬體設置的部分可以參考我的 IRL設備心得這篇文章。而現在你正在閱讀的這篇文章則是有關軟體技術實作的筆記。

這篇實作筆記是根據 @eotones 在 戶外直播筆記(obs, rtmp) 這篇筆記中所提到內容,經過實際開台實作之後的心得,希望可以讓有在進行 IRL 戶外直播的實況主們在架設自己的伺服器時可以更簡單的使用這些工具來做應用。

自架 IRL 伺服器可以實現的功能

自架 IRL 伺服器可以利用家中穩定的網路將直播內容串流到直播平台,不會因為戶外移動網路的影響導致直播串流斷線,把一天的直播分成好幾段影片,也比較不會因為斷線讓觀眾轉台,可以有效地留住觀眾。
而透過自架 IRL 伺服器我們可以做到:

  • 不使用手機APP即可在戶外直播畫面上呈現聊天室、直播通知、斗內特效等畫面。
  • 不會因為臨時訊號不佳斷線導致整個直播離線,讓一場直播跟 VOD 被切成很多段。
  • 可以偵測流量,自動在流量低時切換至 Be Right Back 場景,請觀眾稍候不要轉台。
  • 在 BRB 場景上開啟點歌系統,讓觀眾不無聊。
  • 透過聊天室指令管理直播串流

大幅簡化以及自動化戶外直播中因為各種斷線問題衍生的斷線重連、場景切換問題,讓戶外直播方便一些。
接著我們就來進行實作吧!

 

在家中自架 nginx RTMP server

設定動態 DNS

因為一般人在家中的固網很有可能是動態 IP,有可能重機開機連線上網的 IP 就變動了,為了讓我們在戶外直播時能夠順利連回家中的 IRL 伺服器,除了跟電信商申請改用固定 IP 連線以外,還可以利用動態DNS服務來取得一段自己的自訂網址,就不用特地要查詢自己的 IP 了。

註冊 no-ip.com 的 DDNS 服務

你可以到 no-ip.com 註冊一個自己的動態域名,我習慣使用*.ddns.net

no-ip

下載動態更新 IP 客戶端

設定好 Host 之後下載動態 DNS 客戶端,執行並登入之後就可以把你的外部 IP 對應到你的自訂 DDNS 域名上,就不用每次要查自己的外部 IP 了。

註: 動態 DNS 需每 30 天登入更新一次,系統會寄信提醒你

你就獲得一個 自訂名稱.ddns.net 的網址了,之後我們要把它當作你的 IRL 伺服器位址

打開相對應的 IP 端口

自架 IRL 伺服器需要使用到 nginx 以及 OBS-websocket 服務,分別需要打開你 IP 的 1935 以及 4444 port,如果你家裡的網路有防火牆以及 IP分享器或 Router,要請你把這兩個連接埠給打開才能順利連線。

各家的路由器開啟方式都不同,所以這個部分要請你自己想辦法打開,一般是連進路由器後,去設定「port forwarding」(通訊埠轉發、通訊埠觸發)將外部的 1935/4444 port 對映至你的內部 IP 的相同 port。

除了 port forwarding 以外,Windows 系統的防火牆 port 也記得要打開喔!

設定 nginx RTMP server

nginx RTMP server 的檔案已經幫你準備好了,直接點此下載即可。

下載後解壓縮路徑請勿有中文,以我為例,我是解壓縮至 “D:/IRL” 路徑下,這個資料夾放置我所有關於自架 IRL 伺服器的檔案。

!

這個檔案我已經設定好了,理論上不用調整。要開啟服務只要執行 “start_nginx”,他會直接在背景執行,你可以在工作管理員裡面看到。

如果開啟成功,你使用瀏覽器連線自己的本機 IP 會看到以下畫面。

file

串流至 RTMP server

使用 直播APP 或是用其他的直播串流軟體,只要將串流選擇自訂 RTMP server,伺服器的部分輸入 rtmp://自訂名稱.ddns.net/live(在網址後面一定要有/live,他代表你的串流路徑),串流名稱(key)的部分可以照自己高興打,之後影像拉流會用到。

做到這裡,如果你的直播串流能上線,就代表你的 RTMP 伺服器已經架設完成了!

使用 OBS 進行 IRL 直播串流

剛剛設定好 RTMP 伺服器讓你的 IRL 直播能夠串流回到你家,我們稱之為推流

現在我們要使用 OBS 來拉流並直播到 Twitch/Youtube/Facebook 平台上。

設定 IRL 實況場景

你需要設定兩個場景,一個叫 IRL,另一個叫 BRB(Be Right Back)。
IRL 是負責播放你的串流影像用的,而 BRB 則是後面設定到斷線自動切換至等待場景會用到。

IRL 場景裡面會有你的:

  • IRL視訊影像
  • 聊天室擷取(看個人,有的人不會放)
  • 直播通知(stream alerts)及斗內(歐付寶、綠界)通知擷取
  • 其他個人選擇的小元件、LOGO圖片之類的

IRL 視訊影像拉流

這裡你可以安裝 VLC Player,安裝完後你的 OBS 就會多一個VLC視訊來源的擷取,新增一個 VLC 視訊來源擷取,在屬性中按右邊的+號選擇新增路徑/URL,然後輸入rtmp://你的動態網址(或本機IP)/live/串流名,播放行為選擇不可見時停止,可見時重新開始

也可以在 VLC建立一個播放清單,網址指向 rtmp://你的動態網址(或本機IP)/live/串流名 ,再用 OBS 去讀取這個播放清單。

如果成功的話你可以就在 OBS 畫面中看到自己的 IRL 直播串流了。

聊天室擷取

有很多聊天室擷取的工具可以使用,我個人是習慣使用 SKchat
設定好主題及字型後使用瀏覽器擷取貼上 SKChat 聊天室網址就可以了。

直播通知 (stream alerts) 擷取

直播通知的設定方式也是大同小異使用瀏覽器擷取,常用的有 StreamlabsStreamElements,我比較推薦使用 Streamlabs,設定相對簡單。你可以自訂 gif 動畫跟音效,讓你直播的追隨、訂閱、轉播通知很有個人風格。

歐付寶綠界的實況主斗內都有斗內動畫通知的設定,一樣使用瀏覽器擷取就可以了。

斗內(Donate)設定可以參考我這篇文章

設定 BRB (Be Right Back) 場景

這個場景是放置資訊讓觀眾知道你暫時因為某些原因離線、斷線,基本上只要一張靜態圖就可以了。有的實況主會播放自己過去的影片或是照片,這個基本上看個人選擇。

我只做一張 1920*1080 的 JPG 圖。

點歌系統設定

點歌系統一樣是使用 Sklive 的服務,這只是讓觀眾在斷線時可以點歌不會無聊而已,不一定要設定。如果有設定的話記得每次直播時要把它開啟,然後要注意輸出音效不能太大聲蓋過 VLC視訊的音效,不然在 IRL 時音樂會蓋掉人聲。

OBS 串流設定

就是直播到 Twitch/Youtube/Facebook 平台的基礎設定,這個應該不需要教學吧?
需要教學請告訴我,我再寫文章…

設定自動偵測流量的OBS(nginx-obs-automatic-low-bitrate-switching)

安裝 Node.js (npm)

使用這個自動控制系統需要先安裝 Node.js 的執行環境

安裝 OBS-websocket

這是一個可以讓你在遠端控制 OBS 的介面系統,請到此下載安裝檔

請注意 OBS 跟 OBS-websocket 之間的版本搭配

安裝完畢後你 OBS 的 工具選單會出現WebSockets Server Settings

之後你可以利用網頁介面來遠端控制 OBS面板,不過這不是我們主要使用的目的。我們主要是要讓系統可以透過聊天室指令來手動/自動控制OBS的串流及場景

安裝與設定 自動偵測流量(NOALBS)系統

 

2022/7/5:NOALBS 系統經過兩三年的更迭,已經進化成 v2 新版本,本文安裝與設定的方式均已失效,新的設定方式請參考 新版 SRT 雲端 server 設定文章

 

終於到安裝這個系統的時候了,請先到 nginx-obs-automatic-low-bitrate-switching下載

解壓縮到沒有中文的路徑,可以跟我一樣放在 D:\IRL\下,把資料夾改名成一個比較好記的,例如nginx-NOALBS

接著打開 npm install –production.bat 這個檔案

開始自己跑安裝了

安裝完你會看到這個畫面

接下來要做幾個設定

  • 把 nginx.conf 跟 stat.xsl 複製到 nginx_IRL 的資料夾
    因為還要改設定,所以我已經在剛才提供給你的 nginx RTMP server
    檔案中做好了。如果你是下載我的檔案,這步驟可以跳過。
  • 使用文字編輯器打開 config.json檔案,做以下編輯:

Twitch 聊天頻道金鑰(oauth) 請到 https://twitchapps.com/tmi/取得後貼上 oauth:*********這串文字

設定完成後存檔,執行 npm start.bat 這個檔案

執行成功的畫面

以後直播時執行就可以自動切換場景、利用指令管理 OBS 了!

你可以建立一個直接進入到 D:\IRL\nginx-NOALBS\ 的捷徑,以後就比較方便了。

利用聊天室指令管理串流

開啟以上系統後,你就可以在自己頻道的聊天室打指令來管理你的串流,以下是幾個常用指令:

  • !start 遠端執行 OBS 上的開始串流
  • !stop 遠端執行 OBS 上的停止串流
  • !rec on/off 遠端執行 OBS 錄影
  • !switch (場景名稱) 切換到你設定好的場景名稱,例如: !switch IRL
  • !refresh 切換到重整場景
  • !trigger (數字) 設定偵測到低於這個數字的位元率時,自動切到 BRB 場景,一般設定 300-1000,你也可以用作手動切換場景用途。
  • !bitrate 回傳目前的位元率

整體戶外直播流程說明

好了,這樣你就架設完成 IRL 戶外直播伺服器了!

接下來是你的每次的 IRL 戶外直播流程

    1. 外出之前先在電腦開啟遠端桌面軟體,等到外出開始準備直播後連線回家開啟 nginx serverOBS (也可以出門前先開好) (遠端桌面軟體推薦 Google Chrome Remote Desktop
    2. 執行 npm start.bat 
    3. 使用手機串流 APP 或是編碼器開始推流
    4. 開啟 Twitch APP 進入儀表板打好當天的直播標題後,進入頻道的聊天室,輸入指令 !start 開始直播
    5. 直播結束後,結束你的 IRL串流,並利用!stop指令關掉直播。

開始享受IRL戶外直播的過程以及樂趣吧,如果你有發現什麼有趣的事,可以加入我的IRL戶外實況討論社團跟我們分享哦!


如果你覺得這篇文章對你有所幫助的話,請幫我按下方的「拍手(Like)」五次,讓我可以獲得些許 LikeCoin 的收入,支持我創作更多教學內容,謝謝!

你可能會喜歡的文章...

在〈實作在家裡自架 IRL 戶外直播伺服器〉中有 15 則留言

    1. 請問如果要做到好像貓印美女直播,是不是要好大工程,前期同後期都很大費用

      1. 你好:

        對喔,架設直播平台需要相當龐大的伺服器資源,
        要足夠承載夠多的直播串流、觀看人數以及流量
        所以所費不貲喔!

  1. 哈囉 我在嘗試你的做法
    想知道”設定 nginx RTMP server”
    要怎麼確認自己在哪裡出錯了
    因為我用瀏覽器連線本機ip
    都會無法連上網站
    串流也沒有辦法丟上去

    1. 阿文你好:

      使用瀏覽器連線本機IP,如果看不到「Welcom to Nginx」頁面
      那就是 port 或 nginx 沒有正確開啟
      請確認
      1. nginx 是否有正確執行
      2. 你的 Win 防火牆、路由器 等等的部分是否有開啟 文章中需要的 port
      至於開 port 的方法因為每家路由器的設定方式都不一樣
      我無法一一為各位解答,還請自行搜尋你的路由器如何開啟port

        1. Hi 阿文:

          port 4444 是 OBS websocket 要走的 port
          所以需要安裝 OBS websocket 並且開啟 OBS 時才有作用

          如果 port 1935 有開啟,就嘗試 nginx rtmp 是否能正確收到影像訊號

  2. 請問要怎麼嘗試nginx rtmp 是否能正確收到影像訊號!
    連線本機IP是 直接在連結上打IP嗎

    1. 我用STREAMLABS串流
      如果把nginx關掉會斷線
      所以應該是影片有出去
      問題就是OBS擷取不到這樣

  3. 試了10小時,防火牆全關 1934與4444 皆位於listening狀態 怎麼連就是連不上,真的快瘋了!

  4. 想請問用gopro10直播也可以設定嗎?
    還有如果是在外面租屋,是只要設定路由器就可以用了,還是一定需要更改小烏龜?

    1. gopro10 應該是可以透過 APP 透過 rtmp 進行直播
      如果要自架 rtmp 於自己的電腦上就需要改小烏龜/路由器
      或是另一個方法是架在雲端機器上,就可以免去開port這個步驟

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

Top