媒体容器新标准—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 条评论
登录 后参与评论

相关文章

来自专栏老秦求学

计算机网络笔记之第一章概述

  如今计算机网络早已融入生活中的方方面面,”互联网+“充斥着我们的生活。那么我们就有必要了解一下网络。  课本:谢希仁《计算机网络(第六版)》  首先,从总体...

3388
来自专栏SAP最佳业务实践

SAP最佳业务实践:FI–应收帐款(157)-11 F-32手动清算客户帐户中的未清项目

4.12 F-32手动清算客户帐户中的未清项目 清算未清的客户项目。例如,如果要清算的项目余额不为零,则可以创建多付/付款不足的剩余项目。 客户帐户中的未清项...

3228
来自专栏腾讯Bugly的专栏

Redex 初探与 Interdex:Andorid 冷启动优化

导语 早在去年10月份,facebook就发布了介绍redex的文章,这个据说可以直接对apk做处理,既提高启动性能,又可减少安装包的利器让安卓开发者们都心动不...

3575
来自专栏加米谷大数据

spark之广播变量设计和实现

但是最新的 spark 版本中, http 的方式已经废弃了(pr 在此https://github.com/apache/spark/pull/10531),...

39012
来自专栏华仔的技术笔记

ipfs数据节点权限控制

1122
来自专栏北京马哥教育

浅谈TCP优化

很多人常常对TCP优化有一种雾里看花的感觉,实际上只要理解了TCP的运行方式就能掀开它的神秘面纱。Ilya Grigorik 在「High Performanc...

3265
来自专栏Windows Community

Windows Developer Day Review

北京时间 3 月 8 日凌晨 1 点钟,今年的第一次 Windows Developer Day 正式召开。 ? ? 因为时间太晚看不了直播,我也是第二天早上在...

3379
来自专栏CreateAMind

汽车CAN协议hacking

作者: Eric Evenchick 翻译:看雪论坛『智能设备应用』版主:gjden

1063
来自专栏AI研习社

用于快速开发 3D 数据处理软件的开源数据处理库 —— Open3D | Github 项目推荐

Open3D 是一个可以支持 3D 数据处理软件快速开发的开源库。Open3D 前端公开了一组用 C++ 和 Python 写成的精心挑选的数据结构和算法,后端...

2635
来自专栏美团技术团队

Android OOM案例分析

在Android(Java)开发中,基本都会遇到java.lang.OutOfMemoryError(本文简称OOM),这种错误解决起来相对于一般的Except...

4294

扫描关注云+社区