Try   HackMD

戶外直播軟體架構 (obs, rtmp)

這篇主要是介紹戶外直播/戶外實況/IRL在程式方面的架構
不包含硬體架構和其使用心得

直播架構

  • [方法一] 手機直播App
    • 直推直播平台
      • 這個很簡單,這邊就不寫了
    • 轉推自架Nginx RTMP server,然後用OBS播放器拉流轉推直播平台
      • 播放器
        • OBS內鍵的影片播放器
          • 可以拉流RTMP,但是網路卡鈍時處理的效果不好
        • 外部播放器
  • [方法二] 使用實況背包(IRL Backpacks)
    • 主要是多家行動網路聚合,雲端伺服器,運動相機那些設備的整合方案
    • 因為國外有很多廠商在做,去問實際有在用這些設備的實況主或媒體(有些記者也開始會用這些設備轉播)會比較準
    • 還有這已經算商用等級的設備,所以價格不便宜
    • 使用實況背包還是可以選擇直推直播平台或是推到自架的RTMP然後轉OBS,所以這篇講的程式面架構還是可以套用在實況背包上

自架RTMP server當中介的好處:

  • 在家開OBS Studio可以自訂更多畫面選項
  • 戶外網路訊號不好時直播不會中斷
    • 不中斷的好處:
      • 直播記錄檔不會被直播平台分段
      • 直播途中比較不會因為中斷而流失觀眾

Nginx RTMP server

nginx.conf 設定範例

worker_processes 1; events { worker_connections 1024; } rtmp { server { listen 1935; chunk_size 4096; application live1 { live on; record off; } } }

輸出端OBS或手機直播app要推流到的網址:
rtmp://127.0.0.1:1935/live1/
串流碼: 1080

接收端OBS或VLC播放器拉流的網址:
rtmp://127.0.0.1:1935/live1/1080

進階管理程式 (實況主家裡電腦端)

  • nginx-obs-automatic-low-bitrate-switching
    • 持續偵測NGINX-RTMP流量高低來自動切換OBS場景
    • 可偵測戶外訊號中斷時切換場景
      • 這個場景畫面可以做一張圖提醒觀眾直播只是訊號不好或暫時中斷,畫面會馬上回來
      • 這個畫面圖也再搭配目前實況主題的宣傳圖
      • 也可以小畫面播放精彩回放剪輯(OBS場景要自己做)
    • 後續新出的版本有支援twitch聊天室bot和指令
      • 指令可以顯示流量,切換場景或開關OBS直播

這個需要一點安裝node.js環境npm使用的知識
不會裝的話就google或問人比較快

手機輔助軟體/網頁 (實況主戶外手機端)

  • 遠端管理
  • 聊天室
    • 直播平台官方app
      • 通常沒特殊需求的話直接用官方版本就可以了
    • 純觀看
      • 這個幾乎等同於放OBS畫面聊天室的版本(像是Streamlabs的聊天室網頁),所以也可以直接用手機網頁瀏覽器開這些版本來用(如果有額外自訂CSS效果會更好)
    • 聊天室語音
  • Donate抖內贊助語音(直接播放或使用藍牙喇叭,怕吵到人可以改用耳機)
    • 火狐手機版能設定背景執行,把OBS用的抖內音效網頁拿來用就可以了
  • 地圖GPS
    • (為了個人隱私和安全基本上還是不建議用,真的要用的話請不要在住家附近開啟)
    • [App] Real-Time GPS Tracker 2
      • 可以產生分享位置的網頁
    • [App] Google Maps官方版app的分享位置
      • 缺點是更新頻率很慢
    • Garmin live track
      • 要配合Garmin家的裝置才能用
  • 偵測心跳

OBS面版 (實況主家裡電腦端)

  • 聊天室
  • GPS (參考上方Real-Time GPS Tracker 2)
    • 地圖
    • 時速
  • 心跳 (參考上方偵測心跳)

給觀眾用的網頁

  • GPS地圖
    • 參考上方Real-Time GPS Tracker 2

手機直播軟體

手機直播app使用上可能有各種問題
要自己去實測過才會知道效果
這邊列出的是大概知道的幾個,不是全部
不保證哪個好用

資料來源/參考資料

  • Google, GitHub, StackOverflow, OBS官方論壇
  • reddit r/Twitch版, r/obs版

設備相關

HTML5網頁播放器

傳統串流播放器通常是設計用來看影片的
所以設計上會有卡在哪裡就從哪裡開始繼續播放的特性
因此在有卡鈍狀況下會有越播延遲越久的問題
所以推測選專門用來做直播的網頁HTML5播放器效果可能會比較好

HTML5播放器不支援播放rtmp,可以用nginx轉成hls輸出就能播放
參考: Setting up HLS live streaming server using NGINX - Peer5 P2P Docs

或是使用flash播放器有支援rtmp

其他相關連結

tags: OBS, rtmp, nginx