《視頻直播技術詳解》系列之四:推流和傳輸

2020-11-28 CSDN技術社區

   七牛雲於 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 的架構

上圖是一個典型的 CDN 系統的三級部署示意圖,節點是 CDN 系統中的最基本部署單元,分為三級部署,中心節點、區域節點和邊緣節點,最上面一級是中心節點,中間一級是區域節點,邊緣節點地理位置分散,為用戶提供就近的內容訪問服務。

下面介紹一下 CDN 節點的分類,主要分成兩大類,骨幹節點和 POP 節點,骨幹節點又分為中心節點和區域節點:

骨幹節點

 中心節點

 區域節點

POP節點

 邊緣節點

邏輯上來講,骨幹節點主要負責內容分發和邊緣節點未命中時進行回源,POP 節點主要負責提供給用戶就近的內容訪問服務。但如果 CDN 網絡規模較大,邊緣節點直接向中心節點回源會給中間層的核心設備造成的壓力過大,在物理上引入區域節點,負責一個地理區域的管理,保存部分熱點數據。

直播傳輸網絡有別於傳統 CDN 的痛點

隨著 Live 時代的到來,直播成為當前 CDN 廠商的又一個主要的戰場,那麼 Live 時代 CDN 需要支持什麼樣的服務呢?

流媒體協議的支持,包括 RTMP , HLS ,HTTP-FLV 等。

首屏秒開,從用戶點擊到播放控制在秒級以內

1~3 延遲控制,從推流端到播放端,延遲控制在 1~3 秒之間

全球全網智能路由,可以利用整個 CDN 網絡內的所有節點為某一單一用戶服務,不受地域限制。隨著全球一體化進程不斷推進,跨區域、跨國家、跨洲的直播正變為常態,很可能主播在歐美,而用戶在亞洲。

天級別的節點按需增加,中國公司出海已成大勢,CDN 需要更多的海外節點,如今比拼的更多的是海外節點可以快速部署,從提出節點增加需求到節點入網提供服務,需要達到一天之內,對 CDN 運維和規劃提出非常高的要求。原有的月級別規劃和入網滿足不了先進的要求。

傳統 CDN 的鏈路路由

CDN 基於樹狀網絡拓撲結構,每一層都有 GSLB (Global Server Load Balancing) 用於同一層內的多個 CDN 節點負載均衡,這樣有什麼好處呢?

前面提到的眾多 CDN 的應用場景中,網頁加速、視頻加速、文件傳輸加速,都是同時依賴 GSLB 和 Cache 系統的,Cache 系統是整個 CDN 系統中的成本所在,設計樹形結構可以最大化的節省 Cache 系統的資本投入。因為只有中心節點需要保持機會所有的 Cache 副本,向下逐級減少,到了邊緣節點只需要少量的熱點 Cache 就可以命中大部分 CDN 訪問請求,這樣極大的降低了 CDN 網絡的成本,也符合當時 CDN 用戶的需求,可謂雙贏。但是到了 Live 時代,直播業務是流式業務,很少涉及到 Cache 系統,基本都是播完就可以釋放掉存儲資源,即使因為政策原因有存儲的需求也都是冷存儲,對於存儲的投入相對非常低廉,而且不要求存儲在所有節點中,只要保證數據可回溯,可用即可。

我們看看樹狀網絡拓撲,用戶的鏈路選擇數量是有限的,如下圖,用戶在某一個區域內可選擇的鏈路數是:2 * 5 = 10

用戶在某一區域內,則 GSLB (通常在邊緣節點這一層是 Smart DNS)會把用戶路由到該區域內的某個邊緣節點,上一層又會路由到某個區域節點(這裡的 GSLB 通常是內部的負載均衡器),最後又回溯到中心節點,中心節點會連結源站。

這裡的假設是:

用戶能訪問的最快節點一定是該區域內的邊緣節點,如果該區域沒有邊緣節點則最快的一定是邏輯相鄰的區域內的邊緣節點。

邊緣節點能訪問的最快節點一定是該區域內的區域節點,一定不會是其他區域的節點。

區域節點到中心節點一定是最快的,這個鏈路的速度和帶寬都是最優的。

但實際真的如此麼?引入了如此多的假設真的正確麼?

實際上就算理論上我們可以證明以上假設有效,但是節點規劃和區域配置大都依賴於人的設計和規劃,我們知道人多是不靠譜的,而且就算當時區域規劃正確,誰能保證這些靜態的網絡規劃不會因為鋪設了一條光纖或者因為某些 IDC 壓力過大而發生了改變呢?所以我們可以跳出樹狀網絡拓撲結構的桎梏,探索新的適合直播加速的網絡拓撲結構。

為了擺脫有限的鏈路路由線路限制,激活整理網絡的能力,我們可以把上述的節點變成網狀網絡拓撲結構:

我們看到一旦我們把網絡結構改成了網狀結構,則用戶的可選擇鏈路變為:無向圖的指定兩點間的所有路徑,學過圖論的同學都知道,數量驚人。

系統可以通過智能路由選擇任何一個最快的鏈路而不用依賴於系統部署時過時的人工規劃,無論是某些鏈路間增加了光纖或者某個 IDC 壓力過大都可以實時的反映到整理網絡中,幫助用戶實時推倒出最優鏈路。這時我們可以去掉前面的一些假設,通過機器而不是人類來時實時規劃網絡的鏈路路由,這種實時大規模的計算任務天生就不是人類的強項,我們應該交給更適合的物種。

CDN 的擴容

前面提到中國公司的出海已成大勢,CDN 海外節點的需求越來越大,遇到這種情況需要 CDN 廠商在新的區域部署新的骨幹網和邊緣節點,需要做詳細的網絡規劃。時代發生變化,原來 CDN 用戶都是企業級用戶,本身業務線的迭代周期較長,有較長時間的規劃,留給 CDN 廠商的時間也比較多。而網際網路公司講究的是速度,雙周迭代已成常態,這裡面涉及到成本和響應速度的矛盾,如果提前部署節點可以更好的為這些網際網路公司服務,但是有較高的成本壓力,反之則無法響應這些快速發展的網際網路公司。

理想情況是,用戶提出需求,CDN 廠商內部評估,當天給出反饋,當天部署,客戶當天就可以測試新區域的新節點。怎麼解決?

答案是基於網狀拓撲結構的對等網絡,在網狀拓撲結構中每個節點都是 Peer ,邏輯上每個節點提供的服務對等,不需要按區域設計複雜的網絡拓撲結構,節點上線後不需要複雜的開局過程,直接上線註冊節點信息,就可以對用戶提供服務了,結合虛擬化技術前後時間理論上可以控制在一天之內。

回歸本質:LiveNet

我們知道最早的網際網路就是網狀拓撲結構,後來才慢慢加入了骨幹網來解決各種各樣的問題,我們是時候該回歸本質,擁抱下一代 Live 分發網絡:LiveNet 。總結前面的討論,我們發現 Live 時代我們需要的內容分發網絡是:

對 Cache 的要求沒有以前那麼高

對實時性的要求非常高

對節點運維的要求高,要更智能,儘量減少人工幹預

對擴容這種運維事件響應度要求非常高

要做到如上幾點,我們需要:

去中心化,網狀拓撲

全球全網調度

節點無狀態,節點對等

智能運維

以上這些就是 LiveNet 設計時候的斟酌,讓運維更自動化,系統運行高度自治,依賴機器計算而不是人工判斷,下面分別介紹一下。

去中心,網狀拓撲

網狀拓撲結構是設計的根本和基礎,只有看清了我們對 Cache 需求的降低,網狀拓撲結構才更有優勢。

全球全網調度

基於全球一張網,不在受限於區域網絡調度,將調度的範圍從區域網絡擴展到全球,全網內的節點都可以響應用戶的請求,參與鏈路路由,不再先由人工假設選定一部分節點進行路由,去掉人工幹預,讓整個系統更智能。

節點無狀態,節點對等

LiveNet 節點無狀態和節點對等都方便了運維,去掉了區域概念後的全球一張網讓整個拓撲結構變的異常複雜,如果各個節點間有先後依賴關係,勢必讓運維成為噩夢,需要專有的服務編排系統,同時也給擴容帶來困難,需要運維人員設計複雜的擴容方案,需要預演多次才敢在複雜的網絡拓撲中擴容。當時如果節點本身對等且無狀態,則運維和擴容都變的容易很多。

但整個系統在運行過程中還是會一些狀態和數據需要保持,比如某些 Live 內容需要落地回放的需求,這些通過久經考驗的七牛雲存儲來存儲。

智能運維

智能運維建立在以上的「網狀拓撲結構的對等網絡」的基礎上會變的容易的多。可以方便的下線有問題的節點而不影響整個 LiveNet 網絡,可以方便快速的上線新節點,提升系統容量。通過節點的數據分析可以更好的了解整個網絡的整體狀態。

下面列舉部分 LiveNet 採用的智能運維方案,讓內容分發網絡再次升級,以符合 Live 時代的要求。

監控節點健康狀況,實時下線有問題的節點

Failover 機制,保證服務一直可用

快速擴容

LiveNet VS P2P

最後我們和 P2P 網絡做一個對比:

我們發現 P2P 方案,節點的可控性和鏈路的穩定性上還有很大提升空間,比較適合在實時性要求不高的場景使用、適合長尾需求,在 Live 的場景下面多是對實時性要求比較高的重度用戶,無法忍受頻繁的 FailOver 和節點質量參差不齊帶來的網絡抖動,但是如果是文件分發就比較適合用這種混合方案,可以有效降低 CDN 廠商成本,利用共享經濟提高資源利用率。

這篇介紹了推送和傳輸網絡部分,我們已經把流媒體送到了觀眾的終端中,下一步就是把它展現在屏幕上了,想了解這部分內容請繼續關注我們的下一篇內容。

【沒看過癮?直接來上免費公開課】

為了讓大家能夠將技術理論快速應用到實踐開發中,七牛雲聯合慕課網、StuQ 特別製作了一期課程,專門針對移動直播應用開發,供大家學習參考。

慕課網:

http://www.imooc.com/learn/707

StuQ :

http://www.stuq.org/course/detail/1077

點擊「閱讀原文」學習《2 小時搞定移動直播 App 開發》

相關焦點

  • 《直播技術詳解》系列之一:開篇
    隨著網際網路用戶消費內容和交互方式的升級,支撐這些內容和交互方式的基礎設施也正在悄悄發生變革。手機設備拍攝視頻能力和網絡的升級催生了大家對視頻直播領域的關注,吸引了很多網際網路創業者或者成熟企業進入該領域。
  • 直播系統源碼開發:關於安卓開發工具和obs直播推流
    尤其對於今年來說,購物直播行業的迅速發展,對直播系統源碼開發的需求進一步擴大,同時對直播源碼開發技術也有了新的要求。對於直播系統軟體來說,安卓和蘋果手機端應用十分廣泛的。OBS-Studio是一款常用的開源直播推流軟體,到今天已經有多個版本了。這裡我們對OBS的採集、編碼、傳輸流程進行簡單的梳理。
  • 抖音直播如何用OBS推流 抖音直播OBS怎麼使用
    抖音開通直播功能後,如果需要直播電腦畫面或者電腦遊戲就要用到OBS這款軟體。抖音直播如何用OBS推流?抖音直播OBS怎麼使用?一起來看看吧。
  • 從視頻直播到直播抓娃娃,全面解讀在線娃娃機方案架構
    在線抓娃娃模式的成立,背後源於近幾年日益成熟的直播連麥和物聯網技術。在線抓娃娃的本質是利用直播和物聯網技術對線下抓娃娃的場景作還原,通過攝像頭採集抓娃娃的實景畫面直播給玩家,玩家根據直播畫面來判斷機爪位置,用手機遠程操控機爪來抓取娃娃。
  • 《朗讀者》攜手央視頻打造72小時直播《一平方米》 新媒體技術保駕...
    ,將傳統制播流程和新媒體業務流程進行融合,創造新的生產流程,是央視頻在新媒體直播技術領域的一次重大突破。採用RTC實時通信技術顛覆傳統連線及信號傳輸方式。《一平方米》直播節目的主直播間設在北京,能夠同時接收到北京、武漢、廈門三地信號並進行切換,武漢與廈門由於距離原因與北京之間的數據傳輸存在低延時的要求。
  • iOS開發-音視頻開發
    當然,隨著5G技術的誕生,用在智能終端分享3D電影,遊戲或者超高畫質節目的時代已經毫無懸念的向我們走來. 想必大家也逐步了解,國內外的網際網路公司也已經布局音視頻,3D技術方面的開發者招聘和相關產品研發.目前落地推廣最普遍的就是直播類項目和小視頻類的項目.當然未來的方向肯定不止如此.
  • 視頻模擬光纖傳輸技術知識有哪些 視頻模擬光纖傳輸技術知識講解
    在本篇中主要討論模擬光纖傳輸的技術、工藝、設備類型、視頻信號的幾個重要參數名詞解釋、測試問題以及設計方案(選用設備)要考慮的安全、有效的維護保證和成本等因素。視頻模擬光纖傳輸技術知識有哪些一、光纖傳輸設備的技術和工藝傳統的模擬光端機所採用的技術有兩種:FM和AM。
  • 一套完整的直播系統開發的流程是怎麼樣的?
    直播熱潮尚未褪去,而直播系統開發究竟是如何實現的?那麼,一套完整的直播系統開發的流程是怎麼樣的?1、音視頻採集採集是播放環節中的第一環,iOS 系統因為軟硬體種類不多,硬體適配性較好,所以比較簡單。Android 則不同,市面上硬體機型非常多,難以做到一個庫適配所有硬體。2、音視頻處理美顏系統是現在直播系統中所必需的一項。
  • 音視頻技術開發周刊
    每周一期,縱覽音視頻技術領域的乾貨和新聞投稿:contribute@livevideostack.com。 活動推薦 一切為了高清——金山雲魔鏡平臺助推5G高清應用 5G時代是超高清的時代,然而,冰凍三尺非一日之寒,在超高清視頻直播點播等業務研發過程中,總會遇到很多令人抓狂的難題。
  • 索尼宣布 360 臨場音效技術升級版:新增視頻流傳輸空間音頻技術
    IT之家1月10日消息 索尼近日宣布推出360臨場音頻生態系統的升級版,新增視頻流式傳輸能力以及內容創建工具。通過這些努力,索尼將繼續擴展360臨場音效技術。索尼將首次視頻流直播 360°音頻索尼音樂旗下的藝術家 Zara Larsson 將於北京時間1月12日早6:00直播360臨場音效表演,觀看者可以通過 Artist Connection App 在手機觀看。
  • 為了互動直播,如何讓直播技術實現低延遲?
    ,音視頻雲服務技術專家,專注連麥互動直播技術應用研究。那麼,直播技術如何實現低延遲呢? 請允許我根據即構科技直播技術的經驗,和各位分享一下如何實現低延遲。 即構科技的連麥互動直播技術,連麥方的延遲400毫秒,觀看方的延遲1秒左右。目前映客直播,花椒直播,一直播和慄子直播都採用了即構科技的連麥互動直播技術。因此,這個直播技術經驗是經過市場驗證的,是從實操中得來的,而不是單憑理論分析得到的。
  • 中國聯通5G超高清直播開啟智慧視頻新時代
    通過中國聯通獨家提供的5G+4K超高清直播技術,國家大劇院「冬日之約」系列線上演出首場民樂音樂會進入千家萬戶,在這場雲上約會中,音樂現場盡在耳邊眼前。  十一黃金周期間,「宅家遊景區」成了休閒度假的新選擇。在珠峰之巔遠眺綿延雪山,在南海之淵感受蔚藍波濤,在青藏高原仰望中秋明月……通過中國聯通自研的5Glive超高清直播平臺和智慧文旅服務,天涯海角觸手可及。
  • HDMI高清視頻編碼器快速入門
    RUN/SIGNAL/POWER 指示燈05 選擇視頻/音頻信號源在Web管理界面上選擇「視頻/音頻調節」功能的「視頻源選擇和調節」與「音頻源和音量調節」子功能,可以通過軟體配置視頻與音頻的信號源選擇。
  • 淺談視頻傳輸電纜的選擇與技術應用
    淺談視頻傳輸電纜的選擇與技術應用1、電纜的類型電纜由於應用在很多不同的環境,以致在外形上看起來由很大的區別。但不論任何的電纜類型,都是作為信號傳輸的一種導體。這些不同類型的電纜,在傳輸不同信號的質量表現也有區別,除了部分特殊的應用,目前應用於音視頻傳輸的電纜大致以單根導線、雙絞線、同軸線和光纖為主。
  • 集和誠科技的KAGO系列邊緣控制器詳解
    打開APP 集和誠科技的KAGO系列邊緣控制器詳解 集和誠科技 發表於 2020-08-30 09:38:14 不管是因為雲計算本身,還是網絡傳輸受限,或者是擔心數據安全,邊緣計算是時下構建智能化工廠過程中必須優先考慮的內容之一。雖然這是基於PC的控制器,但邊緣控制器也不等同於單獨的工業控制計算機,它將PLC、PC和運動控制器集成到同一臺設備裡,兼具數據處理和邏輯控制,兩種任務可以同時進行,又互不幹擾。
  • 一場流星雨,視頻號直播首次突破100萬人觀看
    「加我微信的很多,還有通過視頻號私信的,已經炸了,私信的我根本就看不完。」一夜醒來,整個朋友圈都在轉發李政霖視頻號直播流星雨片段,李政霖火了,一場直播引來100多萬人集體許願。直播間裡留言許願、添加李政霖微信,甚至有無數網友直接把願望私信給李政霖視頻號帳號。
  • 一場流星雨,讓視頻號直播首次突破100萬人觀看
    在視頻號直播之前,李政霖團隊已經憑藉熱愛解決了生存問題。工作室營收來源主要來自影視製作,包括各種微電影、宣傳片拍攝,汽車TVC等等。觀看以及拍攝流星雨屬於不帶商業目的的熱愛。李政霖稱,他們觀看流星雨也不是一兩年了,團隊每年都會架很多機位去拍。今年第一次選擇直播,推流直播,選擇了視頻號。
  • 抖音直播遊戲需要什麼軟體 好用的遊戲直播軟體推薦
    ,直播遊戲,把愛好變成職業,那麼抖音直播遊戲用什麼軟體,接下來小編給大家帶來好用的遊戲直播軟體推薦,一起來看看吧。 抖音直播火了,有很多小夥伴想在抖音開直播,直播遊戲,把愛好變成職業,那麼抖音直播遊戲用什麼軟體,接下來小編給大家帶來好用的遊戲直播軟體推薦
  • 零基礎入門:實時音視頻技術基礎知識全面盤點
    本人在學習音視頻開發的過程中,深刻體會到了由於知識的分散、過渡斷層帶來的種種困惑和痛苦,因此希望通過自己的理解,可以把音視頻開發相關的知識總結出來,並形成系列文章,循序漸進,剖析各個環節,一則對自己所學做一個總結和鞏固,二則希望可以幫助想入門音視頻開發的開發者小夥伴們。本文是作者自已根據入門實時音視頻的親身經歷,對於基礎知識點的認知總結。