# 戶外直播軟體架構 (obs, rtmp) 這篇主要是介紹戶外直播/戶外實況/IRL在程式方面的架構 不包含硬體架構和其使用心得 ## 直播架構 * [方法一] **手機直播App** * 直推直播平台 * 這個很簡單,這邊就不寫了 * 轉推自架[Nginx RTMP server](https://github.com/arut/nginx-rtmp-module/),然後用OBS播放器拉流轉推直播平台 * 播放器 * OBS內鍵的影片播放器 * 可以拉流RTMP,但是網路卡鈍時處理的效果不好 * 外部播放器 * 影音播放程式 * [VLC media player](https://www.videolan.org/vlc/index.zh-TW.html) * 網頁HTML5直播播放器 * [方法二] **使用實況背包(IRL Backpacks)** * 主要是多家行動網路聚合,雲端伺服器,運動相機那些設備的整合方案 * 因為國外有很多廠商在做,去問實際有在用這些設備的實況主或媒體(有些記者也開始會用這些設備轉播)會比較準 * 還有這已經算商用等級的設備,所以價格不便宜 * 使用實況背包還是可以選擇直推直播平台或是推到自架的RTMP然後轉OBS,所以這篇講的程式面架構還是可以套用在實況背包上 :::info 自架RTMP server當中介的好處: * 在家開**OBS Studio**可以自訂更多畫面選項 * 戶外網路訊號不好時直播不會中斷 * 不中斷的好處: * 直播記錄檔不會被直播平台分段 * 直播途中比較不會因為中斷而流失觀眾 ::: ## Nginx RTMP server ### nginx.conf 設定範例 ```apache= 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.conf設定可以看這篇: https://hackmd.io/@Eotones/Hk42GMAJV ## 進階管理程式 (實況主家裡電腦端) * [nginx-obs-automatic-low-bitrate-switching](https://github.com/715209/nginx-obs-automatic-low-bitrate-switching) * 持續偵測NGINX-RTMP流量高低來自動切換OBS場景 * 可偵測戶外訊號中斷時切換場景 * 這個場景畫面可以做一張圖提醒觀眾直播只是訊號不好或暫時中斷,畫面會馬上回來 * 這個畫面圖也再搭配目前實況主題的宣傳圖 * 也可以小畫面播放精彩回放剪輯(OBS場景要自己做) * 後續新出的版本有支援twitch聊天室bot和指令 * 指令可以顯示流量,切換場景或開關OBS直播 :::info 這個需要一點安裝**node.js環境**和**npm**使用的知識 不會裝的話就google或問人比較快 ::: ## 手機輔助軟體/網頁 (實況主戶外手機端) * 遠端管理 * [App] [TeamViewer](https://www.teamviewer.com/tw/) * [網頁] [OBS Tablet Remote](http://t2t2.github.io/obs-tablet-remote/) * OBS必須安裝 [obs-websocket](https://obsproject.com/forum/resources/obs-websocket-remote-control-of-obs-studio-made-easy.466/) * [Twitch聊天室指令] [twitch-obs-scene-changer](https://github.com/Pedrolian/twitch-obs-scene-changer) * 用聊天室指令控制OBS場景(要有台主或mod權限) * 聊天室 * 直播平台官方app * 通常沒特殊需求的話直接用官方版本就可以了 * 純觀看 * 這個幾乎等同於放OBS畫面聊天室的版本(像是Streamlabs的聊天室網頁),所以也可以直接用手機網頁瀏覽器開這些版本來用(如果有額外自訂CSS效果會更好) * 聊天室語音 * (人少的台才適合用,人多會很吵) * [網頁] [SpeechChat](https://www.speechchat.com/) * [網頁] [twitch實況Google小姐教學文](http://ttsproxy.appspot.com/) * Donate抖內贊助語音(直接播放或使用藍牙喇叭,怕吵到人可以改用耳機) * 火狐手機版能設定背景執行,把OBS用的抖內音效網頁拿來用就可以了 * 地圖GPS * **(為了個人隱私和安全基本上還是不建議用,真的要用的話請不要在住家附近開啟)** * [App] [Real-Time GPS Tracker 2](https://play.google.com/store/apps/details?id=com.greenalp.realtimetracker2&hl=zh-TW) * 可以產生分享位置的網頁 * [App] Google Maps官方版app的分享位置 * 缺點是更新頻率很慢 * [Garmin live track](https://www.markchoo.com.tw/doc/190) * 要配合Garmin家的裝置才能用 * 偵測心跳 * [How To Add Real Heart Rate To Stream](https://medium.com/@plsoid/how-to-add-real-heart-rate-to-stream-5b993b3fa7e6) * (通常是運動或是玩恐怖遊戲的實況在用) ## OBS面版 (實況主家裡電腦端) * 聊天室 * Twitch + Youtube * [網頁] [Streamlabs](https://streamlabs.com/) * [網頁] [SKChat](https://live.sk-knower.com/skchat) * GPS (參考上方Real-Time GPS Tracker 2) * 地圖 * 時速 * 心跳 (參考上方偵測心跳) ## 給觀眾用的網頁 * GPS地圖 * 參考上方Real-Time GPS Tracker 2 ## 手機直播軟體 :::warning 手機直播app使用上可能有各種問題 要自己去實測過才會知道效果 這邊列出的是大概知道的幾個,不是全部 不保證哪個好用 ::: * [Streamlabs - Stream Live to Twitch and Youtube](https://play.google.com/store/apps/details?id=com.streamlabs) (手機畫面 or 手機鏡頭) * [Ace Live Streaming & PC Mirroring](https://play.google.com/store/apps/details?id=com.dev47apps.screenstream) (手機畫面 or 手機鏡頭) * [Mobizen Live Stream to YouTube](https://play.google.com/store/apps/details?id=com.rsupport.mobizen.live) (手機畫面 or 手機鏡頭) * [Screen Stream Mirroring Free](https://play.google.com/store/apps/details?id=com.mobzapp.screenstream.trial) (手機畫面) * [Screen Stream Mirroring Pro](https://play.google.com/store/apps/details?id=com.mobzapp.screenstream) (手機畫面) ## 資料來源/參考資料 * Google, GitHub, StackOverflow, OBS官方論壇 * reddit r/Twitch版, r/obs版 ### 設備相關 * [戶外直播設備心得與IRL實況背包設置計畫 - 一人遊戲直播局](https://hitorigs.live/irl-gear-setting/) * [LiveU Solo](https://gosolo.tv/) * 很多國外IRL實況主在用的設備(有些是包含在實況背包的配備中) * [IRL Backpacks — UnlimitedIRL](https://www.unlimitedirl.com/backpacks/) * 基於LiveU Solo的整合實況背包方案(主要是網路聚合,雲端伺服器,運動相機那些設備的整合) * 整合多種功能的實況背包方案有很多家廠商在做,這是其中一家,其他的可以另外去google找 * [Gunrun Backpack](https://www.gunrun.tv/backpack) * 同上 ### HTML5網頁播放器 :::info 傳統串流播放器通常是設計用來看影片的 所以設計上會有卡在哪裡就從哪裡開始繼續播放的特性 因此在有卡鈍狀況下會有越播延遲越久的問題 所以推測選專門用來做直播的網頁HTML5播放器效果可能會比較好 ::: * [Video.js](https://github.com/videojs/video.js) * [Stream from OBS to Video.js via nginx rtmp does not show stream - Works in VLC](https://github.com/videojs/video.js/issues/4303) * [flv.js](https://github.com/Bilibili/flv.js) * [NodePlayer.js](https://github.com/illuspas/NodePlayer.js) * [Node-Media-Server](https://github.com/illuspas/Node-Media-Server) :::info HTML5播放器不支援播放rtmp,可以用nginx轉成hls輸出就能播放 參考: [Setting up HLS live streaming server using NGINX - Peer5 P2P Docs](https://docs.peer5.com/guides/setting-up-hls-live-streaming-server-using-nginx/) 或是使用flash播放器有支援rtmp ::: ## 其他相關連結 * [BABANANA Chat 金剛直播聊天室截取工具](https://hackmd.io/s/B183d6iwG) * [Youtube直播聊天室CSS修正(手機版火狐瀏覽器)](https://hackmd.io/s/HJJd-H3GX) * [nonolive直播聊天室CSS修正(OBS版)](https://hackmd.io/s/HyvZljyc7) {%hackmd /@Eotones/SkY_4JVTS %} ###### tags: `OBS`, `rtmp`, `nginx`