直播延時是直播APP最大的痛點,不管是教育直播、娛樂直播還是遊戲直播,很多客戶第一次做直播系統,就會疑惑,如何能降低直播延時,甚至達到0延時,那麼我們這裡會慢慢給大家解答你們心中的疑惑。
直播為什麼會延時
直播為什麼會延時,其實是因為網宿、快網、七牛、高升、藍汛、觀止雲、騰訊雲、百度雲、阿里雲等市場上主流的直播商家都是使用的CDN技術,而延時其實也是CDN直播技術的難點之一。
我們來看看使用CDN技術的直播流程:
主播客戶端,將本地採集的視頻推送到CDN;CDN對視頻流進行緩存以及轉發;觀眾客戶端,拉取CDN中緩存視頻流進行播放;
可以看到CDN在這裡起到了關鍵的作用,CDN的全稱為Content Delivery Network,即內容分發網絡,是一個策略性部署的整體系統,主要用來解決由於網絡帶寬小、用戶訪問量大、網點分布不均勻等導致用戶訪問網站速度慢的問題。
針對視頻佔用帶寬較大,與普通的Web服務差別較大的問題,CDN技術能完美地實現網絡擁塞減少,訪問延遲降低,帶寬得到良好的控制等等功能。
但是CDN技術也不是完美的,它最大的難點就是播放延時,播放延時也分為幾種情況:
網絡延時網絡延時主要指的是從主播端採集,到觀眾端播放,之間的時間差。一般不考慮主播段採集對視頻進行編碼的時間,以及觀眾端觀看對視頻進行解碼的時間,僅考慮網絡傳輸中的延時。
在節點較少、網絡情況較好的情況下,網絡延時對應也是最小,加上一定的緩存,市場一般的公司可以控制延時在1s~2s左右。但是節點多、網絡差的情況下,網絡延時會對應增大,經驗來說延時可以達到3s以上。
網絡抖動網絡抖動,是指數據包的到達順序、間隔和發出時不一致。比如說,發送100個數據包,每個包間隔1s發出。結果第27個包在傳輸過程中遇到網絡擁塞,造成包27不是緊跟著26到達的,而是延遲到87後面才達。在直播中,這種抖動的效果實際上跟丟包是一樣的。因為你不能依照接收順序把內容播放出來,否則會造成失真。
網絡丟包CDN直播中用到的RTMP、HLS、HTTP FLV等協議都是在TCP的基礎之上。TCP在傳輸過程中有3次握手。首先客戶端會向服務端發送連接請求,服務端同意後,客戶端會確認這次連接。這就是3次握手。接著,客戶端就開始發送數據,每次發送一批數據,得到服務端的「收到」確認後,繼續發送下一批。TCP為了保證傳到,會有自動重傳機制。如果傳輸中發生了丟包,沒有收到對端發出的「收到」信號,那麼就會自動重傳丟失的包,一直到超時。
科大未來團隊的解決方案
科大未來解決直播延時的方法就是拋棄傳統的基於TCP協議的方案,從底層協議和布網上開始,使用基於UDP協議的方案,也就是SD-RTN(Software-Defined Real Time Net work)。
SD-RTN是一種新型的專為內容實時傳輸而設計,基於UDP協議的網絡架構。SD-RTN通過在網際網路上不同地區的數據中心放置軟體組網單元,相互連接互相調度,在現有的公共網際網路基礎上構建一層新的虛擬網絡。能夠實時根據各節點的連接、傳輸狀況、負載狀況、到用戶的距離和響應時間,自動分配最優最通暢的傳輸路徑,達到實時傳輸需要的質量保障級別。
SD-RTN的優勢如下:
時延大大縮短。直播延時可從基於TCP的方案的數秒,降低到數百毫秒。這一延遲範圍,屬於實時通信或準實時通信延遲的範疇。在這一級別上,主播和觀眾可以基本重現在現場活動中的交互體驗,從而大大釋放了內容製作者的潛力,也為業務運營者創造新業務形式打開了無限的空間和可能;抗丟包能力強。一般來說,SD-RTN中可以針對用戶網絡使用更多的策略模型和技術,這樣在30%丟包時,依然能夠進行正常直播。而基於TCP的直播方案在丟包2%時就明顯卡頓,達到30%經常已斷開連接,無法進行直播。科大未來在直播app製作中使用上文中提到的SD-RTN方案,可以使其延遲降低,主播和觀眾可以實現音頻實時交互,並且可以很好的解決多路RTMP、P2P連麥、伺服器端合圖這幾種方案的弱勢,合圖布局等都可以很好的在客戶端上進行控制。