Per-Title(按主题)编码是指为了节省码率、存储空间以及ABR传输带宽为每部电影(基于其独特的空间和时间属性以及复杂度)调整ABR码率阶梯(bitrate ladder)。换言之,Per-Title编码的目的就是根据电影特点(慢动作、体育、动画、卡通内容等)为每部电影生成一组不同的编码或者压缩参数。 接下来,我们将了解Per-Title编码所涉及的编码过程以及它为流媒体提供商带来的优势。
什么是Per-Title编码?从哪里开始?
最早提到Per-Title编码的地方是Netflix的博客,随后IEEE发表了名为“Complexity-based consistent-quality encoding in the cloud(《云上基于复杂度的稳定质量编码》”的论文。该论文的摘要中有一句话很有趣:
为了生产最佳质量的视频流,系统需要使编码适应每条内容(以一种自动、可扩展的方式)。在本篇论文中,我们描述了两个算法优化,用于基于云的分布式编码管道,它们分别是:(1)针对码率-分辨率选择的Per-Title复杂度分析;(2)针对稳定质量编码的Per-chunk码率控制。相对于简单的“一刀切”的编码系统,这些改进带来了很多优势,包括更高效的带宽使用和更稳定的视频质量。
上文这句“为了生产最佳质量的视频流,系统需要使编码适应每条内容”很好地总结了Per-Title编码。
编码器需要“理解”每一个视频内容,并调整压缩设置和参数与之适应,这样就有可能达到最佳视频质量。
传统的ABR和压缩过程发生了什么?
在使用ABR技术的传统视频传输方法中,一般是创建一个码率阶梯(或者一组profile),并将其应用于内容库中的所有电影。关于ABR技术的更多介绍,请阅读这篇文章:理解ABR及其工作原理。
比如,码率阶梯有一个6mbps 1080p的profile,并应用到了所有的分类——无论是动漫、体育还是脱口秀。
然而,这种方法存在一个问题:每部电影的特点和复杂度并不相同。
所有电影看上去都不一样: 有些电影拥有快速动作场景(体育比赛、动作片),有些在动作上较慢(《肖申克的救赎》)。有些动画片比较简单(《辛普森一家》),有些却拥有高度细节(《玩具总动员》)。所有电影都有它自己的“基因”和特点,所以每部制作出来的电影都与众不同。
那么,为什么都要以相同方式压缩电影,使用相同编码器设置并使用相同码率阶梯进行ABR视频传输呢? 让我们来看看下文中来自《辛普森一家》、足球比赛和Park Joy测试序列的三张截图,它们看起来都不一样,是吧? 容易压缩! 真的很难压缩! 因为视频中出现了水、草和树叶,也很难压缩! 现在,上述这些例子依赖于你对于视频质量优劣的主观判断。让我们看下Netflix技术博客上的数字实验。下方的RD图描述了不同序列在不同目标码率下的码率与视频质量 (PSNR)。
看看图中的变化有多大!在5000 kbps,一些序列拥有高达45 dB甚至更高的PSNR分值,而其他序列只有36 dB。这清楚地表明:没有两个视频是相同的,应该根据它们各自的特点来进行处理。
用更专业的术语来说就是,这些视频的时空复杂度及其特征之间存在差异,所以利用这一点来有效压缩视频会是一个好主意。
来源:Netflix博客[1]
因此,Per-Title编码就是从一个视频变化到(或适应)另一个视频的编码。
使用Per-Title编码,哪些变量是可以改变的?
使用Per-Title编码时,很多编码和传输参数都会发生变化,比如:
码率阶梯中的分辨率选择:某些title可能会生成720p的质量内容(看上去也很棒),对于这类视频,你也许不必将它切换成更高质量内容的1080p。
每个分辨率所选择的码率:这是Per-Title编码中最重要的部分。如果你必须生成一组视频分辨率(1080p、720p等),那么你可以为其中每个分辨率改变码率。也就是说,你会发现自己可能不是在6mbps时生成1080p的视频,而是在3mbps生成1080p,并达到相同的视频质量!
码率阶梯中的profile数量:这是Per-Title编码的又一大优势。通过变换码率-分辨率组合,也许能够减少你需要在码率阶梯中产生的profile数量。 在使用Per-Title编码时,其参数的范围更大。在更精细的层面,你可以研究编码器设置并对它们进行调整:
- 过滤器的强度
- GOP长度
- 启用和禁用二分之一像素或者四分之一像素运动估计
- 运动估计的搜索范围
- GOP结构(P帧与B帧的比率)
以及更多取决于如何设置视频编解码器。这里的首要重点应该是了解你的视频复杂度,视频编解码器的能力,以及如何结合你所有的数据和视频智能分析来有效压缩视频。
如何实现Per-Title编码?
Per-Title编码最重要的特点就是它能够“理解”一部电影的复杂度、其中的场景和变化等。
方法就是:通过收集电影信息和统计数据,并使用这些数据进行压缩。
这就使我们需要了解多遍编码(multi-pass encoding)的概念,其中第一遍(或者第N 遍)被用来收集电影相关信息。在最后的第M遍,使用这些信息来编码视频。
哪些信息对理解电影复杂度有所帮助?让我们来看看:
全局速度或运动矢量: 它将告诉我们场景移动的速度,可以被用来区分脱口秀(其中没有人移动)和美国职业橄榄球比赛(充满快速摄像机的移动)。
空间复杂度: 电影中的大部分画面是像《辛普森一家》中的纯色块?还是充满了年代电影中那种复杂的图案?
时间复杂度: 想要理解电影内容如何快速地从一帧切换到另一帧,这又与上文中的全局运动向量和速度有关。 这些都是非常重要的视频特点,它们决定了如何在确定的比特预算前提下有效压缩视频。
简单来说就是,如果你了解你的视频属性,你就可以调整编码器设置从而达到最佳视频质量(比如被要求压缩视频到x mbps) 所以,在你收集了这些信息以后,你就可以在视频编解码器上执行另一个pass来将视频压缩到正确码率(由你的凸包算法决定)。
Per-Title编码的优势
执行Per-Title编码拥有许多优势,比如:
节省存储空间: 通过使用Per-Title编码改变码率和分辨率,你可以高效压缩视频,且节省很多存储空间。
节省传输成本: 因为每个被编码的title都使用了一个最适合它的码率阶梯,所以你马上就会看到CDN传输成本的节省。除此之外,终端用户也将下载较小的文件,以此减少缓冲的发生和首屏延迟。
节省编码时间: 再者,由于编码阶梯会为每部电影而单独调整,你可以很容易地看到编码时间的节省。比如,如果我们不使用1080p编码《辛普森一家》的片段,而是使用720p并获得了相同视觉质量,那么分辨率的下降会提升编码器的速度。这主要是因为分辨率的下降导致运动估计和补偿算法的工作减少了。
提升质量: 通过调整每部电影或者每个主题的编码器、分辨率、码率、帧率以及其他设置,你可以充分利用编码器,并获取最佳视频质量。这将会带来很棒的用户体验! 因此,通过切换到Per-Title编码方案,你可以节省大量存储、传输和编码时间上的成本。 今天就到这里,我们下次再见,保重!Happy streaming!
注释:[1] https://netflixtechblog.com/per-title-encode-optimization-7e99442b62a2
致谢:本文已获得作者Krishna Rao Vijayanagar授权翻译和发布,特此感谢。
原文链接:https://ottverse.com/what-is-per-title-encoding/
翻译、编辑:Alex
技术审校:赵军
本文来自OTTVerse,作者为Krishna Rao Vijayanagar。
版权声明:本文内容转自互联网,本文观点仅代表作者本人。本站仅提供信息存储空间服务,所有权归原作者所有。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至1393616908@qq.com 举报,一经查实,本站将立刻删除。