本文來(lái)自快手科技算法科學(xué)家,快手傳輸算法團(tuán)隊(duì)負(fù)責(zé)人周超博士在LiveVideoStackCon 2020線上峰會(huì)的分享,介紹了快手基于流式直播多碼率的實(shí)踐與優(yōu)化,以及LAS (Live Adaptive Streaming)標(biāo)準(zhǔn)的架構(gòu)、原理、自適應(yīng)算法與未來(lái)規(guī)劃。
近日,快手正式對(duì)外發(fā)布基于流式的直播多碼率自適應(yīng)標(biāo)準(zhǔn)LAS(Live Adaptive Streaming),用于提供低延遲、平滑、流暢的直播多碼率體驗(yàn)。據(jù)悉,快手同時(shí)開(kāi)源了LAS的端到端解決方案,包括服務(wù)端、客戶端、業(yè)界領(lǐng)先的多碼率自適應(yīng)算法等,幫助業(yè)界實(shí)現(xiàn)零門檻接入和使用LAS。
直播清晰度對(duì)用戶的體驗(yàn)至關(guān)重要,通過(guò)提升視頻的碼率、分辨率,能夠確保視頻清晰度顯著提升。快手用戶規(guī)模大、分布廣泛,用戶間網(wǎng)絡(luò)差異性大,單一的視頻質(zhì)量(碼率、分辨率)或固定的檔位下發(fā)策略難以適應(yīng)不同的網(wǎng)絡(luò)需求。
2019年底數(shù)據(jù)顯示,快手的直播DAU超過(guò)了1億,快手的游戲直播日活用戶數(shù)達(dá)到5100萬(wàn),游戲直播是眾多直播場(chǎng)景中比較特殊的一個(gè)例子。相對(duì)于傳統(tǒng)直播(秀場(chǎng)類),因?yàn)橛螒虍嬅娴膹?fù)雜性,游戲直播對(duì)碼率的需求更高。這也是催生快手做直播多碼率的一大動(dòng)機(jī):?jiǎn)我坏拇a率很難滿足不同用戶的網(wǎng)絡(luò)條件。
直播技術(shù)的痛點(diǎn)和行業(yè)解決思路
站在用戶的角度,直播體驗(yàn)面臨的最大痛點(diǎn)可以分為三類:卡頓、模糊、延遲大。
對(duì)于這些問(wèn)題,單獨(dú)優(yōu)化某一個(gè)指標(biāo)并不難,難點(diǎn)在于彼此之間互相制約。例如通過(guò)降低碼率能降低卡頓率,提升觀看直播的流暢度,但降低碼率損失了清晰度的體驗(yàn),會(huì)引起直播畫面模糊。此外,延遲對(duì)于直播體驗(yàn)也至關(guān)重要,例如秀場(chǎng)的互動(dòng)直播,主播能及時(shí)響應(yīng)粉絲的評(píng)論或送禮等行為,都能極大的改善用戶體驗(yàn)。而延遲越低,客戶端緩存的數(shù)據(jù)也越少,對(duì)網(wǎng)絡(luò)抖動(dòng)的抗性也越差,從而增加了卡頓的風(fēng)險(xiǎn)。
目前的直播架構(gòu)主要分為兩類,一類是是基于流式架構(gòu),例如HTTP-FLV、WebRTC等。這類基于流式的直播架構(gòu),可以實(shí)現(xiàn)幀級(jí)傳輸,從而獲得低延遲的直播體驗(yàn)。此外,對(duì)于這些架構(gòu)和協(xié)議,CDN支持好,易部署,并且被長(zhǎng)時(shí)間大規(guī)模的商用驗(yàn)證過(guò),穩(wěn)定性高。其缺點(diǎn)是不支持多碼率,無(wú)法根據(jù)用戶的網(wǎng)絡(luò)動(dòng)態(tài)自適應(yīng)選擇最佳的碼率檔位。
多碼率自適應(yīng)是在抖動(dòng)網(wǎng)絡(luò)下保證觀看流暢度最有效的手段之一。目前多碼率自適應(yīng)方案,主要包括MPEG-DASH和HLS,并且這二者都是基于分片傳輸?shù)摹T谧畛踉O(shè)計(jì)時(shí),也主要用于點(diǎn)播場(chǎng)景,延遲問(wèn)題考慮得相對(duì)較少,直接用于直播場(chǎng)景時(shí)容易引起延遲過(guò)大,影響直播體驗(yàn)。目前國(guó)內(nèi)暫無(wú)大規(guī)模的使用DASH或HLS進(jìn)行直播,實(shí)際大規(guī)模使用時(shí),其穩(wěn)定性也有待考量。雖然目前MPEG-DASH和HLS都在討論低延遲方案,例如LHLS,但這些方案還沒(méi)完全標(biāo)準(zhǔn)化,離落地尚需時(shí)日。
魚和熊掌兼得的自研思路
已有的解決方案或多或少的存在一些瑕疵,難以滿足快手的業(yè)務(wù)需求。因此,我們選擇自研之路,設(shè)計(jì)了一套基于流式的直播多碼率自適應(yīng)方案,其目標(biāo)是在支持直播碼率自適應(yīng)的同時(shí),實(shí)現(xiàn)流式直播的低延遲。
總體而言,快手的直播多碼率解決方案包含兩大特性:一是基于流式傳輸,從而保證低延時(shí);二是支持多碼率,從而依據(jù)每個(gè)用戶的網(wǎng)絡(luò)狀態(tài),自適應(yīng)選擇最佳的視頻清晰度。該方案需要解決的三個(gè)核心問(wèn)題為:When——什么時(shí)候切換碼率;Which——切換到哪一檔;How——在流式傳輸下,如何實(shí)現(xiàn)無(wú)縫切換。
快手直播的系統(tǒng)架構(gòu)如上圖所示,主播推流到快手自建源站,源站負(fù)責(zé)收流、轉(zhuǎn)碼后,由CDN回源拉取不同碼率檔位的視頻流,進(jìn)而依據(jù)用戶的請(qǐng)求,將合適的視頻流分發(fā)給用戶。在基于流式的直播多碼率架構(gòu)下,對(duì)轉(zhuǎn)碼、CDN和播放器需要有一些規(guī)范的要求。
對(duì)于轉(zhuǎn)碼,不同于MPEG-DASH或HLS,我們的方案不需要進(jìn)行切片操作,只需要在轉(zhuǎn)碼時(shí)保證不同的轉(zhuǎn)碼流的I幀的pts嚴(yán)格對(duì)齊。因?yàn)樵谧龃a率切換時(shí),需要依據(jù)I幀的pts進(jìn)行對(duì)齊,否則,在解碼渲染時(shí)可能會(huì)出現(xiàn)跳幀的現(xiàn)象。
對(duì)于CDN,也是多碼率服務(wù)端的核心邏輯,主要包括以下功能的支持:
緩存:傳統(tǒng)CDN的緩存使用字節(jié)數(shù)(Bytes),在多碼率場(chǎng)景下,對(duì)于不同的視頻碼率,相同字節(jié)數(shù)所對(duì)應(yīng)的時(shí)長(zhǎng)不一樣,而多碼率的操作都是基于時(shí)間的,因此,我們要求存儲(chǔ)單位統(tǒng)一為時(shí)間。這個(gè)時(shí)間長(zhǎng)度的計(jì)算,可以依據(jù)視頻,也可以依據(jù)音頻 ,詳細(xì)的實(shí)現(xiàn)可以參考我們的標(biāo)準(zhǔn)文檔。
拉流:CDN需要支持三種拉流模式,即默認(rèn)位置拉流(傳統(tǒng)拉流)、絕對(duì)位置拉流(明確吐流位置)、相對(duì)位置拉流(設(shè)置吐流時(shí)長(zhǎng))。
在具體實(shí)現(xiàn)時(shí),考慮遲到視頻幀的解碼參考關(guān)系,CDN在吐流時(shí),需要從關(guān)鍵幀開(kāi)始,具體分為三種情況:
默認(rèn)位置拉流,一般發(fā)生在啟播時(shí),依據(jù)默認(rèn)長(zhǎng)度計(jì)算當(dāng)前期望的絕對(duì)位置,找到最近的I幀開(kāi)始吐流。
絕對(duì)位置拉流,一般發(fā)生在碼率切換時(shí),需要找到pts不大于絕對(duì)位置的I幀開(kāi)始吐流,避免渲染跳變。
相對(duì)位置拉流,一般發(fā)生在啟播時(shí),根據(jù)相對(duì)位置計(jì)算絕對(duì)位置,再找到最近的I幀開(kāi)始吐流。
上圖是基于流式的直播多碼率自適應(yīng)的流程示意圖。在啟播時(shí),采用相對(duì)位置拉流的模式,默認(rèn)拉取高清檔位的視頻流。此時(shí),可以結(jié)合業(yè)務(wù)的需求,通過(guò)合理的設(shè)置相對(duì)位置來(lái)控制直播延遲。在直播過(guò)程中,當(dāng)因?yàn)榫W(wǎng)絡(luò)等原因?qū)е滦枰獜母咔辶髑袚Q到標(biāo)清流,從而保證播放的流暢性時(shí),可以采用絕對(duì)位置的拉流方式。具體過(guò)程為:首先斷開(kāi)高清流,然后播放器依據(jù)當(dāng)前的狀態(tài),得到期望吐流的絕對(duì)位置 ,比發(fā)送絕對(duì)位置的拉流請(qǐng)求。通過(guò)I幀的pts嚴(yán)格對(duì)齊,保證了無(wú)縫切換。
基于流式傳輸?shù)募軜?gòu)保證了低延遲的效果,直播的流暢度和清晰度,則需要通過(guò)多碼率自適應(yīng)算法來(lái)實(shí)現(xiàn)。為了平衡這一對(duì)矛盾的目標(biāo),我們采用基于buffer的模式,背后的出發(fā)點(diǎn)在于當(dāng)buffer數(shù)據(jù)較多時(shí),意味著帶寬沒(méi)有被充分利用起來(lái),需要切換到更高檔位以獲得更高的清晰度,反之亦然。此外,頻繁的碼率切換,對(duì)用戶的主觀體驗(yàn)也不友好,因此,我們還需要考慮碼率切換的平滑性。
這里值得強(qiáng)調(diào)一點(diǎn)的是,整個(gè)建模過(guò)程都依賴與網(wǎng)絡(luò)帶寬的估計(jì)。在基于分片的多碼率框架下,每個(gè)分片獨(dú)立下載,其平均下載速度可以近似作為當(dāng)前帶寬的均值。然而,在基于流式傳輸?shù)倪^(guò)程中,源數(shù)據(jù)實(shí)時(shí)產(chǎn)生,觀測(cè)到的下載速度近似等于請(qǐng)求的視頻流的碼率,難以反應(yīng)真實(shí)的帶寬。在我們的方案中,帶寬通過(guò)實(shí)時(shí)收集固定時(shí)間間隔的微粒度下載速度采樣點(diǎn)并濾波來(lái)獲得。
在實(shí)際求解時(shí),除了考慮當(dāng)前時(shí)刻的決策外,還需要考慮當(dāng)前的決策對(duì)未來(lái)的影響,從而達(dá)到全局最優(yōu)。經(jīng)過(guò)一些矩陣的巧妙設(shè)計(jì),極大簡(jiǎn)化了求解過(guò)程,也方便了工程實(shí)現(xiàn)。算法的具體實(shí)現(xiàn)已開(kāi)源。
LAS標(biāo)準(zhǔn)發(fā)布期待行業(yè)伙伴參與共建
快手直播多碼率的解決方案方案從開(kāi)始調(diào)研,實(shí)現(xiàn)再到全量,經(jīng)歷了方案和架構(gòu)選擇、工程實(shí)現(xiàn)、算法優(yōu)化等諸多問(wèn)題,目前已經(jīng)在快手直播業(yè)務(wù)實(shí)現(xiàn)全量,并且取得了很不錯(cuò)的收益。我們將整套方案重新梳理并形成標(biāo)準(zhǔn)文檔LAS(Live Adaptive Streaming),將這些經(jīng)驗(yàn)分享出來(lái),希望能為大家?guī)?lái)一些幫助。LAS標(biāo)準(zhǔn)主要內(nèi)容包括以下幾個(gè)方面:
媒體呈現(xiàn)描述:描述了基于流式的直播多碼率自適應(yīng)標(biāo)準(zhǔn)的基本語(yǔ)義元素
LAS請(qǐng)求描述:描述了基于流式的直播多碼率自適應(yīng)標(biāo)準(zhǔn),不同場(chǎng)景下請(qǐng)求的生成方式
LAS服務(wù)描述:描述了基于流式的直播多碼率自適應(yīng)標(biāo)準(zhǔn),服務(wù)端/云端支持的處理邏輯
LAS客戶端描述:LAS客戶端的具體實(shí)現(xiàn),不作為L(zhǎng)AS標(biāo)準(zhǔn)的范疇。LAS僅給出推薦的實(shí)現(xiàn)架構(gòu)與自適應(yīng)算法策略
詳細(xì)的文檔、架構(gòu)、部署方式、測(cè)試數(shù)據(jù)等,可以參考LAS的官方網(wǎng)站(https://las-tech.org.cn),這里不再贅述。
最后,我們還與HLS做了詳細(xì)的測(cè)試對(duì)比,包括不同的網(wǎng)絡(luò)環(huán)境、不同的GOP大小、不同的延遲模式等。其中,LAS不同的延時(shí)模式,通過(guò)啟播拉流時(shí),采用相對(duì)位置拉流并設(shè)定不同的相對(duì)位置來(lái)實(shí)現(xiàn)。詳細(xì)的測(cè)試數(shù)據(jù)可以參考LAS的官網(wǎng)。
LAS基于流式架構(gòu),實(shí)現(xiàn)幀級(jí)傳輸,與HLS等基于分片的多碼率架構(gòu)相比,能顯著降低延遲。在自適應(yīng)算法上,與分片傳輸?shù)牟呗韵啾龋诹魇降膫鬏斶壿嫊?huì)一定程度增加自適應(yīng)算法的難度(例如在流式傳輸中,因?yàn)樵磾?shù)據(jù)實(shí)時(shí)產(chǎn)生,觀測(cè)到的平均帶寬值近似等于當(dāng)前請(qǐng)求的視頻碼率,無(wú)法反應(yīng)真實(shí)的帶寬),但流式架構(gòu)更加靈活,并且能顯著降低分片架構(gòu)中存在的傳輸ON-OFF現(xiàn)象,從而降低了碼率切換過(guò)于頻繁的問(wèn)題。上圖展示的LAS與HLS對(duì)比各項(xiàng)指標(biāo)的平均結(jié)果,可以看出,與HLS相比,LAS能在獲得更低的卡頓率、更高的碼率和更低的延遲,從而為用戶提供更低延遲,更流暢、更清晰的直播體驗(yàn)。
LAS已經(jīng)開(kāi)源,涵蓋服務(wù)端、客戶端和自適應(yīng)算法。目前,阿里云、騰訊云、百度云、金山云、網(wǎng)宿云等云廠商均支持LAS,企業(yè)可直接接入使用。此外,業(yè)內(nèi)知名開(kāi)源流媒體服務(wù)器SRS也已支持LAS,基于SRS 4.0及更高版本,企業(yè)客戶也可搭建自己的LAS服務(wù)端以滿足個(gè)性化的需求。在客戶端,我們已經(jīng)開(kāi)源了LAS Web的實(shí)現(xiàn),包括協(xié)議、架構(gòu)和自適應(yīng)算法。
未來(lái),LAS還將進(jìn)一步優(yōu)化升級(jí),主要包括以下幾個(gè)方面:
跨平臺(tái):未來(lái)我們希望可以實(shí)現(xiàn)跨平臺(tái)的支持,例如移動(dòng)端的支持和開(kāi)源。
多協(xié)議:在協(xié)議層面,目前開(kāi)源的版本是基于HTTP-FLV的實(shí)現(xiàn),未來(lái)希望可以支持更多協(xié)議,例如WebRTC、QUIC等。
全鏈路:LAS目前主要是針對(duì)拉流端的多碼率自適應(yīng)方案,未來(lái)希望涵蓋推流、轉(zhuǎn)碼,打造一套全鏈路的解決方案。
自適應(yīng)算法:自適應(yīng)算法是LAS高效性的保障。我們有完善的測(cè)試環(huán)境,AB系統(tǒng)。
最后,歡迎業(yè)界同行加入LAS,共同完善LAS標(biāo)準(zhǔn)和LAS開(kāi)源社區(qū)。
-
直播
+關(guān)注
關(guān)注
1文章
248瀏覽量
21415 -
網(wǎng)絡(luò)
+關(guān)注
關(guān)注
14文章
7567瀏覽量
88794
原文標(biāo)題:快手自研直播多碼率標(biāo)準(zhǔn)對(duì)行業(yè)發(fā)布
文章出處:【微信號(hào):livevideostack,微信公眾號(hào):LiveVideoStack】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論