CDN百科第四講 | 如何優雅地在雲上“擺攤”——做直播帶貨,你不得不關注的技術
最近,國家政策開始鼓勵“地攤經濟”,一時間各家企業平臺紛紛推出地攤扶持政策,地攤概念股順勢大漲,地攤生態及配套商品也開始走俏,甚至在網路上也湧現出各種“新攤主速成攻略”,萬億地攤經濟儼然已經走上風口。
實際上,早就有人已經在網上“擺地攤”了,那就是直播帶貨!受到疫情的影響,線下實體紛紛停擺,直播帶貨受到了前所未有的追捧,企業們紛紛選擇透過直播的形式,來提升品牌形象、保持與使用者的互動並完成商品的銷售。
那麼問題就來了,在搭建直播平臺或者應用的過程中,都需要關注哪些技術呢?CDN又對直播起到什麼作用呢?
一個直播系統都包括什麼?
通常整個直播的系統可能包括:推流端經過一次邊緣節點的加速,將影片直播流推到直播中心,在直播中心完成一系列轉碼、截圖、錄製、水印等處理,然後影片流再經過CDN分發,分發到不同的播放端,播放端有不同的SDK進行秒開、弱網等最佳化動作。
直播系統中的推流與播放
對於影片直播來講,最重要的兩個環節,一個是推流,一個是播放。推流一般採用RTMP協議,常用的推流端包括OBS、手機APP、FFmpeg等。播放除了採用RTMP協議,還可以採用HTTP FLV和HLS協議,RTMP和HTTP FLV是流式傳輸,HLS是檔案加速傳輸,常見的播放端包括:Flash / VLC / HTML5 / 手機App等等。對於阿里雲直播系統來講,大部分直播分發都是透過流式傳輸完成的,只有一少部分量是使用檔案加速分發完成的。
流式分發與CDN直播系統
其實在直播場景中,不管是推流還是播放,流式分發都是長連線的,一場直播可能5個小時,推流在這5小時內不會中斷。對於播放器來講,伺服器端獲取到的是一幀一幀的音影片資料,不管是什麼傳輸協議,都是採用FLV tag來封裝。每一幀音訊或者影片,都會有一個時間戳的屬性。
影片直播流會傳輸音訊幀和影片幀,對於音訊幀來講,它每一幀都可以獨立解碼,播放器從伺服器獲取到任何一幀音訊幀之後,都可以獨立渲染,聽到聲音。而影片分為影片關鍵幀和非關鍵幀,關鍵幀可以獨立解碼渲染,播放器拿到後可以直接看到畫面,一般10K以上甚至幾十K;其他非關鍵幀解碼依賴於前面的一些影片幀,播放器會根據前面的幀和這一幀來解碼產生畫面,非關鍵幀一般大小是幾K甚至不到1K。對於播放器來說,伺服器一般會從影片關鍵幀開始傳送,這樣才不會產生破圖。
對於節點上直播伺服器儲存的內容,如果是檔案加速,節點上儲存的內容很明確,就是檔案資料, URL不變的話檔案資料內容也不變。但是對於直播來講,傳輸的就是幀資料,快取的也是不斷變化的幀序列資料。
下面的圖裡可以看到,當前的伺服器快取了V1-V3五幀資料,當V4這個關鍵幀出現了,伺服器把之前的丟掉,開始快取V4開始的音影片資料,以這個策略保證過來的播放端都是當前最新的資料。一般直播伺服器都是用這個策略來進行伺服器快取的。
直播平臺面臨的挑戰?
1、 前面也說了,直播系統包含推流、轉碼、分發、播放等各個環境,經歷了冗長複雜的網路環境,尤其是當業務場景逐漸豐富起來之後,功能需求也越來越多
2、 一些關鍵指標的提升,比如:卡頓率、開啟速度、流暢度、回源率等,任何指標的下降都可能會導致整個應用的使用者體驗下降,影響直播效果
3、 直播平臺經常會面臨業務突發,數十萬甚至數百萬使用者的同時線上,對伺服器和頻寬考驗十分巨大
直播平臺為什麼要使用CDN?
1、減少卡頓率,提升使用者體驗
直播,尤其是電商直播,對網路抖動十分敏感,稍有問題就會出現卡頓、破圖等問題,嚴重影響使用者體驗,甚至直接掉線影響銷售。CDN藉助負載均衡系統能夠將內容推送到接近使用者的邊緣節點,使得使用者就近取得資源,可以大大提升訪問效率。
2、業務峰值來臨的時候,為流量高峰護航
在確保直播流暢度上,全球覆蓋的CDN節點和精準排程系統缺一不可。CDN節點是採用分散式架構,節點資源與頻寬儲備就代表了能夠覆蓋的使用者的量級和廣度。當突發峰值特別高的時候,CDN系統會確保用更精準的排程策略,比如DNS、IP排程,來降低對直播的影響。打比方有一個裝了很多冰塊和水的杯子,如果我們要把杯子裡面的狹小空間全部用上,我們先要把冰塊放進去,再倒液態水。在智慧排程的場景裡,把“固體”和“液體”結合起來考慮,才能做到所有的節點、水位的精準控制,實現更精準的排程。
所以,選擇節點和頻寬資源覆蓋廣泛,綜合實力強,質量有保證,具備大型專案最佳實踐的CDN服務提供商對直播帶貨平臺來說至關重要。想要在雲上開啟“地攤經濟”,阿里雲CDN,瞭解一下:全速重構年中大促中,CDN/全站加速、影片直播、影片點播等多款產品都推出限時折扣,可以登入阿里雲官網瞭解詳情。
點選回顧CDN百科第一講,最近你的APP崩了嗎?
http://blog.itpub.net/31490631/viewspace-2691214/
點選回顧CDN百科第二講,假如沒用CDN,網路世界會變成什麼樣?
http://blog.itpub.net/31490631/viewspace-2691414/
CDN百科第三講,如果用了雲伺服器,還需要做CDN加速嗎?
http://blog.itpub.net/31490631/viewspace-2696381/
【CDN百科】專欄中,我們會不斷科普CDN知識,解讀CDN實踐,分享CDN案例,如果你也關注CDN、使用CDN,請留言回覆你關心的話題哦~
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31490631/viewspace-2698364/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 技術分享 | 如何優雅地在 Windows 上從 MySQL 5.6 升級到 5.7WindowsMySql
- 一文帶你搞懂 CDN 的技術原理
- 【技術乾貨】聽阿里雲CDN安防技術專家金九講SystemTap使用技巧阿里
- 在Java中如何優雅地判空Java
- 【技術乾貨】聽阿里雲CDN安防技術專家金九講tengine+lua開發阿里
- 「優秀庫推薦」ppt-cli 讓你優雅地做 ppt
- 直播帶貨app原始碼,關於流媒體技術的那些事APP原始碼
- 如何優雅地使用 macOSMac
- 如何優雅地使用 GitGit
- 關注******技術
- 如何優雅地在React專案中使用ReduxReactRedux
- CDN百科第三講 | 如果用了雲伺服器,還需要做CDN加速嗎?伺服器
- 如何優雅地提取 App 的素材APP
- Gifto(GTO)關注區塊鏈技術在法律層面的優勢區塊鏈
- CDN百科 | 你的APP崩過嗎?APP
- Git | 如何優♂雅地管理版本Git
- 如何優雅地黑C++?C++
- 帶貨直播原始碼,淺談直播實現過程和技術原始碼
- 在直播帶貨平臺開發風口下,我們應該如何做?
- 技術泥潭,你不得不防!
- 直播CDN排程技術關鍵挑戰與架構設計架構
- 如何優雅地取消Retrofit請求?
- Swift:如何優雅地使用 print()(三)Swift
- 如何優雅地尋找質數?——碼小會Python案例講解Python
- 技術架構的關注點架構
- 雲集技術學社|帶你瞭解DevOps技術原理dev
- CDN百科第七期 | 關於CDN的原理、術語和應用場景那些事
- 如何優雅地列印一個Java物件?Java物件
- 面試時如何優雅地自我介紹?面試
- 如何優雅地定位外網問題?
- 如何更優雅地切換 Git 分支Git
- Kotlin如何優雅地使用Scope FunctionsKotlinFunction
- 如何優雅地記錄操作日誌?
- 如何優雅地處理前端異常?前端
- 如何優雅地改善程式中for迴圈
- 如何優雅地生成測試資料
- 如何優雅地記錄操作日誌
- 乾貨 |如何優雅的在手機上進行Python程式設計Python程式設計