苹果错了:HLS中HEVC的编码规格
当苹果发布编码规范时, 大多数制作人(包括我自己)倾向于给予它们很大的重视. 毕竟, 苹果发明了HTTP 在线直播 (HLS), 并生产了大多数本机播放该格式的设备. 苹果比任何人或任何其他公司都更了解HLS及其设备. 虽然这让苹果公司非常可信,但这并不意味着该公司绝对可靠.
虽然我一开始没认出来, 苹果发布了HEVC和HLS的编码规范, 他们弄错了, 不过,一位真正的编码专家的评论帮助我认识到了这一点. 更多关于专家的身份,以及更详细的技术解释,见下文.
故事是这样的. 表1 为HEVC和H.264编码推荐 苹果设备HLS创作规范 从1080p及以下. 虽然数据速率在H.264和HEVC,分辨率是一样的.
然而,由于HEVC可以合并更大的块大小,并且与H相比具有其他技术优势.264,分辨率应该不同. 具体地说, 你应该在梯子的更深处使用更大的分辨率,并消除最低的两三个分辨率. 我将使用Netflix首次宣布他们的标题编码技术时推出的流程来证明这一点.
![applewrong1](http://dzceab466r34n.cloudfront.net/Images/ArticleImages/InlineImages/120107-Apple_wrong_figure1-ORG.png)
表1. SD-HD在苹果的HLS编码阶梯上的阶梯
寻找最优阶梯
在最简单的层面上, Netflix通过以多种分辨率和数据速率对源文件进行编码,并计算每种编码的VMAF分数,从而找到最佳编码阶梯. 我把它展示在 表2,这是1080p版本的一系列编码 钢铁之泪. 在每个数据速率下,绿色的条目是测试迭代的最高质量. 使用这些数据, 您可以通过首先选择每次运行的数据速率来构建编码阶梯, 然后选择在该数据速率下提供最佳质量的分辨率.
看着梯子, 你可以将1080p的速率降低到3800 Kbps, 然后720p到1400kbps, 在100kbps的情况下,270p版本实际上比234p版本提供更高的质量. 如果我关注H.本文264, 我建议把234p的梯级换成270p的, 但我只关注HEVC.
![applewrong2](http://dzceab466r34n.cloudfront.net/Images/ArticleImages/InlineImages/120108-Apple_wrong_figure2-ORG.png)
表2. 寻找最优的编码阶梯 钢铁之泪 使用H.264
表3 表示相同的H.左边是264分析,右边是HEVC分析. 这里你可以看到HEVC, 从1080p降至2000kbps, 720p降至500kbps, 然后消掉下面的三个梯级.
为什么H.264不同于HEVC? 以下是非技术性的描述. 在编码阶梯中, 我们在原始分辨率的基础上进行缩放,以最大限度地减少降低视觉质量的压缩工件. 然而, 缩放到较低的分辨率会导致细节丢失和混叠,这也会降低质量. 在每个梯级上,我们平衡了与缩放和压缩工件相关的细节损失. 同样,因为HEVC是一种优于H的编解码器.264,它允许你缩放更小,改善细节,同时仍然避免压缩伪影. 出于这个原因, 您应该在编码阶梯的更深处使用更高的分辨率,并完全避免使用最低的分辨率.
![applewrong3](http://dzceab466r34n.cloudfront.net/Images/ArticleImages/InlineImages/120109-Apple_wrong_figure3-ORG.png)
表3. 用H选择最优比特率阶梯.264(左边)和HEVC(右边). 点击上图查看全尺寸表格.
表4 显示了使用表3建议的阶梯而不是遵循Apple指南的VMAF分数的总改进. 具体地说, “Was”列显示了苹果推荐的分辨率以及在该分辨率下编码的文件的VMAF分数, 而“应该是”列显示了表3(右侧)建议的分辨率和相关的VMAF分数. “Delta”是与“Should Be”编码阶梯相关的VMAF分数的改进. 请注意,当目标数据速率介于两个数字之间时, 我四舍五入到最接近的值(所以对于145 Kbps,我使用100 Kbps的结果), 对于1700 Kbps,我四舍五入到1800 Kbps.
看看表4中的数字, 您可以看到,更显著的差异是在较低的等级,在那里,较高的分辨率保留了更多的细节. 因为HEVC是更好的编解码器,这不会像H那样被压缩伪影所抵消.264.
![applewrong4](http://dzceab466r34n.cloudfront.net/Images/ArticleImages/InlineImages/120110-Apple_wrong_figure4-ORG.png)
表4. 采用表3建议的HEVC阶梯提高VMAF评分 钢铁之泪
和H一样.264,推荐后者会根据内容变化. 表5 显示了动画视频的HEVC阶梯 Sintel, 这意味着一个将1080p分辨率部署到1400 Kbps的阶梯, 720p降至400kbps, 等等......, 再消去下面的三个梯级.
![applewrong5](http://dzceab466r34n.cloudfront.net/Images/ArticleImages/InlineImages/120111-Apple_wrong_figure5-ORG.png)
表5. 的推荐编码阶梯 Sintel
表5所示的结果反映了合成内容的事实, 比大多数真实世界的视频都要多. 包含细节和锐利的边缘,在更高的分辨率下保持更好的质量. 在对这些视频进行编码时, 还有屏幕截图, PowerPoint-based视频, 和其他合成物, 你几乎总是在大分辨率下比在低分辨率下得到更好的结果.
表6 计算表5中建议的编码阶梯比Apple的建议提供了多少额外的质量. 当考虑到观众实际感受到的影响时, 请注意,6分的VMAF差等于“只是明显的差异”,即 由IEEE定义 即75%的观众更喜欢A视频而不是B视频,反之亦然. 因此,表中所示的差异绝对值得研究.
![applewrong6](http://dzceab466r34n.cloudfront.net/Images/ArticleImages/InlineImages/120112-Apple_wrong_figure6-ORG.png)
表6. 使用表5建议的阶梯提高了VMAF评分 Sintel
正如你将在视频中看到的,版本10.2的莫斯科国立大学(MSU)视频质量测量工具(VQMT)计算VMAF分数, 并允许您将两个视频与原始视频进行比较. 在camtasia捕获的屏幕截图中, 我在原来的框架中循环, 540p帧, 还有270p帧.
底线是什么? 在为HEVC视频创建编码阶梯时, 不要重复用于H的同一阶梯的分辨率.264. 您可以通过将更高的分辨率推到编码阶梯的较低位置并消除底部的几个梯级来优化质量.
不过我还没有测试过VP9和AV1, 我猜同样的分辨率动态是正确的, 因此,如果您正在为这些编解码器创建新的阶梯,您应该运行相同的分析. 最后, 在为任何自适应比特率技术部署任何阶梯之前, 您应该在强制在层之间切换的受限带宽条件下彻底测试它. 我的建议似乎不太可能“破坏”HLS玩家的切换机制, 但它很容易测试, 你应该.
认识真正的专家
几个问题. 首先,开篇提到的真正的编码专家是 汤姆·沃恩视频公司副总裁兼总经理 MulticoreWare该公司开发了x265编解码器. Tom在流媒体 West参加了一个关于HLS和HEVC的会议, 并表示苹果推荐的阶梯并不理想. 这让我产生了进行分析并写这篇文章的想法.
我请Tom提供更多关于HEVC比H性能更好的技术细节.这是他的评论.
视频编解码器的大部分压缩效率来自于所谓的“预测”(编码过程中的第一个基本步骤)。. 将一个像素块描述为与同一帧中其他地方的相同大小的像素块相似(内部预测)所需的比特相对较少。, 或者在另一个框架的其他地方(内部预测). H.264可以描述多达16x16个像素块. H.265/HEVC最多可以描述64x64块(大16倍).
当比特率目标值变低(或CRF设置变高)时, X265倾向于自动选择更大的块大小, 尽可能高效地编码高分辨率视频. 它通过一种称为“率失真优化”(RDO)的内部加权算法来做到这一点。. 比特率也被第二个编码步骤最小化, 其中对预测后的残差进行编码(因为预测很少是完美的). 残差是原始源视频像素与预测块之间的差值.
该误差通过离散余弦变换从空间域变换到频域, 然后编码器查看所有频率分量的相对强度. 保留最重要的频率, 不太重要的频率被去掉, 或者“量子化”.
在更高的比特率或质量设置, 预测后的残差有更多的比特可用来编码, 并且保留了更多的频率分量. 在较低的比特率下,编码器保留更少的空间频率,因此视频变得更柔和. 因为HEVC有更广泛的编码工具可用, 它可以在低比特率下处理更多像素, 用更大范围的块大小和形状描述每个帧中的每个区域, 更准确地引用其他块, 并根据需要通过量化不太重要的空间频率来降低比特率.
为编码器提供更多的像素,可以使其获得更准确的空间信息, 让它更精确地完成所有的压缩. 当然,在非常低的比特率下,编码器可以处理的像素数量是有限的. 当它用尽一切手段时, 您将开始看到块压缩工件(许多人称之为“宏块”)。. 为了避免这种情况,视频必须按比例缩小以减少像素的数量.
简化流程
另一个是对 Hybrik 云编码平台,极大地简化了上述分析. 为了解释,每个测试视频涉及114个独立的编码到H.264和HEVC,所以这两个视频总共456个编码. 编码非常简单,可以在一夜之间使用FFmpeg进行设置和运行, 但是我必须用VQMT工具来计算VMAF, 这涉及到另一个批处理文件, 还有另一个FFmpeg操作,将所有sub-1080p文件转换为Y4M格式进行分析, 这既费时又占用硬盘空间. 更糟糕的是, 然后我必须从MSU工具输出的单个文本文件中复制并粘贴456个VMAF分数到我的结果电子表格中, 哪一种思维迟钝,容易出错.
与Hybrik, 我可以一次为多达20个文件配置测试, 在处理它们之后, 下载一个CSV文件,将所有结果输入到电子表格中, 节省大量的输入时间. 为了让大家都知道, 请注意,我有时会咨询海弗莱克, 包括帮助他们配置分析工具, 哪一个真的(恕我直言)简化了这些类型分析的操作. So, 如果您正在执行大量的分析工作, 你会发现Hybrik是无价的, 不过不幸的是,Hybrik不提供仅供分析的定价, 所以你需要支付1美元,该特权的最低金额为每月000英镑.
相关文章
什么比单点登录更好? 根本就不签约. 此外,从今年秋天开始,人们最多可以让32名参与者在FaceTime上聊天.
2018年6月4日
很多人听说苹果将在HTTP 在线直播中增加HEVC回放的支持,他们的疑问多于答案. 以下是开发者需要了解的内容.
2018年1月15日
HEVC出人意料的版税支付让一些发行商开始寻找替代方案. 了解一家公司如何创建更好的编解码器价格计划.
12月8日
如果你要在HLS视频中添加HEVC, 你可能会担心iphone的播放帧率和电池寿命, ipad, 还有你要投递的电脑. 我们测试了一系列设备,发现大多数设备的CPU影响可以忽略不计.
11月15日
我们正在寻找发行商如何在他们的HLS流中使用HEVC. 参加我们的调查,帮助我们找到答案,并在报告发布时获得一份副本.
2017.11.09
硬件加速和现场可编程门阵列可能是解决多种编解码器(包括H.264, H.265, VP9,很快还有AV1
2017年8月3日
在本周的全球开发者大会上,苹果宣布将支持HEVC/H.在High Sierra和iOS 11中使用硬件和软件解码的组合, 取决于设备. 以下是苹果将如何实现它的细节.
2017年6月8日