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

相关文章

来自专栏hbbliyong

WPF Trigger for IsSelected in a DataTemplate for ListBox items

<DataTemplate DataType="{x:Type vm:HeaderSlugViewModel}"> <vw:HeaderSlug...

4064
来自专栏张善友的专栏

Miguel de Icaza 细说 Mix 07大会上的Silverlight和DLR

Mono之父Miguel de Icaza 详细报道微软Mix 07大会上的Silverlight和DLR ,上面还谈到了Mono and Silverligh...

2717
来自专栏陈仁松博客

ASP.NET Core 'Microsoft.Win32.Registry' 错误修复

今天在发布Asp.net Core应用到Azure的时候出现错误InvalidOperationException: Cannot find compilati...

4868
来自专栏Ceph对象存储方案

Luminous版本PG 分布调优

Luminous版本开始新增的balancer模块在PG分布优化方面效果非常明显,操作也非常简便,强烈推荐各位在集群上线之前进行这一操作,能够极大的提升整个集群...

3165
来自专栏我和未来有约会

Kit 3D 更新

Kit3D is a 3D graphics engine written for Microsoft Silverlight. Kit3D was inita...

2576
来自专栏C#

DotNet加密方式解析--非对称加密

    新年新气象,也希望新年可以挣大钱。不管今年年底会不会跟去年一样,满怀抱负却又壮志未酬。(不过没事,我已为各位卜上一卦,卦象显示各位都能挣钱...)...

4928
来自专栏跟着阿笨一起玩NET

c#实现打印功能

2792
来自专栏杨龙飞前端

scrollto 到指定位置

2514
来自专栏闻道于事

js登录滑动验证,不滑动无法登陆

js的判断这里是根据滑块的位置进行判断,应该是用一个flag判断 <%@ page language="java" contentType="text/html...

6908
来自专栏pangguoming

Spring Boot集成JasperReports生成PDF文档

由于工作需要,要实现后端根据模板动态填充数据生成PDF文档,通过技术选型,使用Ireport5.6来设计模板,结合JasperReports5.6工具库来调用渲...

1.2K7

扫码关注云+社区