Akamai Technologies資深技術顧問周德振:采用CMAF構建全球體驗一致的低延時直播
2018年11月13-14日,第七屆GFIC全球家庭互聯網大會在上海隆重召開,本屆大會以“+連接,再創(chuàng)新”為主題,共設12大主題論壇:GFIC全球家庭互聯網領袖峰會、GFIC亞太CDN年會領袖峰會、4K超高清論壇、IPTV創(chuàng)新論壇、視頻加速論壇、OTT領袖峰會、家庭大屏營銷論壇、融合CDN論壇、跨境加速論壇、亞太物聯網峰會、智慧家庭AIoT論壇、5G車聯網論壇。在11月13日下午舉行的視頻加速論壇上,Akamai Technologies資深技術顧問周德振做了題為《采用CMAF構建全球體驗一致的低延時直播》的主題演講。

圖為Akamai Technologies資深技術顧問周德振現場演講圖片
Akamai成立于1998年,是國際上最早開始做CDN的公司。據悉,Akamai是目前全球最大的CDN廠商,但在國內相對比較低調一點,原因在于它是以服務出海的中國企業(yè)為主,其中包括一些游戲、電商、短視頻、直播,此外,除了CDN 業(yè)務還為客戶提供安全解決方案。今天,我將跟大家分享的話題是關于直播領域的。我將用二十分鐘的時間給大家講清楚一件事,那就是如何使用CMAF技術來實現低延時直播。值得注意的是,Akamai是能做到全球化低延時直播的企業(yè)之一,比如大家所熟知的奧運會和世界杯,每屆賽事的直播Akamai都是重度參與者,為全世界的觀眾帶來低延時的直播體驗。
什么是低延時?
低延時,我們指的是從視頻的采集到編碼到注入,經過分發(fā)再到用戶播放器播放這么一個過程的低延時。傳統場景里上,我們只在部分語音和體育賽事的直播場景下獲得低延時。
目標:1到6秒!
雖然互聯網有了一定的發(fā)展,更多的低延時解決方案相繼出現,但是其技術上依然存在局限性。傳統上比較容易實現的網絡直播,是通過我們這上面寫的分片方式來實現的,但是這里有個問題存在于,分片長度與播放器的播放行為之間存在關聯性,分片的長度影響了播放的時延。從目前來看,技術上很難達到通過依靠減小分片長度的方式做低延時。今天,我們想講的一個話題叫CMAF,即分塊化的一種編碼方式,目標是能達到1到6秒的一個低延時。

影響低延時的因素
就像我們之前提到的,分片跟播放器的播放行為有一定的相關性。如果十秒鐘的切片通過我們視頻采集編碼注入到CDN直到播放器,延時將有可能是5.5倍的分片長度。而如果是2秒的切片到了播放器這端看到延時,將會有十多秒的情況。當然我們可以通過減小分片的方式達到延時,但是帶來的問題在于Overhead比較高一些,從客戶端編碼注入到CDN下載帶來比較多問題。技術上的難點,可能是導致國內直播出海繁榮程度不如其他Akamai看到的出海用戶,比如電商、短視頻等。對于直播,除非是有一些自己技術特點或者說在一定特殊地域做的比較不錯的,大地域范圍內做直播成功的比較少,可能一個原因在于實踐上會比較難,Akamai試圖提供一些解決辦法,幫助國內直播應用出海。

CAMF:HLS+DASH
那么剛才說到的CMAF,它是Common Application Media Format的英文縮寫,本身不是一個今天才有的新東西,早在2012年的時候DASH就引入并且承認或支持的一個協議標準,到2017年9月份的時候正式被MPEG標準化。就目前而言,大家采用CAMF還不是那么多。那么它到底是一個什么神奇的東西,可以做到低延時呢?
首先我們來看CMAF的產生背景,HLS和DASH兩種協議之間存在一些區(qū)別,HLS里面有一個大家比較熟悉的文件叫M3U8,它為播放器帶來所播放的稱之為TS分片的視頻文件。TS分片是語音和視頻合成的,單獨下載一個TS分片就可以很好的播放相應的視頻和語音。而DASH使用的是mpd文件,它是音頻、視頻各自分開的分片。由于兩者之間不兼容,導致在需要同時支持HLS和DASH的場景下,一個視頻必須被處理成兩種不同的方式。
CMAF為了解決以上這種對于資源的浪費,發(fā)明了可以同時支持HLS協議和DASH協議的播放模式,也就是把TS分片和DASH的語音視頻分片統一成CMAF分片方式。而他的神奇之處就在于相比于傳統播放模式,CMAF可以不把整個分片下載下來再播放,而是通過分塊方式,只要播放器獲得分片里面的分塊就立即播放,從而從理論來說可以達到低延時的效果。

CMAF低延時直播
1.分發(fā)角度
在Encoder編碼階段支持了分塊化的音視頻分片生成,通過CDN進行傳輸時使用HTTP1.1的Chunk delivery方法,這樣才能夠達到低延時效果,如下圖所示,Akamai在波士頓的辦公室實時直播窗外景象,兩路直播分別使用傳統分片方式,和CMAF分塊化的分片方式對比,可見CAMF輕松把延時降低了4秒。

2.網絡層面
從上面這個圖看網絡傳輸情況,你會發(fā)現傳統的未分塊的分片式傳輸里,網絡傳輸的行為是突發(fā)性的。實際上TCP傳輸過程里,因為CDN節(jié)點是共享而不是獨自占用的資源的,那會帶來一個問題:一旦你空下來在你沒有傳輸的時間段里,資源會被其他TCP傳輸占用,等你有了傳輸的時候,TCP傳輸慢慢再次啟動,所以很難達到比較好的傳輸效果。而對于分塊式傳輸你會發(fā)現一直都有內容在傳輸,效率明顯比較高,這是從網絡層面看。

3.分塊化的分裝
分塊化傳輸以后可能大家想問,這會不會增加傳輸量的問題。實際過程里,因為語音文件本身比較小,可能會增加比例比較高的文件的尺寸,而對于視頻來說,占用比還是比較低的。作為廠商來講你的用戶使用CMAF的話,在計費的情況下,有些用戶會看payload值和你對費用,那么就會和CDN的帶寬算起來有一定差異,這個是值得注意的問題。
同時,在播放器上我們也發(fā)現了一些值得關注的問題,比如說對于分塊化的傳輸,分片下載時間通常就等于分片的時間長度,那么播放器會認為吞吐就是帶寬值,從而在播放器的帶寬預測算法上出現誤判,需要我們訓練播放器智能處理這種情況。對于播放器在這個技術里面還是有非常多的實踐的,由于時間關系我們不詳細談了,有興趣的同學可以聯系Akamai的同學再討論。

CMAF賦能視頻時代
下面大概看一下使用CMAF的好處:
第一,就是對于播放器的支持。一旦做了分塊化編碼和傳輸之后,有些同學就會說,會不會存在播放器兼容問題。實際上,播放器去取的內容還是分片,只是多了一些頭部信息內容而已,并不會影響播放器的播放。
第二,對于CMAF可以緩存。原來無論是采用RTMP技術還是各種私有化技術,都很難對直播進行緩存,對于資源的占用是非常大的問題。但是在采用分塊化編碼之后,這個問題就很好的解決了,音視頻分片可以緩存復用,可以大大節(jié)省成本。
第三是可擴展性,這個地球的圖,上面的光柱是Akamai在全球各地部署的節(jié)點的情況,一旦采用CMAF技術之后,不止Akamai,很多CDN都可以支持分塊化傳輸。這樣原來由于采用其他技術,而只能在東南亞或者歐美開展業(yè)務的,現在可以真正在全球開展業(yè)務了。

責任編輯:孫云逸