媒体容器新标准—CMAF

1. 视频流量持续走高

随着移动互联网的快速发展,数据流量呈现出爆发式的增长,互联网传输的视频流量也呈爆炸性增长,预计未来几年将持续增长。根据2017年思科预测,到2021年,如果要看完全球IP网络上每个月的视频,需要花费500多万年的时间,IP视频流量将占所有消费者互联网流量的82%,63%的总IP流量将转移到无线和移动设备,IP连接设备的数量将是全球人口的三倍。

图1 思科网络流量预测

如此良好的市场发展前景自然吸引了各个平台的争相竞争,中国网络视频服务市场空前繁荣,媒体、社交、电商等企业纷纷进军该行业,市场继续保持增长。

2. CMAF的提出背景

目前MPEG已经发布了几个规范来尝试解决这个问题,其中包括CMAF。CMAF是Common Media Application Format的缩写,由微软、苹果联合MLBAM、思科、Akamai和Comcast在2016年2月向动态图像专家组(MPEG)提出,并在今年7月被批准成为国际标准。CMAF是一种可扩展的编码标准,通过指定一致的媒体包装和加密来实现内容和设备之间的互操作性。

图2 CMAF标准

要理解CMAF如此重要的原因,可以首先了解视频如何传送。虽然今天几乎所有的流媒体视频都是使用标准化的编码技术进行压缩的,文件必须是包裹在另一层被称为“容器”的信息中。容器为这些文件添加时间信息,以便它们可以在目的地同步,以及一些额外的元数据 - 即关于文件包含的信息。而这些容器是不规范的。例如,苹果的HTTP实时流传输(HLS)协议将数据封装或封装成MPEG-2传输流(“TS”容器格式),而MPEG-DASH使用MPEG-4容器(“ISOBMFF”容器格式)。

这种差异意味着即使最终播放的实际媒体格式相同,由于不同的封装格式,需要创建不同的封装格式版本。OTT服务提供商必须在视频传输流之前这样做,在这种情况下,它需要大量的存储空间,因为需要创建和存储所有不同的版本,这需要额外的处理能力来在传输时重新打包和封装介质。

而CMAF是一个标准化的容器,可以同时容纳视频和音频文件,且并不会对现有编码格式进行任何改变。

图 3 CMAF 序列组成结构

3. CMAF系统模型

CMAF序列(CMAF Tracks)包含存储在CMAF指定的容器中的编码的媒体样本,包括音频,视频和字幕, 由一个CMAF头片段和其后的包含媒体样本的CMAF切片组成。CMAF序列包含存储在CMAF指定的容器中的编码的媒体样本,包括音频,视频和字幕,源自ISO基本媒体文件格式(ISOBMFF)。

CMAF切片(CMAF Fragments)可以独立解码和解密,并结合相关的CMAF头文件。

CMAF交换集(CMAF Switching Sets)包含可以在CMAF片段边界处切换和拼接的备选CMAF序列,以不同的比特率和分辨率自适应地流传送相同的内容。

CMAF选择集(CMAF Selections Sets)包含选择替代内容的可选CMAF切换集,例如,不同的语言或角度,可选的编码,或不同的编解码器。

CMAF可寻址媒体对象(CMAF Addressable Media Objects)被指定用于CMAF序列存储和传送,包括CMAF Chunks(小于CMAF切片),CMAF Segments(一个或多个CMAF切片)和CMAF Tracks Files(一个完整的CMAF Track)。

CMAF假设模型(CMAF Hypothetical Reference Model)定义了CMAF文件如何在CMAF播放器中传递,组合和同步CMAF序列,且允许任何兼容的实现,包括广播和MPEG-DASH自适应流媒体。

图 4 CMAF系统模型示意图

这样看来,CMAF格式与MPEG-DASH有着很多的相似点,但DASH需要MPD文件,CMAF却没有定义一个manifest文件。下面具体比较一下DASH和CMAF的结构区别。

图5 DASH协议文件组织结构

如图5所示,一个MPD文件包含多个periods,每个period可能包含多个adaptation sets且每个adaptation set可能包含多个representations,其提供了实际segment存放的URL地址。而CMAF中的presentation即相当于DASH中的period,但这在CMAF的定义中并没有任何概念。每个CMAF的presentation可能包含多个CMAF selection sets,例如编解码方式,字幕语言等。每个selection set可能包含多个track,并重命名为switching set。它的功能类似于DASH中的adaption set。DASH中的初始化切片对应的是CMAF中的Header文件。具体结构如下所示。

图6 CMAF组织结构

可以看出,CMAF将每个切片分成了更小的chunk单位,每个chunk结束后可以直接播放,可以实现降低延迟的功能。

4. CMAF特点解析

4.1通用加密性

CMAF对在不同的保护设备下不同的DRM系统使用通用性加密。与标准HTML5 API兼容,增强了应用程序的互操作性。

4.2.自适应性

CMAF定义可互操作的CMAF媒体配置文件。这些媒体配置文件指定解码和所需的编码和编码规则,以及确保动态自适应流所需的无缝跟踪转换的需求,交换集可以在CMAF切片边界处切换和拼接备选的CMAF序列,以不同的比特率和分辨率自适应地流传送相同的内容。

4.3可拓展性

CMAF是可扩展的。媒体配置文件可以通过引用标准的CMAF切片、序列和切换集来定义,这些格式在核心标准中定义,与媒体文件特定的编解码器以及ISOBMFF的编码相互约束。

4.4独立性

CMAF切片的编码和解码CMAF媒体资料独立于传输方法,可以独立解码和解密。

4.5低延时性

CMAF把每个切片切成更小的chunk单元,因此编码器可以在完成一个chunk单元后就传输给CDN和播放器去处理。既可以保证极低延时的传输,同时还不影响CDN缓存的效率,CMAF可以同时储存多种协议的播放列表,所以CMAF大大降低了编码和存储成本、提高了CDN的缓存效率,从而降低延时。

4.6无缝切换性

CMAF交换集控制各种单向的缓冲和译码器开关,使内容可以在大多数的设备和浏览器中无缝切换。

4.7兼容性

CMAF可以在数以亿计的网络设备上应用,例如Web浏览器中的播放器,或设备自带的播放器。该模型允许使用任何兼容的实现,包括广播和MPEG DASH自适应流媒体。

5. CMAF技术总结

CMAF切片编码允许随着每个CMAF切片完成编码和打包而逐渐递送CMAF片段请求,而不是等待对片段中的所有样本进行编码和打包。稍后的请求或未优化的系统将响应请求而接收单个片段。

CMAF规定每个CMAF片段包含解码所需的元数据,并根据CMAF序列、切换集、选择集和播放器的规则进行处理和播放。允许每个播放器在回放过程中选择和组合序列,在一个单独的CMAF序列中存储每个媒体组件,并指定如何对齐和同步CMAF序列。每个播放器可以选择并下载符合CMAF选择集的不同媒体内容,如各种语言、编解码器、比特率和视频分辨率,并针对不同的用户、设备和网络条件进行优化。

CMAF切片可由具有不同比特率,分辨率和编解码器的各种播放器使用播放。由于每个CMAF切片只被存储和缓存一次,因此可以更有效地利用网络带宽,存储和缓存。

CMAF采用了一种低延时chunk模式。目前的播放器需要拿到一段视频切片后才能播放,但CMAF可以把每个切片切成更小的chunk单元,因此编码器可以在完成一个chunk单元后就传输给CDN和播放器去处理。最终,这种方式既可以保证极低延时的传输,同时还不影响CDN缓存的效率,让其可以更好地去扩展,以减少实时流的显示延迟。

6. 前景期望

市场前景的看好便意味着竞争的日趋白热化,而视频的传输与播放质量将是OTT视频服务商生存和发展的关键。CMAF的出现也许为OTT视频的低延时传输带来了更光明的未来,随着视频终端商、分发商都开始支持CMAF,CMAF的使用或许也将成为OTT视频服务提供商成功的又一关键所在。CMAF通过创建一个标准的容器或封装格式来寻求突破,我们对这个新标准所期望的是,一个更加均匀的环境,一个能大大简化设置服务的新标准。

[1] Cisco Visual Networking Index: Global Mobile Data Traffic Forecast Update, 2016–2021 White Paper

[2] Common Media Application Format (CMAF)-MPEG White Paper

[3] What is CMAF? Threat or Opportunity? – Bitmovin Blog

原文发布于微信公众号 - 媒矿工厂(media_tech)

原文发表时间:2017-12-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏BestSDK

用户不填表?那是因为你没用好这7个设计准则

无线端用户使用移动应用程序或网站都有一个特定的目标。通常情况下,站在用户和他的目标之间都会有一个交互形式 – 。实际情况中,表单被认为是用户使用链路中达到目标的...

2506
来自专栏牛客网

网易java后台实习生面试面经

1430
来自专栏AI研习社

如何在 i5 上实现 20 倍的 Python 运行速度?

Intel Distribution for Python 在今年二月进行了更新——英特尔发布了 Update 2 版本。以“加速”为核心的它,相比原生 Pyt...

35713
来自专栏iOSDevLog

WWV 2018年十大必看视频

我们汇集了十大WWDC 2018视频列表,涵盖了您需要知道的一切,包括Core ML,Siri Shortcuts,ARKit 2等等!

822
来自专栏啸天"s blog

高利率撸9位数QQ

1154
来自专栏WeTest质量开放平台团队的专栏

不修漏洞触犯刑法——一个int类型引发的游戏漏洞

下面转载原文:“网络服务提供者不履行法律、行政法规规定的信息网络安全管理义务,经监管部门责令采取改正措施而拒不改正……处三年以下有期徒刑、拘役或者管制”。

711
来自专栏即时通讯技术

微信团队分享:微信Android版小视频编码填过的那些坑

Android端的视频相关的开发,大概一直是整个Android生态,以及Android API中,最为分裂以及兼容性问题最为突出的一部分。摄像头,以及视频编码相...

1322
来自专栏非典型技术宅

iOS传感器:使用陀螺仪完成一个小球撞壁的小游戏1. 陀螺仪介绍2. 陀螺仪的使用3. 开始我们的小游戏

1154
来自专栏肖洒的博客

基于Python的微信好友分析

“如果我比别人看得远,那是因为我站在巨人的肩膀上”–不知道牛顿说了没 本文利用Python3的itchat包简单的分析了一下自己的微信好友。

672
来自专栏AI科技评论

开发 | 如何在 i5 上实现 20 倍的 Python 运行速度?

Intel Distribution for Python 在今年二月进行了更新——英特尔发布了 Update 2 版本。以“加速”为核心的它,相比原生 Pyt...

3806

扫码关注云+社区