HEVC支持苹果HLS的几个关键问题

简介: 尽管HEVC面临了一些棘手的状况,AV1和国产AVS2连续发起攻势,苹果加入AV1背后的AOM联盟,AVS2发布了开源版xAVS2......但在苹果的封闭系统内,HEVC+HLS仍然是当下最佳的音视频方案。

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1

尽管HEVC面临了一些棘手的状况,AV1和国产AVS2连续发起攻势,苹果加入AV1背后的AOM联盟AVS2发布了开源版xAVS2......但在苹果的封闭系统内,HEVC+HLS仍然是当下最佳的音视频方案。Jan Ozer撰文对HEVC在苹果设备上支持实现进行了解读,LiveVideoStack对本文进行了摘译,点击『阅读原文』访问英文原文。


文 / Jan Ozer

译 / Ant,鸿蒙


2017年的苹果WWDC大会上,苹果宣布HEVC支持HLS,涉及了iOS、MacOS和tvOS等系统终端。但任何升级改进都是一个过程,这里整理了开发者最关心的问题。


1.哪些设备支持HEVC播放?


所有预装或升级到iOS 11的苹果终端。


2.HEVC回放耗电吗?


在之前的文章中,我们测试发现,除了一些最老的设备存在明显的耗电问题,大部分最新的产品使用HEVC回放几乎不会对电池造成影响。


3.HEVC对我有什么好处?


节省带宽:一般而言,在1080P分辨率下,HEVC相比于H.264有近50%的带宽节省,很多OTT运营商的数据也证明了这一点。你可以通过查看服务器日志文件,来了解细节。


画质体验(Quality of Experience,QoE)提升:通过下表1可以看到,基于VMAF评测指标对比,VMAF得分相差无几的情况下,HEVC的码率比H.264减少50%左右。


640?wx_fmt=jpeg

表1:HEVC与H.264 QoE对比


VMAF得分由6个或更多的易观察的画质差异方面(JND)组成,JND代表这75%的观众能够察觉到差异。


高动态范围(HDR):HDR能带来更接近真实世界的观看体验,HEVC支持HDR,但这还需要显示设备的支持。


4.HEVC的成本有哪些?


编码和存储成本:很显然,您必须将视频编码为HEVC格式。如果您自己进行编码,则必须计算购买和维护额外编码平台的成本(如果需要)。如果您在云端进行编码,则成本将因编码梯度数量以及分辨率和数据速率而异。在大批量的情况下,每级梯度的编码成本应该能够控制在20美元/小时以下。但您可能还会因为其他目的使用H.264格式进行编码,所以一般成本会高于上面测算的。在服务器上的存储成本也可作如上的分析。


PPV和订阅服务的使用费:如果您正在分发订阅内容或PPV视频,您可能已经在MPEG LA H.264专利池中为H.264使用付了费。HEVC有三个专利池,分别是MPEG LA、HEVC Advance和Velos Media。 详情可见图1,这是Divideon公司的Jonatan Samuelsson2017年11月在Streaming Tech Sweden演示中的图片。


640?wx_fmt=jpeg

图1:HEVC IP 所有者和专利池


在这三个专利池中,MPEG LA的许可条款不包括内容使用费,HEVC Advance在2018-2019年对每个用户的收费是每月0.015美元。 Velos Media尚未公布任何建议版税条款,但截至2017年11月28日,该网站的Q&A显示:“由于涉及媒体内容,我们将花时间充分了解整个生态系统的动态构成,以确保我们的模型最好地支持HEVC技术的升级和采用。“因此,涉及内容的使用费问题可能也在考虑之中了。


对于左下角那些尚未加入专利池的公司,我们不好说他们是否计划收取与内容相关的使用费。可以说,流媒体制作商还没有跳上HEVC / HLS这趟列车的其中一个可能的原因,就是与内容相关的使用费收取问题还存在很多不确定性。


播放器开发成本:如果只是在iOS和MacOS的浏览器中回放,开发成本可以降到最低。但如果开发原生的App,那么成本会增加。


5.我应该了解哪些关键文档?


你应该了解以下两个来源的文档:


  • HLS Authoring Specification for Apple Devices(https://developer.apple.com/library/content/documentation/General/Reference/HLSAuthoringSpec/index.html#//apple_ref/doc/uid/TP40016596-CH4-SW1)。这里有最全的HEVC的使用说明。

  • Go2SM(go2sm.com/hlsexamples),这里也是苹果官方提供的HLS的demo,比官方文档有更多细节。


6.我知道如何用H.264编码,如果用HEVC还需要知道哪些?


如果您了解H.264编码,那么您在使用HEVC时就比较得心应手了。 HEVC与之前的H.264和MPEG-2非常类似,大部分关于数据速率、关键帧间隔、比特率控制和其他常见配置选项都非常相似。与H.264一样,HEVC具有不同的配置文件,其中Main和Main 10两个是用于配置HLS的。顾名思义,Main10以8位或10位比特深度编码,而Main仅为8位。 这两种HLS都可以处理,但是要注意您生成的HDR输出主要是Main 10格式的。请注意,如果您在HLS编码方面是新手,那么您可以好好学习编写规范中关于直播和VOD流比特率控制的详细规则。


大多数编码器在复杂性和质量之间会有一些折衷。例如,x265编解码器使用与x264相同的预置(ultra fast到placebo),而MainConcept使用从1到30的多个层次。一旦你熟悉了编解码器/编码器的这些控制,就可以让其达到比较理想的状态。


7.HEVC的使用环境要求


这些要求大致分为三大类:


HEVC编码文件:HLS编写规范规定:“HEVC的Profile,Level和Tier必须小于或等于Main10的Profile,Level 5.0,High Tier。”表2显示了the Wikipedia HEVC页面 的级别和层级限制。 值得一提的是,虽然您可以以高达每秒128帧的帧速率对1080p视频进行编码,但4K分辨率却限制在30 fps或更低。 请注意,HLS编写规范禁止所有编解码器的帧频超过60 fps。


640?wx_fmt=jpeg

表2:HEVC编码的级别和层级限制


编写规范中另一个值得注意的要求是“HEVC视频的容器格式必须是fMP4”,或者是分段的MP4文件,这意味着MPEG-2传输流不再使用了。这应该能够简化将未加密的HEVC编码视频传递到DASH和HLS客户端,因为两者都能够部署相同的比特流。从短期来看,PlayReady和FairPlay加密方案之间的差异可能会妨碍加密的fMP4内容与DASH和HLS端点的互操作性,尽管微软已经承诺在2018年PlayStation 4.0发布时解决这个硬件设备兼容性的问题。


HLS编写规范包含两个比特率梯度,一个用于视频文件,另一个用于拖放和扫描的特技播放(trick play)文件。视频比特率梯度如图4所示。请注意,建议的比特率梯度表明2K和4K分辨率视频的帧速率与源视频相同,也与所有其他即使低至540p分辨率的视频的帧速率相同。


但是,如果您使用的是60 fps 4K的视频源,则前面提到的Level 5规则会将其限制在30 fps,如表2所示。不幸的是,苹果公司没有发布任何带有2K / 4K视频的HLS示例,这些示例可能会解决这种表面上的不一致性。在真正得到解决之前,我推荐使用保守路线,将2K和4K HEVC视频限制在30 fps。


H.264编码文件:如上所述,编写规范要求一些视频应该用H.264编码,但没提供进一步的指导。所以我们看了一下苹果公司开发者网站上的混合HEVC / H.264梯度,看到苹果公司为HEVC和HLS提供了完全独立的编码梯度(每个梯度都有9个梯级,正如表3所规定的那样),两种格式中支持的最高分辨率都是1080p。通过查看主M3U8 manifest清单文件,我们发现,播放器首先选择编解码器,然后选择适当的梯级(请注意Apple播放列表对梯级(rungs)的称呼是“齿轮”(gear))。


640?wx_fmt=jpeg

表3:苹果公司建议的H.264,HEVC和HDR的编码梯度


有趣的是,在苹果公司发布其示例之前,对于HEVC / H.264梯度的最优构成有多种理论,包括一个为H.264提供较低质量梯级(rungs)的梯度,以及用于较高分辨率梯级的HEVC。在本次会议上,RealEyes的几位与会者和两位提供商表示,任何基于软件的播放器都很难在H.264和HEVC播放之间顺畅地切换,这更倾向于支持苹果的方法。显而易见的缺点是,它会使编码成本加倍,并大幅增加存储成本。


在其他成熟方法推出之前,我建议还是采用苹果公司的方法。同时,建议下载Master M3U8文件,研究其中的编码和演示细节。


支持I-Frame / Trick Play:苹果公司在iOS 5中添加了对视频在播放窗口或者作为缩略图时快进和快退形式的特技播放(Trick Play)的支持,并在Apple Technical Note TN2288中详细说明如何创建I-frame播放列表以支持此功能。在TN2288中,苹果公司表示:“您不需要自己来开发内容支持快进和快退播放。你需要做的就是指定I-frame的位置就可以了。 I-frame或者叫Intra-frame,都是编码不依赖于任何其他帧的已编码视频帧。要指定I-frames的位置,iOS 5引入了一个新的I-frame播放列表。“根据TN2288,您不需要为支持特技播放创建单独的编码文件,只需在现有的内容文件找到指向I-frame的播放列表即可。


在HLS编写规范中,苹果公司修改了这一建议,指出:“你应该每秒钟有一帧”密集“的I-frame格式。这些是只包含I-frame的专用格式。或者您可以使用普通内容中的I-frame,但特技播放性能会随着I-frame密度的提高而提高。


该规范还指出:“如果您为常规视频提供相同空间分辨率的多个比特率,那么您应该从该组中用于最低比特率的相同的视频源创建该分辨率的I-frame播放列表”。苹果公司提供了表4所示的建议编码梯度。如您所期望的那样,苹果公司的样本演示实现了这些提议,在所有建议的分辨率下都为H.264和HEVC提供单独的I-frame编码文件。


640?wx_fmt=jpeg

表4:HLS编写规范建议的特技播放编码梯度


根据我的统计,在H.264和HEVC内容和I-frame-only文件之间,苹果公司将源视频编码为28个单独的文件,这可能会压缩一些制作商的预算。对于4K制作商尤其如此。苹果公司的梯度不包括2K / 4K的迭代,因为它们编码成本最高,并且还要将总编码需求扩大到31个文件,甚至HDR可能还需要17个。


在会议期间,这些要求引起了与会者的重视和讨论,这里面包括许多多年来一直从事制作HLS演示文稿的参会者。大多数人表示,他们只提供了一到两个特技播放文件,很少是包含所有分辨率的,并且大多数指向现有文件中的I-frame,而不是编码单独的I-frame-only文件。生产商将不得不做出自己的成本/收益分析来决定最佳的方案。


8.我应该严格遵守苹果的建议参数吗?


有时候,在编写规范的最后一到两次修订的版本中,苹果公司会针对per-title编码实现指出“上述比特率是通过HLS交付的典型内容的初始编码目标。我们建议您根据您的具体内容和编码工作流程对其进行评估,然后进行相应的调整。“因此,苹果公司并没有规定固定的编码梯度。


除了数据速率之外,如果你研究苹果公司的梯度,你会注意到,对于2K以下的所有梯级,HEVC和H.264的分辨率基本相同。在会前会议上,一位技术精湛的与会者表示,对于HEVC,苹果公司的梯度应该有完全不同的梯级,以解决高分辨率视频需要更高效编解码器的问题。一篇题为“苹果公司错了:HLS中的HEVC编码规范”的文章对此作出了分析。


长话短说,文章提出HEVC的最佳梯度会去掉几个较低分辨率的梯级,并迫使较高分辨率梯级降低位置。表5左边显示了苹果公司建议的梯度,右边是一个更为优化的梯度(为动画电影“Sintel”定制),VMAF评分则评估两种选择的质量。如果您的目的是获得最佳的体验质量(QoE),那么使用Should Be梯度会比苹果公司指定的Was梯度获得更好的效果。


640?wx_fmt=jpeg

表5:左边是苹果公司的HEVC编码梯度,右边是推荐的编码梯度


9.我的直播选项是什么?


直播虽然刚刚起步,但正在迅速推出,演示材料列出了Bitmovin,Elemental,Harmonic和Hybrik的编码器,以及Wowza和Nimble Streamer的转码解决方案。 对于开发人员级别的制作者,MulticoreWare、MainConcept和Beamr都有SDK,并且讲义详细介绍了如何使用FFmpeg和Bento4产生视频输出。


10.编写规范怎么看待高动态范围(HDR)?


编写规范指出,HDR视频必须编码为HDR10或DolbyVision,HDR编码流应提供所有分辨率。如果您提供HDR内容,您还应该为主视频文件和特技播放文件以及H.264内容提供SDR内容,从而将视频流的单个文件数量提升至数十个之多。


请注意,苹果公司还没有提供一个带有HDR的示例文件,留下了一些没有回答的问题,比如所需的H.264内容是否也可以用作SDR内容,或者制作者是否也应该提供单独的HEVC编码的SDR流(和特技播放文件)。我猜测苹果公司总是会通过提供最广泛(和昂贵的)的方法来满足编写规范中规定的要求,让开发者根据成本和所需的体验质量选择他们自己的配置。


HEVC在HLS中虽然还是前期,但相关的话题和技术将快速展开。希望这些问题和回答能帮助你快速上手。

WebRTCon 2018 7折火热报名


WebRTCon希望与行业专家一同分享、探讨当下技术热点、行业最佳应用实践。如果你拥有音视频领域独当一面的能力,欢迎申请成为讲师,分享你的实践和洞察,请联系 speaker@livevideostack.com。


点击阅读原文了解大会详情。

640?wx_fmt=png

相关文章
|
3月前
|
Web App开发 网络协议 Android开发
Android平台一对一音视频通话方案大比拼:WebRTC VS RTMP VS RTSP,谁才是王者?
【9月更文挑战第4天】本文详细对比了在Android平台上实现一对一音视频通话时常用的WebRTC、RTMP及RTSP三种技术方案。从技术原理、性能表现与开发难度等方面进行了深入分析,并提供了示例代码。WebRTC适合追求低延迟和高质量的场景,但开发成本较高;RTMP和RTSP则在简化开发流程的同时仍能保持较好的传输效果,适用于不同需求的应用场景。
198 1
设计并实现同时支持多种视频格式的流媒体点播系统
设计并实现同时支持多种视频格式的流媒体点播系统
171 0
|
缓存 监控 算法
开发个好的RTMP播放器到底难在哪里?RTMP播放器对标和考察指标
好多开发者提到,RTMP播放器,不知道有哪些对标和考察指标,以下大概聊聊我们的一点经验,感兴趣的,可以关注 github: 1. 低延迟:大多数RTMP的播放都面向直播场景,如果延迟过大,严重影响体验,所以,低延迟是衡量一个好的RTMP播放器非常重要的指标,目前大牛直播SDK的RTMP直播播放延迟比开源播放器更优异(大牛直播SDK延迟在1秒左右,开源播放器如VLC,延迟在5-7秒),而且长时间运行下,大牛直播SDK播放端不会造成延迟累积,开源或第三方播放器,长时间运行,容易产生延迟累积;
199 0
|
编解码 开发工具 C#
RTSP/RTMP播放端录像不可忽视的几个设计要点
很多开发者提到,拉取的摄像机(一般RTSP流)或RTMP流,如果需要录制,需要考虑哪些因素,本文以大牛直播SDK的Windows平台拉流端录像为例(github),做个简单的介绍:
173 0
|
应用服务中间件 nginx Windows
13、在线学习HLS
录播课程的在线学习功能: 1、学生可以在windows浏览器上在线观看视频。 2、播放器具有快进、快退、暂停等基本功能。 3、学生可以方便切换章节进行学习。
127 0
HLS开发学习-14- Vivado HLS 函数层面的优化
HLS开发学习-14- Vivado HLS 函数层面的优化
352 0
HLS开发学习-14- Vivado HLS 函数层面的优化
HLS开发学习-15- HLS优化指令汇总
HLS开发学习-15- HLS优化指令汇总
357 0
HLS开发学习-15- HLS优化指令汇总
|
存储 算法 openCL
HLS开发学习-01-HLS介绍与FPGA简单内部介绍
HLS开发学习-01-HLS介绍与FPGA简单内部介绍
497 0
HLS开发学习-01-HLS介绍与FPGA简单内部介绍
|
算法 Serverless 调度
HLS开发学习-02-HLS工作机制
HLS开发学习-02-HLS工作机制
390 0
HLS开发学习-02-HLS工作机制
|
测试技术
HLS开发学习-08- Vivado HLS下C_C++测试平台的基本架构
HLS开发学习-08- Vivado HLS下C_C++测试平台的基本架构
223 0
HLS开发学习-08- Vivado HLS下C_C++测试平台的基本架构