七牛云于 6 月底宣布了一個針對視頻直播的及時流網絡 LiveNet 和完整的直播云辦理方案,許多開拓者對這個網絡息爭決方案的細節和利用場景很是感樂趣。
團結七牛及時流網絡 LiveNet 和直播云辦理方案的實踐,我們用七篇文章,更系統化地先容當下大熱的視頻直播各環節的要害技能,輔佐視頻直播創業者們更全面、深入地相識視頻直播技能,更好地技能選型。
本系列文章綱要如下:
(一)收羅
(二)處理懲罰
(三)編碼和封裝
(四)推流和傳輸
(五)現代播放器道理
(六)延遲優化
(七)SDK 機能測試模子
在上一篇中,我們先容了講授編碼和封裝。 本篇是《解密視頻直播技能》系列之四:推流和傳輸。推流是直播的第一公里,直播的推流對這個直播鏈路影響很是大,假如推流的網絡不不變,無論我們如何做優化,觀眾的體驗城市很糟糕。所以也是我們排盤查題的第一步,如何系統地辦理這類問題需要我們對相關理論有基本的認識。
推送協議
下面就先先容一下都有哪些推送協議,他們在直播規模的近況和優缺點。
RTMP
WebRTC
基于 UDP 的私有協議
RTMP
RTMP 是 Real Time Messaging Protocol(及時動靜傳輸協議)的首字母縮寫。該協議基于TCP,是一個協議族,包羅 RTMP 根基協議及 RTMPT/RTMPS/RTMPE 等多種變種。RTMP 是一種設計用來舉辦及時數據通信的網絡協議,主要用來在 Flash/AIR 平臺和支持 RTMP 協議的流媒體/交互處事器之間舉辦音視頻和數據通信。支持該協議的軟件包羅 Adobe Media Server/Ultrant Media Server/red5 等。
RTMP 是今朝主流的流媒體傳輸協議,遍及用于直播規模,可以說市面上絕大大都的直播產物都回收了這個協議:
利益
CDN 支持精采,主流的 CDN 廠商都支持
協議簡樸,在各平臺上實現容易
缺點
基于 TCP ,傳輸本錢高,在弱網情況丟包率高的環境下問題顯著
不支持欣賞器推送
Adobe 私有協議,Adobe 已經不再更新
WebRTC
WebRTC,名稱源自網頁即時通信(英語:Web Real-Time Communication)的縮寫,是一個支持網頁欣賞器舉辦及時語音對話或視頻對話的 API.它于 2011 年 6 月 1 日開源并在 Google、Mozilla、Opera 支持下被納入萬維網同盟的 W3C 推薦尺度。
今朝主要應用于視頻集會會議和連麥中,協議分層如下:
利益
W3C 尺度,主流欣賞器支持水平高
Google 在背后支撐,并在各平臺有參考實現
底層基于 SRTP 和 UDP,弱網環境優化空間大
可以實現點對點通信,通信兩邊延時低
缺點
ICE,STUN,TURN 傳統 CDN 沒有雷同的處事提供
基于 UDP 的私有協議
有些直播應用會利用 UDP 做為底層協議開拓本身的私有協議,因為 UDP 在弱網情況下的優勢通過一些定制化的調優可以到達較量好的弱網優化結果,但同樣因為是私有協議也勢必有現實問題:
利益
更多空間舉辦定制化優化
缺點
開拓本錢高
CDN 不友好,需要自建 CDN 可能和 CDN 告竣協議
獨立作戰,無法和社區一起演進
傳輸網絡
我們推送出去的流媒體需要傳輸到觀眾,整個這個鏈路就是傳輸網絡,類比貨運物流就是從出發地到目標地見的所有旅程了,假如階梯的容量不足,會激發堵車也就是網絡擁塞,這時我們會改變旅程也就是所謂的智能調治,可是傳輸網絡會站在全局的角度舉辦調治,所以會比原子世界的調治有更好的結果,可以想象有一個上帝在天空中俯視出發地和目標地間的所有的路況信息,并且照舊及時的,然后給出你一條明路,多么的神奇,但這些我們在 LiveNet 中都已經實現了。
這里先回首一下傳統的內容分發網絡。
為什么要有內容分發網絡,內容分發網絡的由來
互聯網發源于美國軍方的一個內部網絡,Tim Berners-Lee 是互聯網發現者之一,他很早就預見到在不久的未來網絡擁塞將成為互聯網成長的最大障礙,于是他提出了一個學術困難,要發現一種全新的、從基礎上辦理問題的要領來實現互聯網內容的無擁塞分發,這項學術困難最終催生出一種革新性的互聯網處事—— CDN .其時 Berners-Lee 博士隔鄰是 Tom Leighton 傳授的辦公室,一位麻省理工學院應用數學傳授,他被 Berners-Lee 的挑戰激起了樂趣。Letghton 最終辦理了這個困難并開始本身的貿易打算,創立了 Akamai 公司,成為世界上第一家 CDN 公司。
傳統 CDN 的架構