掃二維碼與項(xiàng)目經(jīng)理溝通
我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
通常我們所說(shuō)的視頻,是指連續(xù)的圖象變化每秒 超過(guò) 24 幀(Frame)畫(huà)面以上時(shí),根據(jù)視覺(jué)暫留原理,人眼無(wú)法辨別單幅的靜態(tài)畫(huà)面,看上去是平滑連續(xù)的視覺(jué)效果,這樣連續(xù)的畫(huà)面叫做視頻。

成都創(chuàng)新互聯(lián)公司長(zhǎng)期為成百上千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為上高企業(yè)提供專(zhuān)業(yè)的成都網(wǎng)站制作、做網(wǎng)站、外貿(mào)營(yíng)銷(xiāo)網(wǎng)站建設(shè),上高網(wǎng)站改版等技術(shù)服務(wù)。擁有十多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。
而媒體轉(zhuǎn)碼是指將一段多媒體包括音頻、視頻或者其他的內(nèi)容從一種編碼格式轉(zhuǎn)換成為另外一種編碼格式。其中內(nèi)容分發(fā)網(wǎng)絡(luò)就是大家常說(shuō)的 CDN,這里主要包含流媒體服務(wù)器,負(fù)載均衡,路由重定向,視頻轉(zhuǎn)碼,視頻錄制存儲(chǔ),防盜鏈,性能等相關(guān)技術(shù)內(nèi)容。
本文主要從直播概述、直播架構(gòu)、業(yè)務(wù)功能和場(chǎng)景來(lái)介紹下阿里云 CDN 直播系統(tǒng)。
一、視頻相關(guān)詞匯介紹
在講解直播 CDN 技術(shù)之前,我們先來(lái)了解一些直播視頻的相關(guān)詞匯。
一般來(lái)說(shuō) 30fps 就是可以接受的,但是將性能提升至 60fps 則可以明顯提升交互感和逼真感,但是一般來(lái)說(shuō)超過(guò) 75fps 一般就不容易察覺(jué)到有明顯的流暢度提升了。如果幀率超過(guò)屏幕刷新率只會(huì)浪費(fèi)圖形處理的能力,因?yàn)楸O(jiān)視器不能以這么快的速度更新,這樣超過(guò)新率的幀率就浪費(fèi)掉了。
音頻幀一般可以獨(dú)立解碼,直播播放。而視頻分為視頻關(guān)鍵幀和非關(guān)鍵幀,關(guān)鍵幀可以獨(dú)立解碼渲染,播放器拿到后可以直接看到畫(huà)面,一般 10K 以上甚至幾十 K;其他非關(guān)鍵幀解碼依賴于前面的一些視頻幀,播放器會(huì)根據(jù)前面的幀和這一幀來(lái)解碼產(chǎn)生畫(huà)面,非關(guān)鍵幀一般大小是幾 K 甚至不到 1K。對(duì)于播放器來(lái)說(shuō),服務(wù)器一般會(huì)從視頻關(guān)鍵幀開(kāi)始發(fā)送,這樣才不會(huì)產(chǎn)生花屏。
對(duì)于節(jié)點(diǎn)上直播服務(wù)器存儲(chǔ)的內(nèi)容,如果是文件加速,節(jié)點(diǎn)上存儲(chǔ)的內(nèi)容很明確,就是文件數(shù)據(jù), URL 不變的話文件數(shù)據(jù)內(nèi)容也不變。但是對(duì)于直播來(lái)講,傳輸?shù)木褪菐瑪?shù)據(jù),緩存的也是不斷變化的幀序列數(shù)據(jù)。
下圖可以看到,當(dāng)前的服務(wù)器緩存了 V1-V3 五幀數(shù)據(jù),當(dāng) V4 這個(gè)關(guān)鍵幀出現(xiàn)了,服務(wù)器把之前的丟掉,開(kāi)始緩存 V4 開(kāi)始的音視頻數(shù)據(jù),以這個(gè)策略保證過(guò)來(lái)的播放端都是當(dāng)前最新的數(shù)據(jù)。一般直播服務(wù)器都是用這個(gè)策略來(lái)進(jìn)行服務(wù)器緩存的。
常見(jiàn)的 CDN 加速包括文件加速、點(diǎn)播、直播三種業(yè)務(wù)。最開(kāi)始阿里云 CDN 是從文件加速開(kāi)始,針對(duì)的主要是內(nèi)部客戶,如淘寶,它的圖片非常多,支持的都是小文件加速。隨著各 BU 的端產(chǎn)品衍生,逐漸會(huì)支持大的文件下載業(yè)務(wù)。等阿里云 CDN 正式作為產(chǎn)品上線商業(yè)化時(shí)候,開(kāi)始支持點(diǎn)播業(yè)務(wù)。2015 年下半年,開(kāi)始支持直播業(yè)務(wù)。
二、直播概述
通常,視頻直播常見(jiàn)兩種形式是手機(jī)直播和游戲直播,手淘、陌陌、映客的典型的手機(jī)直播平臺(tái),游戲直播就是像斗魚(yú)、全民 TV 等平臺(tái)。其實(shí)對(duì)于播放端來(lái)講,直播和點(diǎn)播都是向服務(wù)器獲取視頻數(shù)據(jù),播放端對(duì)聲音和畫(huà)面進(jìn)行播放的過(guò)程。從這個(gè)角度來(lái)講,直播和點(diǎn)播區(qū)別并不大。
直播和點(diǎn)播的區(qū)別
對(duì)于視頻點(diǎn)播,用戶在觀看的時(shí)候,可以隨時(shí)選擇快進(jìn)和回退,直播卻不能。對(duì)于視頻網(wǎng)站上的視頻文件來(lái)講,點(diǎn)播可以選擇今天看或明天看,但是直播卻不能選擇時(shí)間,像每周末的聯(lián)賽只在固定的時(shí)間播放。一些機(jī)頂盒提供回看的功能,也屬于點(diǎn)播。
簡(jiǎn)而言之,直播就是每一幀數(shù)據(jù)打上時(shí)序標(biāo)簽后進(jìn)行流式傳輸?shù)倪^(guò)程。發(fā)送端源源不斷的采集音視頻數(shù)據(jù),經(jīng)過(guò)編碼、封包、推流、再經(jīng)過(guò)分發(fā)網(wǎng)絡(luò)進(jìn)行擴(kuò)散傳播,播放端再源源不斷地下載數(shù)據(jù)并按時(shí)序進(jìn)行解碼播放。如此就產(chǎn)生了邊生產(chǎn)、邊傳輸、邊消費(fèi)的直播過(guò)程。
我們將視頻直播整個(gè)流程主要分為幾個(gè)關(guān)鍵階段:視頻采集、前處理、編碼、推流、轉(zhuǎn)碼、分發(fā)、播放,下圖為簡(jiǎn)化版直播系統(tǒng)的基本架構(gòu),后面我們?cè)僭敿?xì)展開(kāi)。
三、直播架構(gòu)
這是一張阿里云直播全景解決方案的圖,這里包括詳細(xì)的推流端推流,直播中心的流存儲(chǔ),轉(zhuǎn)碼截圖錄制等視頻處理,CDN 智能調(diào)度與分發(fā),最后到播放端播放整個(gè)過(guò)程。
就視頻直播服務(wù)器的一個(gè)進(jìn)程上來(lái)講,我們可以認(rèn)為一個(gè)推流端和多個(gè)播放端是一種非常典型的發(fā)布和訂閱的關(guān)系。從下圖可以看到,主播完成發(fā)布動(dòng)作,這條直播內(nèi)容也就是這一路流推動(dòng)到服務(wù)器,三個(gè)觀眾也就是訂閱者,從服務(wù)器拉流,也就是用播放動(dòng)作來(lái)完成推流。這種進(jìn)程內(nèi)部、節(jié)點(diǎn)之間的發(fā)布、訂閱關(guān)系是一種級(jí)聯(lián)的關(guān)系,CDN 的直播分發(fā)就是依靠這種模式構(gòu)建。
那下面我們從 CDN 分發(fā)的角度來(lái)基礎(chǔ)架構(gòu)是怎樣的。內(nèi)容通過(guò)存儲(chǔ)集群到達(dá)發(fā)布集群,再通過(guò)骨干中轉(zhuǎn)環(huán)境的 L2,利用 CDN 智能調(diào)度到達(dá) L1,也就是距離用戶最近的節(jié)點(diǎn),從順利的推送給用戶。
四、業(yè)務(wù)功能及場(chǎng)景
對(duì)于直播來(lái)講,轉(zhuǎn)碼業(yè)務(wù)功能非常重要。轉(zhuǎn)碼后會(huì)在原始流名上加后綴,下圖是轉(zhuǎn)碼前后的畫(huà)質(zhì)、碼率的區(qū)別。和轉(zhuǎn)碼相關(guān)的有水印、動(dòng)態(tài)模板、延遲轉(zhuǎn)碼等功能
截圖也是比較重要的業(yè)務(wù),比如說(shuō)直播平臺(tái)頁(yè)面分類(lèi)下有很多張圖片,刷新后圖片會(huì)變化,都是靠周期性截圖來(lái)完成。除此之外,阿里云也開(kāi)放對(duì)直播進(jìn)行動(dòng)態(tài)配置、錄制、開(kāi)播斷流回調(diào)、推流播放鑒權(quán)、斷流、黑名單、禁播、各種接口 API、轉(zhuǎn)推其他廠商、觸發(fā)式拉流、連麥、播放純音頻 / 視頻等。
另外比較重要的是直播數(shù)據(jù)的監(jiān)控,對(duì)客戶和我們來(lái)說(shuō),能時(shí)刻關(guān)注直播情況,掌握直播數(shù)據(jù),對(duì)于防范問(wèn)題來(lái)說(shuō)是十分必要的。視頻監(jiān)控是用來(lái)記錄一路流重要信息,比如常見(jiàn)的視頻碼率、播放流量和在線人數(shù)、視頻幀率監(jiān)控。視頻的特性是每秒鐘幀率比較固定,視頻幀大概是 20~30 幀 / 秒, 造成卡頓的主要原因一般是網(wǎng)絡(luò)鏈路的抖動(dòng),有了全鏈路秒級(jí)幀率監(jiān)控圖之后, 排查問(wèn)題變得非常的方便, 針對(duì)一路流卡頓以及客戶提出的各種問(wèn)題可以很快的就明確原因。
正常的監(jiān)控圖應(yīng)該是一條直線,上圖的幀率出現(xiàn)的突刺,就是因?yàn)楣W(wǎng)網(wǎng)絡(luò)連接抖動(dòng)后統(tǒng)計(jì)出來(lái)的數(shù)據(jù)降低。對(duì)于一路流多個(gè)播放端來(lái)講,服務(wù)器會(huì)不斷把幀數(shù)據(jù)寫(xiě)給播放端,一旦網(wǎng)絡(luò)抖動(dòng),遇到寫(xiě)不出去的情況會(huì)將這一幀放到連接的等待隊(duì)列里,超出了幀隊(duì)列的長(zhǎng)度限制,服務(wù)器會(huì)選擇丟幀。一般這種情況產(chǎn)生是因?yàn)榫W(wǎng)絡(luò)抖動(dòng)的比較嚴(yán)重,我們也會(huì)以此為依據(jù)來(lái)確定網(wǎng)絡(luò)全鏈路的質(zhì)量,用紅綠顏色來(lái)標(biāo)注區(qū)分正常和非正常的鏈路質(zhì)量。
那以上的架構(gòu)和業(yè)務(wù)功能都可以應(yīng)用于哪些場(chǎng)景呢?我們也對(duì)阿里云視頻直播 CDN 服務(wù)的客戶場(chǎng)景進(jìn)行了歸類(lèi)匯總,主要有以下五個(gè)方向:

我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流