1. 程式人生 > >網心科技李浩:如何快速搭建超火爆的直播系統

網心科技李浩:如何快速搭建超火爆的直播系統

在國內錯綜複雜的網路情況下,如何構建一個高併發、穩定、低延時的直播系統?在12月21日,網心科技直播技術負責人李浩做客CSDN網路公開課,為數百名技術人員現場解答關於直播系統搭建方面的一系列問題。

李浩總結,要搭建一個能夠為使用者穩定提供優秀觀看體驗的直播系統,一定要注意三大關鍵指標,即卡頓、延時和首屏開啟速度。而針對目前如火如荼的直播市場,李浩認為,無論內容和運營手段如何花樣翻新,如果沒有核心技術作為保障,不能保證這三大指標的合格,直播平臺依然很難取得市場競爭的勝利。

以下為李浩的課程內容整理:

一.不同直播業態對應不同的技術要求

直播平臺細分為各種不同的業態。目前主流的幾種業態,分別是秀場類、遊戲類、生活類這三種直播。此外事件類、互動類、教育類、監控類直播這幾種業態也較為常見。

儘管這些業態裡基本上都有10億級獨角獸公司產生,但每一種業態對系統的核心要求卻是完全不一樣的:

  • 秀場和生活類直播:主播和觀眾網路環境相對更復雜,因此核心體驗是流暢度,可以犧牲位元速率來提高流暢度,自適應位元速率、幀率等都是常見的優化手段;
  • 遊戲類直播:為了保證體驗效果,要求的是高清晰度和高流暢度,端到端延時可以做出一些讓步來換取壓縮率更高的編碼引數,容納更高幀率和清晰度的內容;
  • 事件類直播:核心要求是穩定性,包括高可靠上行;
  • 互動類直播:核心要求則是端到端的延時,為此網路波動時丟棄視訊幀等是可以接受的。

因此需要注意不同的業務形態,後端所用的技術是完全不一樣的。如互動類的直播的超低延時方案,4K和VR這種對使用者頻寬滿載利用率的直播場景,通用CDN技術可能無法做到覆蓋。

儘管如此,李浩還是認為現在搭建一個直播系統要遠比之前來的容易,因為大量工作已經被CDN和終端服務商幫忙解決了,需要自己動手的地方少了很多。

二.直播系統的核心業務需求

那麼搭建直播系統時,需要重點關注的核心功能都有哪些?李浩對此一一進行了解析。

A.採集和播放
目前視訊的採集已經相對容易許多,因為手機功能相對完整,不像PC時代需要面對不同的攝像頭驅動,所以需要核心處理的技術點是網路適配。技術人員需要根據自身的網路條件去調整編碼引數,以及多協議的拉流、軟硬體的解碼、多解析度追幀等基礎需求。如果在此基礎之上,還能解決好對快取的管理、資料同步等高階需求的話,那直播的整體播放體驗就比較流暢了。

B.分發和媒體處理


分發和媒體處理的工作,現在除了“特別特別大”的平臺,一般都直接由CDN服務商來解決了。因為目前CDN服務已比較完善,跟直播匹配的一些功能,如上下線通知、協議轉換、弱網傳輸,以及像轉碼、水印、增益、截圖、錄製這樣的功能都已提供。

C.功能系統
需要直播平臺自身核心打造的,是功能系統。除去賬戶系統,還有如人氣、道具、打賞、支付、抽獎等功能系統都是必備的。特別是彈幕功能,是對直播平臺最核心的技術挑戰。主要是彈幕的傳送量會很大,直播線上人數動輒幾十萬,彈幕的傳送頻率又很高,1、2秒就會發一條訊息,巨大的廣播量對系統壓力很大。所以一般直播平臺都會採取分割槽的方式來加以解決,而如何分割槽,又在什麼情況下合併分割槽,以維持合適的人氣,這裡面還是有很多邏輯上的問題是要去解決的。

D.運營系統
運營系統也非常核心。視訊的黃反審查,聊天內容的稽核,還有一鍵斷播、資料統計、質量監控這些都必不可少,因為一要面對內容監管審查的壓力,其次是要能監測到全國不同區域的質量效果。

不過李浩指出,即便是把上述功能都實現了,也只能說搭建出一個基本可以跑的一個直播產品而已,需要提升的地方還很多。

三.直播的關鍵性技術知識

接下來,李浩對直播的一些關鍵性知識進行了詳細的解釋:

A.視訊幀

視訊幀其實就是一個一個的視訊單元,視訊單元分成三種,分別叫I、P、B幀。I幀可以簡單的理解為就是一張圖片,體積也會比較大,B幀和P幀它是一個參考幀。對一個直播流來說,最核心的幀是I幀,由I幀引申出來的就叫GOP。通常在直播上看到的延時,其實是內部直播流快取延時,叫GOP cache。對於一個CDN系統來說,傳輸延時只是延時的一小部分,還有一部分是產生在使用者流裡面的GOP cache。所以直播平臺如果要降低延時,首先建議調一下上行流的編碼引數,調低I幀間隔。

圖片描述

B.位元速率

位元速率也分三種,CBR、VBR、ABR。CBR是固定位元速率,可用於保證網路專線頻寬是可控的場景。VBR是可變位元速率,它不好的地方在於,畫面變化劇烈,它的位元速率跳變會特別大。所以在直播的實際應用中,ABR用的最多,即在質量和位元速率上做一個均分,控制一個平均值。

C.編碼、封裝、傳輸

封裝的功能相當於一個桶,它可以把不同編碼格式的音視訊裝在一起,好的封裝格式是能相容很多種的音視訊的編碼格式的。編碼的功能是把原始資料壓縮的更小,像視訊編碼這種原始資訊量大的,目前的編碼方式已經把資訊冗餘度做的很低,如果出現丟幀,會導致視訊的花屏。

李浩提醒直播技術人員,一定要了解這些基礎知識,否則你很難理解直播的延遲產生在哪,以及為什麼會發生卡頓。

四.直播的系統架構

圖片描述

對一個直播平臺來說,主播就相當於是一個數據源,各地不同的觀眾相當於是訂閱者,其實就是生產者和訂閱者模型。怎麼樣把這個生產者生產的資訊,比較高效的送到訂閱者手上,其實就是一個應用層的組播結構,需要做很多應用層層面的一些考量,比如中轉跳數、網路距離、中轉頻寬成本和匯聚效果等。

推流模式就是主播直接把流推到CDN節點,CDN節點經過自己的網頁加速,分發到真正觀看的使用者。直播所有的功能,像轉碼水印,轉存截圖、轉點播,所有的這種功能,包括資料統計對外提供一些API,都會在CDN裡面做。

一家直播廠商可能會選用多家CDN,或者是有自建的CDN。每個CDN最核心的一點,是怎麼在國內這種錯綜複雜這個網路環境內,去組一張分發比較快速、容災效能比較強,然後相對節省成本的一張虛擬網。

所以在整個CDN裡面,最核心的就是傳輸組網,其次是在於功能系統的健壯。一個CDN、一個直播系統做的好壞,成敗其實一部分在於傳輸的順暢,另外一部分在於你是否穩健。

五.直播的三大核心指標

雖然直播對技術的要求錯綜複雜,但李浩還是表示,直播的關鍵的指標其實只有三個:卡頓、延時、首屏開啟速度。做好這三大關鍵指標,直播的使用者體驗就有了保證。

A.卡頓

卡頓的解決與延時則在一定程度上是矛盾的。卡頓產生的原因有三種,第一是主播上行卡頓,所有的觀眾都會卡;第二是CDN內部網路帶來的卡頓,例如中轉網路產生了波動,節點負載沒控制好,或者是一些組網策略出問題,第三就是被排程和終端網路問題,好比DSN錯配、或者最後一跳網路抖動。要有監控手動能發現主要問題點針對性處理。

B.延時

除了前面說的視訊GOP快取,其次延遲主要來自累積,除了做跳幀等邏輯以外,還可以通過改變傳輸協議的方法來提高,對於延時控制要求高的直播業務,如互動類直播,根本不會採用TCP這樣的協議來做傳輸,而會選擇UDP協議。因為對於這種直播來說,視訊的所有資料都可以放棄,但要優先保證音訊的即時性。

C.首屏開啟速度

首屏開啟則考驗的是直播CDN的組網方式、網路覆蓋率和傳輸協議的優化程度。李浩特別提醒說,今年對首屏開啟速度的要求越來越高,秒開已經是去年的指標要求,今年要細化到幾百毫秒,做不到這個級別就沒有競爭優勢。在這一點上,選擇一個靠譜的CDN就尤為重要了。

李浩簡介:

李浩,網心科技視訊直播技術負責人,2015年加入網心科技,負責星域CDN直播平臺的構建,並獲得多項創新專利。曾任騰訊高階工程師,負責騰訊雲的遊戲和移動的技術解決方案研發,期間主導過騰訊大資料多維實時分析、信鴿移動推送、騰訊雲移動加速等專案。