【视频编码】 Content Aware ABR技术(五)

在本系列前面的帖子中,我们梳理了Netflix、YouTube、Beamr和EuclidIQ在ABR方面的一些进展,本文将简要介绍一下编码优化领域的另一位成员—Bitmovin的技术动态。

1 Bitmovin per-title encoding

早在六七年前,per-title encoding相关的概念就已经提出,不过大多数早期的研究基本上都认为per-title encoding仅在实验环境下有效,而并不适合商业应用,因为每个视频在编码前需要进行大量的编码测试分析才能得到每种分辨率下对应的最佳码率。直到近两年,Netflix团队通过多年的努力提出了一种视频复杂度分析开销较低的方案,使得per-title encoding进入大规模实际应用成为可能。

per-title encoding简单而言就是基于每个视频自身的复杂度找到对应每种分辨下的最佳码率,在这个码率下编码器编出的码流恰好具有可以接受的视觉质量。这个最佳码率因视频的类型而异,对于动作或体育类型的视频,一般包含更加复杂的场景内容,因此编码时需要更高的码率来保留这些信息。相反,对于场景简单的动画视频而言,使用较低的码率编码就可以保持近乎相同的视觉质量。(注:关于Netflix per-title encoding的详细内容请参考本系列之前的帖子)

我们知道,当原有的固定编码配置(即分辨率和码率组合)对于给定的视频类型并不适用时,重新获得一组最佳的编码配置是很耗时耗力的。因此,根据输入视频的复杂度将给定的编码配置进行自适应调整则是一个更好的选择。Bitmovin据此提出了以下思路,如图1所示。

图1 Bitmovin per-title encoding框架

在图1中可以看出,Bitmovin per-title encoding的第一步是进行复杂度分析,即根据输入视频的内容计算复杂度因子。在H.264中提供了一个CRF(Constant Rate Factor)选项,该选项用来确定输入视频的一个质量级别。编码前先通过CRF encoding得到平均码率,该码率能够反映输入视频整体的内容复杂度,进而可以确定出该视频的复杂度因子。一般情况下,复杂度因子分布在0.5到1.5之间,其中0.5到1属于低复杂度范围,1到1.5属于高复杂度范围。有了复杂度因子后,接下来就可以用它来调整给定的编码配置。

表1给出了一种编码配置的调整示例。对于低复杂的视频内容,可以使用更低的码率来编码。特别是在高码率配置中,码率调整的幅度更大一些,码率得到节省的同时不会对视觉质量带来明显的降级。而在低码率配置中,码率调整的幅度相对较小,避免产生明显的视觉失真。与之相反,对于高复杂度的视频内容,需要使用更高的码率来保证码流具有较高的视觉质量。特别是在低码率配置中,码率调整的幅度更大一些,因为在这些配置中增加一些码率就能带来明显的质量提升。而在高码率配置中,调整的幅度相对较小,此时码率的进一步投入不会带来明显的质量收益。因为根据相关研究可知,对于PSNR超过45dB的视频,码率的变化并不会带来视觉上的差异,而PSNR低于35dB的视频视觉差异会比较明显。

表1 编码配置调整示例

表2给出了上述Bitmovin per-title encoding方法的部分结果。对于低复杂度的视频,例如卡通类型的Glass Half,在高码率配置(width 1920)下码率降低了30%,而SSIM结果几乎相同。虽然PSNR从51.51dB降到了47.78dB,但根据上文分析可知不会出现明显的视觉差异。此外,图3展示了Bitmovin官网提供的demo效果对比,可以发现使用per-title encoding方案编码的码率更低,但视觉效果与之前几乎相同。

表2 Bitmovin per-title encoding的部分结果

图 2 编码效果示例(Glass Half)

以上部分介绍了Bitmovin per-title encoding框架:通过一次CRF encoding评估输入视频的复杂度因子,进而调整该视频不同分辨率下的码率配置。该方法相比Netflix per-title encoding更简单一些,如果针对每个分辨率都做一次CRF encoding,效果可能会有进一步的提升。(Netflix per-title encoding:先对输入视频进行测试编码获得各个分辨率下的rate-quality曲线,如图3所示。然后对这些曲线拟合得到凸包曲线,凸包曲线上的点即为各分辨率下的最佳码率点,但该方法相对耗时耗力 )

图3 Netflix per-title encoding方法示意图

2 Bitmovin per-scene adaption

虽然不同类型的视频整体的复杂度不同,但一般而言,在一个输入视频中不同的场景也具有不同的复杂度,即使是一个动作电影,其中也包含不少复杂度较低的场景。因此基于场景内容复杂度的per-scene encoding为ABR编码优化提供了一个新思路,并且这类方法处理视频的粒度更加精细,效果也更好。例如,对于视频内部的低复杂度场景可以采取更低的码率进行编码传输,而不会影响整体的视觉质量。据此,Bitmovin提出了以下per-scene adaption优化方法,整体框架如图4所示。

图4 Bitmovin per-scene adaption框架

从图4可以看出,per-scene adaption在编码中提取出了quality metadata数据,这使得客户端的自适应模块能够做出更加精确的预测和处理。具体而言,服务端首先对输入视频进行per-chunk编码并提取上述quality metadata数据。这些数据包括了由不同质量工具PSNR、SSIM、VMAF等组合产生的quality index,用以指示不同场景的复杂度和质量级别。之后,所有这些信息通过playlist/manifest或容器等方式随着码流传输到了客户端。在客户端接收到这些信息之后,其自适应模块能够根据上述信息(同时包括本地状态信息如数据吞吐率、缓冲区的充盈度、用户偏好等),对低复杂度的场景片段使用更低码率的码流版本,具体如图5所示。从图中可以看出,传统算法对简单场景仍然保持在2Mbps左右的码率,而Bitmovin的per-scene adaption方案自动将码流切换到了1Mbps,因此使用该自适应方案可以有效节省带宽。与此同时,在部分高复杂度场景,per-scene adaption方案自动切换到了较高码率的码流,因此这部分视频的视觉质量得到了提升。

此外,图6进一步给出了码率随时间变化曲线,可以看出传统算法在整个序列播放期间对于不同场景使用相同码率的码流,而per-scene adaption方案则根据场景复杂度的不同智能选择合适码率的码流进行播放,可见per-scene adaption方案降低码率的效果较为明显,此外还可以在网络带宽不佳的情况下有效避免播放卡顿。

图5 per-scene adaption码流切换示例

图6 码率变化曲线

参考资料:

1. https://bitmovin.com/per-title-encoding/

2. https://bitmovin-a.akamaihd.net/blog-contents/per-title/#

3. https://medium.com/netflix-techblog/per-title-encode-optimization-7e99442b62a2

4. https://bitmovin.com/per-scene-adaptation-going-beyond-bitrate/

5. https://bitmovin.com/higher-quality-lower-bandwidth-multi-codec-streaming/

6. https://bitmovin.com/quality-and-bandwidth-optimization-with-advanced-video-streaming-techniques/

原文发布于微信公众号 - 媒矿工厂(media_tech)

原文发表时间:2018-01-25

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏企鹅号快讯

数据专家必知必会的 7款Python 工具

英文:Dynelle Abeyta译文:oschina www.oschina.net/translate/seven-python-tools-all-dat...

1916
来自专栏数据科学与人工智能

【Python环境】玩转数据分析,必知必会的7款Python工具!

如果你有志于做一个数据专家,你就应该保持一颗好奇心,总是不断探索,学习,问各种问题。在线入门教程和视频教程能帮你走出第一步,但是最好的方式就是通过熟悉各种已经在...

1925
来自专栏AI科技评论

动态 | ACL 2018 公布四篇最佳 demo 候选论文,三篇论文第一作者来自中国

雷锋网 AI 科技评论按:7 月 9 日,自然语言处理顶会 ACL 公布了最佳 demo 论文的四篇候选论文,名单如下:

1084
来自专栏AI研习社

呵,我复现一篇深度强化学习论文容易吗

去年,OpenAI和DeepMind联手做了当时最酷的实验,不用经典的奖励信号来训练智能体,而是根据人类反馈进行强化学习的新方法。有篇博客专门讲了这个实验 Le...

902
来自专栏深度学习那些事儿

浅谈深度学习的落地问题

关于深度学习人工智能落地,已经有有很多的解决方案,不论是电脑端、手机端还是嵌入式端,将已经训练好的神经网络权重在各个平台跑起来,应用起来才是最实在的。

1311
来自专栏达观数据

【经验分享】点击模型:达观数据提升算法精度的利器

? 在搜索、推荐、广告引擎中,系统会通过复杂算法生成一个最终的结果列表。用户在看到这个结果列表时,未必都会对排序满意,比如有时觉得排序的顺序有问题,或者发现一...

38510
来自专栏PPV课数据科学社区

【笔记】CDA LEVEL II 数据建模师培训学习笔记(一)软件安装

? 写在前面:此笔记是PPV课学员张梦根据李玉玺老师在CDA LEVEL II 数据建模师培训的上课内容整理而成的。 ———————————–作者说明——...

31110
来自专栏PPV课数据科学社区

【学习】天龙八部:8步从Python白板到专家

如果你想做一个数据科学家,或者作为一个数据科学家你想扩展自己的工具和知识库,那么,你来对地方了。 这篇文章的目的,是给刚开始使用Python进行数据分析的人,指...

2123
来自专栏量子位

如何用Python从海量文本抽取主题?

作者:王树义 量子位 已获授权编辑发布 你在工作、学习中是否曾因信息过载叫苦不迭?有一种方法能够替你读海量文章,并将不同的主题和对应的关键词抽取出来,让你谈笑间...

3857
来自专栏Albert陈凯

R语言的优劣

https://www.zhihu.com/question/19611094 作者:艾华丰 链接:https://www.zhihu.com/questio...

2283

扫码关注云+社区