2018年11月13-14日,第七屆GFIC全球家庭互聯(lián)網(wǎng)大會在上海隆重召開,本屆大會以“+連接,再創(chuàng)新”為主題,共設(shè)12大主題論壇:GFIC全球家庭互聯(lián)網(wǎng)領(lǐng)袖峰會、GFIC亞太CDN年會領(lǐng)袖峰會、4K超高清論壇、IPTV創(chuàng)新論壇、視頻加速論壇、OTT領(lǐng)袖峰會、家庭大屏營銷論壇、融合CDN論壇、跨境加速論壇、亞太物聯(lián)網(wǎng)峰會、智慧家庭AIoT論壇、5G車聯(lián)網(wǎng)論壇。在11月13日下午舉行的視頻加速論壇上,Akamai Technologies資深技術(shù)顧問周德振做了題為《采用CMAF構(gòu)建全球體驗一致的低延時直播》的主題演講。
圖為Akamai Technologies資深技術(shù)顧問周德振現(xiàn)場演講圖片
Akamai成立于1998年,是國際上最早開始做CDN的公司。據(jù)悉,Akamai是目前全球最大的CDN廠商,但在國內(nèi)相對比較低調(diào)一點,原因在于它是以服務(wù)出海的中國企業(yè)為主,其中包括一些游戲、電商、短視頻、直播,此外,除了CDN 業(yè)務(wù)還為客戶提供安全解決方案。今天,我將跟大家分享的話題是關(guān)于直播領(lǐng)域的。我將用二十分鐘的時間給大家講清楚一件事,那就是如何使用CMAF技術(shù)來實現(xiàn)低延時直播。值得注意的是,Akamai是能做到全球化低延時直播的企業(yè)之一,比如大家所熟知的奧運會和世界杯,每屆賽事的直播Akamai都是重度參與者,為全世界的觀眾帶來低延時的直播體驗。
什么是低延時?
低延時,我們指的是從視頻的采集到編碼到注入,經(jīng)過分發(fā)再到用戶播放器播放這么一個過程的低延時。傳統(tǒng)場景里上,我們只在部分語音和體育賽事的直播場景下獲得低延時。
目標(biāo):1到6秒!
雖然互聯(lián)網(wǎng)有了一定的發(fā)展,更多的低延時解決方案相繼出現(xiàn),但是其技術(shù)上依然存在局限性。傳統(tǒng)上比較容易實現(xiàn)的網(wǎng)絡(luò)直播,是通過我們這上面寫的分片方式來實現(xiàn)的,但是這里有個問題存在于,分片長度與播放器的播放行為之間存在關(guān)聯(lián)性,分片的長度影響了播放的時延。從目前來看,技術(shù)上很難達(dá)到通過依靠減小分片長度的方式做低延時。今天,我們想講的一個話題叫CMAF,即分塊化的一種編碼方式,目標(biāo)是能達(dá)到1到6秒的一個低延時。
影響低延時的因素
就像我們之前提到的,分片跟播放器的播放行為有一定的相關(guān)性。如果十秒鐘的切片通過我們視頻采集編碼注入到CDN直到播放器,延時將有可能是5.5倍的分片長度。而如果是2秒的切片到了播放器這端看到延時,將會有十多秒的情況。當(dāng)然我們可以通過減小分片的方式達(dá)到延時,但是帶來的問題在于Overhead比較高一些,從客戶端編碼注入到CDN下載帶來比較多問題。技術(shù)上的難點,可能是導(dǎo)致國內(nèi)直播出海繁榮程度不如其他Akamai看到的出海用戶,比如電商、短視頻等。對于直播,除非是有一些自己技術(shù)特點或者說在一定特殊地域做的比較不錯的,大地域范圍內(nèi)做直播成功的比較少,可能一個原因在于實踐上會比較難,Akamai試圖提供一些解決辦法,幫助國內(nèi)直播應(yīng)用出海。
CAMF:HLS+DASH
那么剛才說到的CMAF,它是Common Application Media Format的英文縮寫,本身不是一個今天才有的新東西,早在2012年的時候DASH就引入并且承認(rèn)或支持的一個協(xié)議標(biāo)準(zhǔn),到2017年9月份的時候正式被MPEG標(biāo)準(zhǔn)化。就目前而言,大家采用CAMF還不是那么多。那么它到底是一個什么神奇的東西,可以做到低延時呢?
首先我們來看CMAF的產(chǎn)生背景,HLS和DASH兩種協(xié)議之間存在一些區(qū)別,HLS里面有一個大家比較熟悉的文件叫M3U8,它為播放器帶來所播放的稱之為TS分片的視頻文件。TS分片是語音和視頻合成的,單獨下載一個TS分片就可以很好的播放相應(yīng)的視頻和語音。而DASH使用的是mpd文件,它是音頻、視頻各自分開的分片。由于兩者之間不兼容,導(dǎo)致在需要同時支持HLS和DASH的場景下,一個視頻必須被處理成兩種不同的方式。
CMAF為了解決以上這種對于資源的浪費,發(fā)明了可以同時支持HLS協(xié)議和DASH協(xié)議的播放模式,也就是把TS分片和DASH的語音視頻分片統(tǒng)一成CMAF分片方式。而他的神奇之處就在于相比于傳統(tǒng)播放模式,CMAF可以不把整個分片下載下來再播放,而是通過分塊方式,只要播放器獲得分片里面的分塊就立即播放,從而從理論來說可以達(dá)到低延時的效果。
CMAF低延時直播
1.分發(fā)角度
在Encoder編碼階段支持了分塊化的音視頻分片生成,通過CDN進(jìn)行傳輸時使用HTTP1.1的Chunk delivery方法,這樣才能夠達(dá)到低延時效果,如下圖所示,Akamai在波士頓的辦公室實時直播窗外景象,兩路直播分別使用傳統(tǒng)分片方式,和CMAF分塊化的分片方式對比,可見CAMF輕松把延時降低了4秒。
2.網(wǎng)絡(luò)層面
從上面這個圖看網(wǎng)絡(luò)傳輸情況,你會發(fā)現(xiàn)傳統(tǒng)的未分塊的分片式傳輸里,網(wǎng)絡(luò)傳輸?shù)男袨槭峭话l(fā)性的。實際上TCP傳輸過程里,因為CDN節(jié)點是共享而不是獨自占用的資源的,那會帶來一個問題:一旦你空下來在你沒有傳輸?shù)臅r間段里,資源會被其他TCP傳輸占用,等你有了傳輸?shù)臅r候,TCP傳輸慢慢再次啟動,所以很難達(dá)到比較好的傳輸效果。而對于分塊式傳輸你會發(fā)現(xiàn)一直都有內(nèi)容在傳輸,效率明顯比較高,這是從網(wǎng)絡(luò)層面看。
3.分塊化的分裝
分塊化傳輸以后可能大家想問,這會不會增加傳輸量的問題。實際過程里,因為語音文件本身比較小,可能會增加比例比較高的文件的尺寸,而對于視頻來說,占用比還是比較低的。作為廠商來講你的用戶使用CMAF的話,在計費的情況下,有些用戶會看payload值和你對費用,那么就會和CDN的帶寬算起來有一定差異,這個是值得注意的問題。
同時,在播放器上我們也發(fā)現(xiàn)了一些值得關(guān)注的問題,比如說對于分塊化的傳輸,分片下載時間通常就等于分片的時間長度,那么播放器會認(rèn)為吞吐就是帶寬值,從而在播放器的帶寬預(yù)測算法上出現(xiàn)誤判,需要我們訓(xùn)練播放器智能處理這種情況。對于播放器在這個技術(shù)里面還是有非常多的實踐的,由于時間關(guān)系我們不詳細(xì)談了,有興趣的同學(xué)可以聯(lián)系A(chǔ)kamai的同學(xué)再討論。
CMAF賦能視頻時代
下面大概看一下使用CMAF的好處:
第一,就是對于播放器的支持。一旦做了分塊化編碼和傳輸之后,有些同學(xué)就會說,會不會存在播放器兼容問題。實際上,播放器去取的內(nèi)容還是分片,只是多了一些頭部信息內(nèi)容而已,并不會影響播放器的播放。
第二,對于CMAF可以緩存。原來無論是采用RTMP技術(shù)還是各種私有化技術(shù),都很難對直播進(jìn)行緩存,對于資源的占用是非常大的問題。但是在采用分塊化編碼之后,這個問題就很好的解決了,音視頻分片可以緩存復(fù)用,可以大大節(jié)省成本。
第三是可擴(kuò)展性,這個地球的圖,上面的光柱是Akamai在全球各地部署的節(jié)點的情況,一旦采用CMAF技術(shù)之后,不止Akamai,很多CDN都可以支持分塊化傳輸。這樣原來由于采用其他技術(shù),而只能在東南亞或者歐美開展業(yè)務(wù)的,現(xiàn)在可以真正在全球開展業(yè)務(wù)了。