Successfully reported this slideshow.
Your SlideShare is downloading. ×

從零架設直播伺服器

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Loading in …3
×

Check these out next

1 of 24 Ad

More Related Content

Recently uploaded (20)

Advertisement

從零架設直播伺服器

  1. 1. Claire Chang 2021/11/27 從零開始架設直播伺服器
  2. 2. ⼤綱 • 關於我 • 什麼是直播 • 直播的流程 • 相關技術與軟體 • 串流伺服器⽅案 • SRS介紹及教學 • 如何設定SRS伺服器 • 如何推流 • 如何播放串流
  3. 3. 關於我 • 寫了⼗幾年的Flash,陪著Flash⾛過他的光榮與衰敗。 • Flash過世後,改使⽤Javascript去重寫過去所撰寫的Flash遊戲,因此熟悉WebGL網⾴ 遊戲的開發。 • 三年前開始斜槓,負責開發/維護/架設即時直播伺服器,並開發OCR智慧辨識功能,依 據直播串流內容,處理並解析影像內容,以取得所需資訊。 • 兩寶媽,八⽉初才⽣下⼆寶,是⼀個獅⼦寶寶。 • ⼤寶六歲,在⼤寶出⽣後接觸了基督教,現為基督徒⼀名。
  4. 4. 什麼是直播 • 現場直播,或稱實況轉播、即時轉播 • 直播與上傳⾃⼰錄影最⼤差異在觀眾可以透過留⾔和主播即 時互動,主播可根據觀眾反應及時調整節⽬內容或取悅觀 眾。 • 網路直播現今仍最常應⽤於轉播娛樂相關內容,當中演出或 主持網路直播的主持⼈⼀般稱之為「實況主」或直播主。 • 相關的服務平台有Youtube、Facebook Live、Twitch等…
  5. 5. 直播的流程 • 影⽚⼀般會以串流的形式推到伺服器上。 • 在推流之前因為網路頻寬的限制,會先對影⽚做編碼(如H.264)。 • 伺服器收到串流後,對串流做即時的轉碼,封裝成可於網⾴播放的格式(HLS, HTTP-FLV) • 同時間如果有觀眾收看直播,伺服器收到⽤⼾的請求後,會回傳影⽚串流,若是HTTP-FLV 會是⼀個FLV檔案的下載,若為HLS則會下載多個m3u8的描述檔。 • 客⼾端收到串流,由瀏覽器對串流做解封裝與解碼,並在網⾴的播放器即時播放影⽚。
  6. 6. 相關技術與軟體
  7. 7. 求懶⼈包 怎麼這麼複雜.... 天呀!
  8. 8. 直播的流程 今天的主題
  9. 9. 串流伺服器⽅案 • 由於串流服務很吃即時性及網路的順暢性,若是⽬標客⼾群在美國,⽽主機卻在台灣, 客⼾觀看串流需要經過跨海的網路傳輸,則觀看串流的體驗會非常的不好。因此,主機 的位置⼗分重要。若今天⽬標客⼾群散布世界各地,則會需要在各地都能有⼀個串流伺 服器,根據客⼾所在位置去使⽤最靠近的主機資源,以取得最佳體驗。 • 使⽤CDN(Content Delivery Network)的配套服務 • 優點:有完整配套⽅案,無需⾃⼰架設伺服器,可快速開始使⽤ • 缺點:價格昂貴,主機穩定度無法掌握,特殊的需求未必能做到 • 範例: • ⾃架伺服器:優點為可更加客製化,缺點為串流技術複雜,學習⾨檻⾼
  10. 10. ⾃架串流伺服器有那些選擇 • FMS:已死 • NGINX-RTMP:https://github.com/arut/nginx-rtmp-module • WOWZA: https://www.wowza.com/ • SRS: ⼀個輕量⾼效能的即時串流開源伺服器 https://github.com/ossrs/srs
  11. 11. 為何選擇SRS • 完全免費 • 輕量,專案非常的⼩ • ⾼效能 • ⽂檔齊全且中⽂化 • ⽀持RTMP/WebRTC/HLS/HTTP-FLV/SRT等多種串流格式 • ⽀持容器化,可輕易放進docker裡 • 功能齊全,⽀持web hook,錄影,API可踢流或取得伺服器資訊,可達成伺服器集群功 能 • 維護頻繁,使⽤者近年來⼤幅增加
  12. 12. 幾個開源串流伺服器星星數比較
  13. 13. 安裝SRS https://github.com/ossrs/srs/wiki/v4_CN_Home
  14. 14. 推流與播放
  15. 15. 設定你的SRS伺服器 • 在SRS的啟動指令(./objs/srs -c conf/srs.conf)中,後⾯-c所帶入的路徑就是SRS設定檔 的路徑,SRS的開發者在conf資料夾裡⾯幫我們寫好了各種不同的狀況可能會使⽤的 conf設定 • 位置在此:https://github.com/ossrs/srs/tree/4.0release/trunk/conf • 其中full.conf包含了所有可使⽤的設定指令及說明 • 其他每個不同的conf代表了不同狀況下可能會使⽤到的設定檔範本,如:dvr.mp4.conf 是錄影mp4檔案的設定檔,hls.conf則為客⼾端下載格式為HLS的設定檔,
  16. 16. 了解影⽚壓縮技術
  17. 17. 了解I,P,B幀及GOP • 編碼器將多張圖像進⾏編碼後⽣產成⼀段⼀段的GOP ( Group of Pictures )
  18. 18. 了解不同的封裝格式-RTMP • 優點: • 專為流媒體開發的協議,對底層的優化比其它協議更加優秀。 • 適合長時間播放 • 延遲相對較低,⼀般延時在1-3s 之間 • 缺點: • 播放端需依賴Flash • ⾏動設備不⽀援 • 因Flash於網⾴的全⾯死亡,出現了http-flv的格式,可以有較短的延遲,且可以在 網⾴播放,但現在仍蘋果系列仍然不⽀援於網⾴播放http-flv
  19. 19. 了解不同的封裝格式-HLS • 優點: • Apple 及Android以及⼀般網⾴播放器皆可以原⽣⽀持播放HLS • 在HTML5 ⾴⾯上播放HLS串流非常簡單 • 使⽤HTTP/80做 傳輸,可避免防⽕牆攔截,且CDN ⽀持良好 • 缺點: • 延遲⾼,延遲基本在10s+ 以上 • 並非連續串流,使⽤ts 切⽚,會造成非常多的⼩⽂件,對存儲和緩存都有⼀ 定的挑戰
  20. 20. 了解不同封裝格式-WebRTC,SRT • WebRTC是由Google在 2011 年開發的⼀個開源協議。有著極低的 延遲(少於⼀秒),很常⽤在網路電話及視訊中,也可透過網⾴ 直接做WebRTC推流。 • ⾏動裝置及電腦的網⾴皆可⽀持播放WebRTC,但是仍然較少直 播使⽤,因為在網⾴上的播放較不穩定。 • SRT(Secure Reliable Transport,安全可靠傳輸)是由 Haivision 在 2012 年開發的⼀個協議,可使⽤於推流上,有著極低的延遲以 及抗丟包的特性。
  21. 21. 開始推流 • 使⽤OBS推流 • 使⽤ffmpeg推流 下載ffmpeg: https://ffmpeg.org/download.html 於CMD使⽤此指令推流: ffmpeg -re -i ./doc/source.flv -c copy -f flv -y rtmp://localhost/ live/livestream
  22. 22. 觀看推流 • 下載播放軟體: VLC (https://www.videolan.org/vlc/index.zh_TW.html) • 在網⾴播放:僅⽀援WebRTC及HLS • 在網⾴播放HTTP-FLV:Flv.js (https://github.com/Bilibili/flv.js/) • 觀看位置:
  23. 23. Q&A
  24. 24. Thanks

×