2018年11月13-14日,第七届GFIC全球家庭互联网大会在上海隆重召开,本届大会以“+连接,再创新”为主题,共设12大主题论坛:GFIC全球家庭互联网领袖峰会、GFIC亚太CDN年会领袖峰会、4K超高清论坛、IPTV创新论坛、视频加速论坛、OTT领袖峰会、家庭大屏营销论坛、融合CDN论坛、跨境加速论坛、亚太物联网峰会、智慧家庭AIoT论坛、5G车联网论坛。在11月13日下午举行的视频加速论坛上,Akamai Technologies资深技术顾问周德振做了题为《采用CMAF构建全球体验一致的低延时直播》的主题演讲。
图为Akamai Technologies资深技术顾问周德振现场演讲图片
Akamai成立于1998年,是国际上最早开始做CDN的公司。据悉,Akamai是目前全球最大的CDN厂商,但在国内相对比较低调一点,原因在于它是以服务出海的中国企业为主,其中包括一些游戏、电商、短视频、直播,此外,除了CDN 业务还为客户提供安全解决方案。今天,我将跟大家分享的话题是关于直播领域的。我将用二十分钟的时间给大家讲清楚一件事,那就是如何使用CMAF技术来实现低延时直播。值得注意的是,Akamai是能做到全球化低延时直播的企业之一,比如大家所熟知的奥运会和世界杯,每届赛事的直播Akamai都是重度参与者,为全世界的观众带来低延时的直播体验。
什么是低延时?
低延时,我们指的是从视频的采集到编码到注入,经过分发再到用户播放器播放这么一个过程的低延时。传统场景里上,我们只在部分语音和体育赛事的直播场景下获得低延时。
目标:1到6秒!
虽然互联网有了一定的发展,更多的低延时解决方案相继出现,但是其技术上依然存在局限性。传统上比较容易实现的网络直播,是通过我们这上面写的分片方式来实现的,但是这里有个问题存在于,分片长度与播放器的播放行为之间存在关联性,分片的长度影响了播放的时延。从目前来看,技术上很难达到通过依靠减小分片长度的方式做低延时。今天,我们想讲的一个话题叫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两种协议之间存在一些区别,HLS里面有一个大家比较熟悉的文件叫M3U8,它为播放器带来所播放的称之为TS分片的视频文件。TS分片是语音和视频合成的,单独下载一个TS分片就可以很好的播放相应的视频和语音。而DASH使用的是mpd文件,它是音频、视频各自分开的分片。由于两者之间不兼容,导致在需要同时支持HLS和DASH的场景下,一个视频必须被处理成两种不同的方式。
CMAF为了解决以上这种对于资源的浪费,发明了可以同时支持HLS协议和DASH协议的播放模式,也就是把TS分片和DASH的语音视频分片统一成CMAF分片方式。而他的神奇之处就在于相比于传统播放模式,CMAF可以不把整个分片下载下来再播放,而是通过分块方式,只要播放器获得分片里面的分块就立即播放,从而从理论来说可以达到低延时的效果。
CMAF低延时直播
1.分发角度
在Encoder编码阶段支持了分块化的音视频分片生成,通过CDN进行传输时使用HTTP1.1的Chunk delivery方法,这样才能够达到低延时效果,如下图所示,Akamai在波士顿的办公室实时直播窗外景象,两路直播分别使用传统分片方式,和CMAF分块化的分片方式对比,可见CAMF轻松把延时降低了4秒。
2.网络层面
从上面这个图看网络传输情况,你会发现传统的未分块的分片式传输里,网络传输的行为是突发性的。实际上TCP传输过程里,因为CDN节点是共享而不是独自占用的资源的,那会带来一个问题:一旦你空下来在你没有传输的时间段里,资源会被其他TCP传输占用,等你有了传输的时候,TCP传输慢慢再次启动,所以很难达到比较好的传输效果。而对于分块式传输你会发现一直都有内容在传输,效率明显比较高,这是从网络层面看。
3.分块化的分装
分块化传输以后可能大家想问,这会不会增加传输量的问题。实际过程里,因为语音文件本身比较小,可能会增加比例比较高的文件的尺寸,而对于视频来说,占用比还是比较低的。作为厂商来讲你的用户使用CMAF的话,在计费的情况下,有些用户会看payload值和你对费用,那么就会和CDN的带宽算起来有一定差异,这个是值得注意的问题。
同时,在播放器上我们也发现了一些值得关注的问题,比如说对于分块化的传输,分片下载时间通常就等于分片的时间长度,那么播放器会认为吞吐就是带宽值,从而在播放器的带宽预测算法上出现误判,需要我们训练播放器智能处理这种情况。对于播放器在这个技术里面还是有非常多的实践的,由于时间关系我们不详细谈了,有兴趣的同学可以联系Akamai的同学再讨论。
CMAF赋能视频时代
下面大概看一下使用CMAF的好处:
第一,就是对于播放器的支持。一旦做了分块化编码和传输之后,有些同学就会说,会不会存在播放器兼容问题。实际上,播放器去取的内容还是分片,只是多了一些头部信息内容而已,并不会影响播放器的播放。
第二,对于CMAF可以缓存。原来无论是采用RTMP技术还是各种私有化技术,都很难对直播进行缓存,对于资源的占用是非常大的问题。但是在采用分块化编码之后,这个问题就很好的解决了,音视频分片可以缓存复用,可以大大节省成本。
第三是可扩展性,这个地球的图,上面的光柱是Akamai在全球各地部署的节点的情况,一旦采用CMAF技术之后,不止Akamai,很多CDN都可以支持分块化传输。这样原来由于采用其他技术,而只能在东南亚或者欧美开展业务的,现在可以真正在全球开展业务了。