尽管 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% 左右.
表 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 演示中的图片.
图 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.
表 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)).
表 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 编码文件.
表 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 梯度获得更好的效果.
表 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.
点击阅读原文了解大会详情.
来源: https://mp.weixin.qq.com/s?__biz=MzU1NTEzOTM5Mw==&mid=2247485135&idx=1&sn=3165710177ba6b0a0c70439b58f3cb7b&chksm=fbd9aee1ccae27f791baf7e2b7575e00f4b58381b76f8cf4353bd84af23ea17d04280e0a9e04#rd