如何優雅地在雲上“擺攤”——做直播帶貨,你不得不關注的技術

最近,國家政策開始鼓勵“地攤經濟”,一時間各家企業平臺紛紛推出地攤扶持政策,地攤概念股順勢大漲,地攤生態及配套商品也開始走俏,甚至在網絡上也湧現出各種“新攤主速成攻略”,萬億的煙火經濟儼然已經走上風口。
在這裏插入圖片描述

實際上,早就有人已經在網上“擺地攤”了,那就是直播帶貨!受到疫情的影響,線下實體紛紛停擺,直播帶貨受到了前所未有的追捧,企業們紛紛選擇通過直播的形式,來提升品牌形象、保持與用戶的互動並完成商品的銷售。

那麼問題就來了,在搭建直播平臺或者應用的過程中,都需要關注哪些技術呢?CDN又對直播起到什麼作用呢?

一個直播系統都包括什麼?
通常整個直播的系統可能包括:推流端經過一次邊緣節點的加速,將視頻直播流推到直播中心,在直播中心完成一系列轉碼、截圖、錄製、水印等處理,然後視頻流再經過CDN分發,分發到不同的播放端,播放端有不同的SDK進行秒開、弱網等優化動作。

直播系統中的推流與播放
對於視頻直播來講,最重要的兩個環節,一個是推流,一個是播放。推流一般採用RTMP協議,常用的推流端包括OBS、手機APP、FFmpeg等。播放除了採用RTMP協議,還可以採用HTTP FLV和HLS協議,RTMP和HTTP FLV是流式傳輸,HLS是文件加速傳輸,常見的播放端包括:Flash / VLC / HTML5 / 手機App等等。對於阿里雲直播系統來講,大部分直播分發都是通過流式傳輸完成的,只有一少部分量是使用文件加速分發完成的。
**CDN百科4-2.png**
流式分發與CDN直播系統
其實在直播場景中,不管是推流還是播放,流式分發都是長連接的,一場直播可能5個小時,推流在這5小時內不會中斷。對於播放器來講,服務器端獲取到的是一幀一幀的音視頻數據,不管是什麼傳輸協議,都是採用FLV tag來封裝。每一幀音頻或者視頻,都會有一個時間戳的屬性。

視頻直播流會傳輸音頻幀和視頻幀,對於音頻幀來講,它每一幀都可以獨立解碼,播放器從服務器獲取到任何一幀音頻幀之後,都可以獨立渲染,聽到聲音。而視頻分爲視頻關鍵幀和非關鍵幀,關鍵幀可以獨立解碼渲染,播放器拿到後可以直接看到畫面,一般10K以上甚至幾十K;其他非關鍵幀解碼依賴於前面的一些視頻幀,播放器會根據前面的幀和這一幀來解碼產生畫面,非關鍵幀一般大小是幾K甚至不到1K。對於播放器來說,服務器一般會從視頻關鍵幀開始發送,這樣纔不會產生花屏。

對於節點上直播服務器存儲的內容,如果是文件加速,節點上存儲的內容很明確,就是文件數據, URL不變的話文件數據內容也不變。但是對於直播來講,傳輸的就是幀數據,緩存的也是不斷變化的幀序列數據。
下面的圖裏可以看到,當前的服務器緩存了V1-V3五幀數據,當V4這個關鍵幀出現了,服務器把之前的丟掉,開始緩存V4開始的音視頻數據,以這個策略保證過來的播放端都是當前最新的數據。一般直播服務器都是用這個策略來進行服務器緩存的。
CDN百科4-3.png

直播平臺面臨的挑戰?
1、 前面也說了,直播系統包含推流、轉碼、分發、播放等各個環境,經歷了冗長複雜的網絡環境,尤其是當業務場景逐漸豐富起來之後,功能需求也越來越多
2、 一些關鍵指標的提升,比如:卡頓率、打開速度、流暢度、回源率等,任何指標的下降都可能會導致整個應用的用戶體驗下降,影響直播效果
3、 直播平臺經常會面臨業務突發,數十萬甚至數百萬用戶的同時在線,對服務器和帶寬考驗十分巨大

直播平臺爲什麼要使用CDN?
1、減少卡頓率,提升用戶體驗
直播,尤其是電商直播,對網絡抖動十分敏感,稍有問題就會出現卡頓、花屏等問題,嚴重影響用戶體驗,甚至直接掉線影響銷售。CDN藉助負載均衡系統能夠將內容推送到接近用戶的邊緣節點,使得用戶就近取得資源,可以大大提升訪問效率。

2、業務峯值來臨的時候,爲流量高峯護航
在確保直播流暢度上,全球覆蓋的CDN節點和精準調度系統缺一不可。CDN節點是採用分佈式架構,節點資源與帶寬儲備就代表了能夠覆蓋的用戶的量級和廣度。當突發峯值特別高的時候,CDN系統會確保用更精準的調度策略,比如DNS、IP調度,來降低對直播的影響。打比方有一個裝了很多冰塊和水的杯子,如果我們要把杯子裏面的狹小空間全部用上,我們先要把冰塊放進去,再倒液態水。在智能調度的場景裏,把“固體”和“液體”結合起來考慮,才能做到所有的節點、水位的精準控制,實現更精準的調度。

所以,選擇節點和帶寬資源覆蓋廣泛,綜合實力強,質量有保證,具備大型項目最佳實踐的CDN服務提供商對直播帶貨平臺來說至關重要。想要在雲上開啓“地攤經濟”,阿里雲CDN,瞭解一下~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章