欧美色图 亚洲|野外口爆视频国产|久久精品视频观看|97精品人人抽插

阿里云CDN直播架構(gòu)與雙11晚會(huì)直播實(shí)戰(zhàn)

2017-12-28 09:36:22 來源:CSDN 熱度:
分享人:阿里云CDN直播 高級(jí)技術(shù)專家 闕寒分享內(nèi)容:雙11直播活動(dòng)是眾多直播活動(dòng)中非常典型的場景,離不開直播本身這個(gè)話題。所以今天的分享會(huì)從直播概述、直播架構(gòu)、業(yè)務(wù)功能、直播監(jiān)控、雙11這幾個(gè)方面來進(jìn)行。
 
分享人:阿里云CDN直播 高級(jí)技術(shù)專家 闕寒
 
分享內(nèi)容:雙11直播活動(dòng)是眾多直播活動(dòng)中非常典型的場景,離不開直播本身這個(gè)話題。所以今天的分享會(huì)從直播概述、直播架構(gòu)、業(yè)務(wù)功能、直播監(jiān)控、雙11這幾個(gè)方面來進(jìn)行。
 
每年雙11購物節(jié),有兩塊壓力是最大的,第一塊是支付寶交易,第二塊就是CDN。那么CDN技術(shù)到底是什么呢?
 
舉個(gè)簡單例子,不管你的在電腦淘寶上還是手機(jī)APP上買東西,進(jìn)入商品詳情頁,你會(huì)看到很多圖片,有的商家為了更好的宣傳,會(huì)上傳視頻,讓你看得更形象。當(dāng)商家把圖片和視頻上傳到服務(wù)器時(shí),一般是阿里巴巴的主站機(jī)房,存儲(chǔ)在杭州。但是看這個(gè)商品詳情的人,可能來自遙遠(yuǎn)的東北或海南,如果他們直接訪問杭州機(jī)房,那這個(gè)鏈路會(huì)非常長,還存在跨運(yùn)營商的問題,體驗(yàn)會(huì)很差,表現(xiàn)出來就是圖片刷不出來等問題。通過CDN技術(shù),可以把這些在杭州機(jī)房的圖片、視頻等靜態(tài)文件分發(fā)到全國各地的幾百個(gè)機(jī)房內(nèi),這樣,北京用戶在看產(chǎn)品詳情的時(shí)候,直接訪問北京的機(jī)房,而且是網(wǎng)內(nèi)覆蓋(電信用戶訪問電信機(jī)房),這樣就能就近、快速獲取數(shù)據(jù)。而且,對(duì)于一個(gè)商品詳情頁的構(gòu)成,數(shù)據(jù)量最大的就是圖片和視頻,其他文本幾乎可以忽略不計(jì),對(duì)于圖片和視頻的內(nèi)容分發(fā)極速可以保障用戶的體驗(yàn)更加順暢。
 
視頻直播概述
 
直播大約是從2014年左右興起,以映客、斗魚、熊貓TV、戰(zhàn)旗TV這些直播平臺(tái)為代表。其實(shí)主要有兩種場景,一種是手機(jī)直播,一種是游戲直播。手機(jī)直播推流端和播放端都是各平臺(tái)自己開發(fā)的手機(jī)APP,而游戲直播是使用開源的OBS去推流完成上傳,播放大多是通過網(wǎng)頁播放器完成播放。
 
視頻直播和點(diǎn)播的相同點(diǎn)與不同點(diǎn)
 
其實(shí)對(duì)于播放器來說,不管是視頻直播還是點(diǎn)播,行為都是一致的:和服務(wù)器建立連接以后,不停的讀取音視頻文件,然后完成渲染。從這里來看,視頻點(diǎn)播和直播的區(qū)別不大。而它們的主要區(qū)別就是點(diǎn)播可以快進(jìn)、后退進(jìn)行觀看,也可以在任意時(shí)間播放,而直播不能快進(jìn),也只能在固定的時(shí)間點(diǎn)播放。
 
阿里云直播全景解決方案
 
推流端經(jīng)過一次邊緣節(jié)點(diǎn)的加速,將視頻直播流推到直播中心,在直播中心完成一系列轉(zhuǎn)碼、截圖、錄制、水印等處理,然后視頻流再經(jīng)過CDN分發(fā),分發(fā)到不同的播放端,播放端有不同的SDK進(jìn)行秒開、弱網(wǎng)等優(yōu)化動(dòng)作。
 
直播服務(wù)的特點(diǎn)——直播系統(tǒng)中的推流與播放
 
對(duì)于視頻直播來講,最重要的兩個(gè)環(huán)節(jié),一個(gè)是推流,一個(gè)是播放。推流一般采用RTMP協(xié)議,常用的推流端包括OBS、手機(jī)APP、FFmpeg等。播放除了采用RTMP協(xié)議,還可以采用HTTP FLV和HLS協(xié)議,RTMP和HTTP FLV是流式傳輸,HLS是文件加速傳輸,常見的播放端包括:Flash / VLC / HTML5 / 手機(jī)App等等。對(duì)于阿里云直播系統(tǒng)來講,大部分直播分發(fā)都是通過流式傳輸完成的,只有一少部分量是使用文件加速分發(fā)完成的。
 
直播服務(wù)的特點(diǎn)——詳解流式分發(fā)與CDN直播系統(tǒng)
 
我們再詳細(xì)看下流式分發(fā)。其實(shí)在直播場景中,不管是推流還是播放,流式分發(fā)都是長連接的,一場直播可能2個(gè)小時(shí),推流在這2小時(shí)內(nèi)不會(huì)中斷。對(duì)于播放器來講,服務(wù)器端獲取到的是一幀一幀的音視頻數(shù)據(jù),不管是什么傳輸協(xié)議,都是采用FLV tag來封裝。每一幀音頻或者視頻,都會(huì)有一個(gè)時(shí)間戳的屬性。
 
下面這張圖列了一下推流和播放端、服務(wù)器之間的關(guān)系。我們可以定義推流和播放關(guān)系為發(fā)布與訂閱關(guān)系。
 
對(duì)于左側(cè)的服務(wù)器A來講,有兩路流。第一路流中,主播直接推流到A服務(wù)器上(發(fā)布),然后這路流有兩個(gè)播放端,也就是兩個(gè)訂閱者。而第二路流,這路流有三個(gè)訂閱者,發(fā)布端并不是主流推流,是從服務(wù)器B拉流過來進(jìn)而完成發(fā)布的,而這個(gè)回源鏈接對(duì)于服務(wù)器B來是個(gè)訂閱者,服務(wù)器B的發(fā)布者是主播推流。這種服務(wù)器與服務(wù)器之間的級(jí)聯(lián)關(guān)系,就構(gòu)成CDN直播網(wǎng)絡(luò)。
 
直播服務(wù)的特點(diǎn)——音視頻幀與延遲的產(chǎn)生
 
視頻直播流會(huì)傳輸音頻幀和視頻幀,對(duì)于音頻幀來講,它每一幀都可以獨(dú)立解碼,播放器從服務(wù)器獲取到任何一幀音頻幀之后,都可以獨(dú)立渲染,聽到聲音。
 
而視頻幀分為視頻關(guān)鍵幀和視頻非關(guān)鍵幀兩類,視頻關(guān)鍵幀可以獨(dú)立解碼渲染,可以直接看到畫面,其他非關(guān)鍵幀則做不到,它的解碼依賴于前面的視頻幀。視頻關(guān)鍵幀的優(yōu)點(diǎn)在于獨(dú)立解碼,但是缺點(diǎn)是攜帶的信息很多、很大。反之,視頻非關(guān)鍵幀則很小,幾K或者1K就可以解決。對(duì)于視頻直播的任何一次播放,都是從視頻關(guān)鍵幀開始發(fā)送,否則會(huì)先出現(xiàn)花屏,體驗(yàn)很差。
 
我們將兩個(gè)視頻關(guān)鍵幀之間的間隔為一個(gè)GOP,這是很重要的概念。下圖是一路流的音視頻序列,我們可以看到兩個(gè)key(視頻關(guān)鍵幀)中間大概有10秒間隔,下側(cè)的箭頭指示的是當(dāng)前推流所在的位置,后續(xù)的虛線是即將要推上來的流。此時(shí),前一個(gè)關(guān)鍵幀大概在3秒前出現(xiàn),如果這時(shí)來了一個(gè)播放端,那么我們不能從箭頭開始發(fā)給播放端,因?yàn)闀?huì)花屏。所以我們會(huì)選擇從前面的關(guān)鍵幀開始發(fā)送,也就是說,這時(shí)的播放端會(huì)從3秒之前開始播放,這也就產(chǎn)生了延遲。這個(gè)GOP越大,平均延遲也就越大。GOP越小,平均延遲也就越小。一般,手機(jī)直播的延遲在2-4秒,游戲直播延遲在8-10秒。
 
直播服務(wù)特點(diǎn)——服務(wù)器緩存數(shù)據(jù)
 
之前提到的CDN圖片、視頻加速,它們在每一個(gè)邊緣服務(wù)器、中間服務(wù)器、源站服務(wù)器都是以一個(gè)一個(gè)文件形式來存儲(chǔ)的,今天和明天訪問文件的數(shù)據(jù)是不變的。而對(duì)于視頻直播來講,存儲(chǔ)的數(shù)據(jù)都是實(shí)時(shí)在變化的。服務(wù)器會(huì)存儲(chǔ)最近的關(guān)鍵幀以來的數(shù)據(jù),每當(dāng)一個(gè)新關(guān)鍵幀出現(xiàn)之后,都會(huì)將之前的緩存數(shù)據(jù)清掉。這樣才能保證任何一個(gè)時(shí)間點(diǎn)來播放的播放端都能從最新進(jìn)度開始觀看直播。
 
CDN直播架構(gòu)和業(yè)務(wù)功能
 
CDN直播網(wǎng)絡(luò)架構(gòu)圖,這個(gè)架構(gòu)圖就是建立在發(fā)布與訂閱的關(guān)系之上。從左側(cè)的主播推流開始,主播推流到L1邊緣節(jié)點(diǎn),再經(jīng)過L2節(jié)點(diǎn)的上行加速,最終到中心機(jī)房。對(duì)于最右側(cè)的播放端來講,他們從就近的L1節(jié)點(diǎn)完成播放,L1節(jié)點(diǎn)一般就是本地覆蓋的邊緣節(jié)點(diǎn),如果機(jī)房內(nèi)有這路視頻流,就直接返回,如果機(jī)房內(nèi)沒有這路視頻流,就從L2節(jié)點(diǎn)拉流,如果L2不命中,最終會(huì)去中心機(jī)房尋找這路流。這其中,任何的鏈路都會(huì)存在抖動(dòng)狀況,CDN會(huì)通過自動(dòng)切換調(diào)度來保證穩(wěn)定性。
 
直播中心
 
直播中心在整個(gè)CDN直播系統(tǒng)中非常重要,這中間有一些比較重要的組件。包括流媒體服務(wù)器,用于用戶存儲(chǔ)成千上萬路直播流;視頻處理組件用來完成轉(zhuǎn)碼、截圖、錄制、切片業(yè)務(wù);拉流組件用于解決不是主動(dòng)推給直播中心的需求;調(diào)度組件用來完成每一路流在服務(wù)器上查找的問題;直播API一般供客戶來訪問在線流和歷史流的數(shù)據(jù);監(jiān)控組件是供客戶來監(jiān)控每一路流、服務(wù)器和組件的穩(wěn)定性的。
 
轉(zhuǎn)碼業(yè)務(wù)
 
還有一個(gè)和直播密切相關(guān)的就是轉(zhuǎn)碼業(yè)務(wù)。左側(cè)圖是一路流轉(zhuǎn)碼之前的原始畫面,當(dāng)前碼率大約是3000K+,右側(cè)轉(zhuǎn)碼出來的視頻是300K+。一般轉(zhuǎn)碼應(yīng)用在幫助直播平臺(tái)節(jié)省帶寬和處理一些播放端不是很順暢的場景之下。
 
截圖業(yè)務(wù)
 
對(duì)視頻流周期性的截取關(guān)鍵幀,保存成一張圖片。一般用在直播平臺(tái)對(duì)于每個(gè)直播間做縮略圖來用。用戶在直播平臺(tái)看到了直播間縮略圖,過一會(huì)兒刷新后是會(huì)變化的,這就是通過截圖來完成的。
 
除此之外,整個(gè)直播系統(tǒng)中還包括其他業(yè)務(wù),比如錄制、回調(diào)、鑒權(quán)、黑白名單、轉(zhuǎn)推其他廠商、播放純視頻純音頻等。
 
直播監(jiān)控相關(guān)
 
視頻直播有很多屬性,所以對(duì)其監(jiān)控是十分必要的,我們一般來監(jiān)控以下指標(biāo):
 
直播視頻碼率:一般來說,手機(jī)直播碼率在500Kbps ~ 1Mbps,游戲直播 碼率在1.5Mbps ~ 4Mbps左右。
 
直播視頻播放:監(jiān)控直播的當(dāng)前在線人數(shù)和總體下行流量大小。
 
視頻幀率(卡頓):因?yàn)橐曨l/音頻有個(gè)特性,它的幀率是固定的,音頻30 ~ 60幀/秒,視頻15 ~ 40 幀/秒。如果一路流很正常,幀率是一條平滑的直線,如果出現(xiàn)突刺,那么就說明有網(wǎng)絡(luò)抖動(dòng)。有了全鏈路秒級(jí)幀率監(jiān)控圖之后, 排查問題變得非常的方便, 針對(duì)一路流卡頓以及用戶的各種問題可以很快的就明確原因。
 
全鏈路監(jiān)控:對(duì)于整個(gè)分發(fā)鏈路監(jiān)控,根據(jù)客戶的反饋通過全鏈路監(jiān)控準(zhǔn)確找到問題所在,把有問題節(jié)點(diǎn)下掉,或者將鏈路切換。
 
雙11晚會(huì)直播相關(guān)預(yù)案
 
最后,我們來看看雙11晚會(huì)直播中,我們做了哪些預(yù)案。其實(shí),從15年開始,雙11就有了晚會(huì)直播。這個(gè)晚會(huì)是為了雙11進(jìn)行造勢和導(dǎo)流,穩(wěn)定性非常重要,保障級(jí)別會(huì)很高。下圖是整體拓?fù)鋱D,基本上和雙11直播晚會(huì)相關(guān)的預(yù)案都在這里。
 
最左側(cè)是現(xiàn)場導(dǎo)播車,分出的信號(hào)會(huì)將視頻流推到直播中心。常規(guī)的主播會(huì)通過公網(wǎng)推到直播中心,抖動(dòng)的可能性也會(huì)很大,雙11晚會(huì)會(huì)選擇專線來推流到直播中心。而且,預(yù)案不會(huì)只選擇一根專線,因?yàn)橐桓鶎>€也可能會(huì)成為單點(diǎn),存在一定風(fēng)險(xiǎn),所以我們一般選擇不同運(yùn)營商的兩根專線,確保鏈路傳輸。
 
從現(xiàn)場采集出來的畫面,我們可以看到會(huì)有四路,narrow這路流其實(shí)是我們采用了窄帶高清技術(shù)的畫面。sh01和sh02是不同專線的互備,sh01_narrow和sh02_narrow也是不同專線的互備,而且sh01的畫面使用了主推和冷備兩條鏈路,來防止現(xiàn)場推流設(shè)備出現(xiàn)的問題。假設(shè)真的某路流出現(xiàn)問題了,會(huì)通過播放端對(duì)ur來進(jìn)行更換。
 
雙11直播晚會(huì)轉(zhuǎn)碼——窄帶高清
 
雙11直播晚會(huì)采用了窄帶高清技術(shù),窄帶高清是阿里視頻云獨(dú)有的一套以人眼主觀感受最優(yōu)為基準(zhǔn)的視頻編解碼算法,從這里參數(shù)來看,窄帶高清和非窄帶高清使用的碼率峰值和平均碼率值是基本一樣的,但是窄帶高清的畫質(zhì)效果會(huì)更好。它具有以下特點(diǎn):
 
能和編碼標(biāo)準(zhǔn)的進(jìn)步垂直發(fā)展,效果能夠疊加
 
能把業(yè)界普遍浪費(fèi)的帶寬節(jié)省下來,節(jié)省20%左右
 
能把業(yè)界普遍處理不好的復(fù)雜場景優(yōu)化
 
能讓普通觀眾一眼就能看出畫質(zhì)的效果不同
 
程序盯屏預(yù)案
 
對(duì)于雙11來講,我們也會(huì)有一個(gè)盯屏的策略,通過程序?qū)λ辛鬟M(jìn)行播放,輸出一個(gè)幀率。轉(zhuǎn)碼流每秒鐘是25幀左右,中間高亮出來的,就是網(wǎng)絡(luò)或轉(zhuǎn)碼存在問題。一旦發(fā)現(xiàn)問題,就采取相應(yīng)的預(yù)案。
 
人肉查看視頻預(yù)案及其他
 
排除了網(wǎng)絡(luò)問題之外,也可能存在音畫不同步、現(xiàn)場采集畫面出現(xiàn)花屏等情況,所以針對(duì)不同播放端類型,也會(huì)有人肉查看每路流的實(shí)際效果。此外,運(yùn)營同學(xué)也會(huì)檢測總體流量和CDN節(jié)點(diǎn)水位的情況,如果說流量帶寬很高,我們也會(huì)采取降低碼率等措施來節(jié)省帶寬。

責(zé)任編輯:王剛