动机
视频编码推动了过去 25 年的学术研究, 并且推出了引人注目的产品与服务众多公司都围绕视频编码和传输而构建 ---Netflix 和 Google 的 YouTube 是两个最好的例证
多年以来, 视频编码的基本原理改变不多产生现代视频流的编码参数类型自 MPEG-1 视频标准 [1] 发布时后就甚少改动; 选择特定的帧分辨率, 连同一组 (GOP)结构, 并在该结构 (GOP) 上应用周期性的帧内 (Intra picture) 图片; 通过在输入视频帧上的单遍 (single pass) 或双遍 (two pass) 来(近似地)满足目标比特率
这些公司努力微调视频编解码器中的附加参数, 从而创造业界通常称赞为良好配方的内容这些配方通常是通过人为检查一组选定主题上的编码结果而创立和定制, 且多年未变
与此同时, 核心视频编解码器工具的改进导致了比特率上的惊人节省 一个 HEVC [2]编码器仅需 MPEG-1 所用比特的小部分 (约 30%) 就可以达到与之相同的画面质量但是, 衡量这些改进通常使用均方差 (MSE) 方法, MSE 在由人来观察评估时, 结果并不总是令人印象深刻而当一个新的编解码器被开发时, 这个被要求的神奇数字已经是 50%H264/AVC [3] 声称比 MPEG-2 [4] 节省 50% 的比特, HEVC 声称比 AVC 节省 50% 的比特然而, 在实际的系统中, 这些节省从未实现过 - 对视频编解码器增量变化带来的效益的最佳评估是接近 40%[5]
在 ISO 和 ITU 标准化工作的同时, Google 一直在开发他们自己的一系列免版权税的视频编解码器; 其最新研发的 VP9[6], 于 2013 年首次推出, 2014 年完成 VP9 是基于早前成功的 VP8 以及 Google 在 2010 年收购的 On2 Technologies 公司开发的 True Motion 系列编解码器
要牢记, 大多数的视频编解码器的改进给解码器和 ---- 更多的是编码复杂度上带来非常繁重的计算开销一个已被弄清楚的是, 为了能在商业视频传输服务中被部署, 更新更高效的编解码器需要不断增加的复杂度很明显, 每一代视频编解码器都伴随 5-10 倍的编码器复杂度的增加, 而解码器复杂度的增加通常是 2 倍
如果接受了更新更高效的编解码器带来的复杂度增加, 那么更大的问题是: 我们在系统级别可以做什么? 例如将视频帧作为输入连接到编码器的方式, 或者我们如何使用视频解码器的输出来呈现在屏幕上, 以进一步提高视频质量, 而这些提升将会被现在这些花费大量时间在视频上的人所感知
这里介绍的新方法中的关键词如下:
感知: 视频编解码的整体目标是以一种令人赏心悦目的方式压缩视觉信息; 通常而言用于编码器决策的均方差 (MSE) 并不总是一个与人类感知关联匹配得很好的数字
复杂度: 就像我们增加了视频编解码的复杂度, 我们也可以减少复杂度
预见性: VOD 与广播电视不同, 广播电视需要及时的或在最小延迟中进行编码决策, 而在视频点播服务中, 视频序列在整个过程均是可用的, 这就可以被预先分析多次以提高视频质量
基于镜头 (Shot-based encoding) 的编码
对于这个技术博客的余下部分, 我们假设读者熟悉自适应流媒体的基础知识, 例如:
使用基本处理单元, 以不同分辨率和 / 或质量, 对相同视觉内容进行多重编码表示, 称为流式传输段
为了适应不同的通道条件(比特流切换), 按照流媒体客户端的要求, 从服务器传送编码的段属于不同的表示方式
相同视觉内容的不同编码表示之间的段的时间对齐以允许比特流切换
有兴趣的读者可以参考一些可用的自适应流媒体教程, 例如 this Wiki page [7]
分块编码(Chunked encoding)
在 Netflix 2015 年 12 月发布的技术博客 [8] 中, 我们介绍了分块编码对云编码的巨大益处这意味着打碎了一个长的视频序列, 例如持续 1 小时, 以多个组块, 每个组块持续一定时间 - 例如 20 个组块, 每个组块 3 分钟时长然后我们用特定的编码配方, 独立地编码每个块, 连接或组合编码块, 从而获得整个视频序列的编码版本
在分块编码的众多优势中, 最重要的是它允许使用视频编码软件在云上构建一个强大的系统如果云实例未能完成某个编码, 它只需要重新处理相应的块, 而不是重新启动整个长达几小时大的视频编码程序因为可以并行编码不同的块, 人们还可以看到端到端的延迟的减少, 从而在整个编码系统中实现几乎无限的可扩展性
当然, 分块编码也带来一些弊端 - 即运行在整整一个小时的序列上, 尤其是在两通模式下的视频编码器, 可以预览随后的内容并做出更好的长期的比特率分配; 从而以相同的比特率实现更好的整体质量然而, 分块编码的利大于弊
按主题和按块编码的优化(Per-title and per-chunk encode optimization)
Netflix 一直在不断提高全球会员的视频质量期间一个重要的里程碑是发布于 2015 年 12 月 [9] 的按主题编码优化, 在我们的技术博客上有详细介绍按主题编码优化引入了根据复杂度定制编码的概念, 这转换为我们目录中每个视频序列的正确分辨率和比特率选择相对于我们以前的固定分辨率 / 比特率梯形图, 通过考虑视频的特征, 产生显著的改进特征包括: 运动量细节水平色彩, 以及选择更适合每个主题的编码参数来优化编码效率, 另一个重要的里程碑是 2016 年 12 月推出的按块编码优化, 作为我们移动编码下载计划的一部分, 这个在 Netflix 技术博客[10] 中有更详细的介绍 在下一节中将更详细地讨论的均衡 R-D 斜率的概念也用于这项工作, 并提供了重大改进 事实上, 人们可以将当前的工作视为按主题编码优化和按块编码优化的自然延伸; 我们可以称之为感知 per-shot 编码优化
从块编码到 shot 编码
在理想的世界中, 人们希望将视频分块, 并赋予每个块不同的参数集合, 以优化最终组合的视频实现这种完美比特分配的第一步是以自然而原子的方式分割视频, 把彼此非常相似的帧组成一个序列, 因此编码参数的变化类似 - 这些就是构成长视频的 shot 序列这些 shot 是持续时间相对较短的视频部分, 它来自相当恒定的照明和环境条件下的同一台相机它捕获相同或相似的视觉内容例如, 一位站在树前演员的脸最重要的是, 当更改编码参数时, 其变化是一致的 shot 的自然边界由相对简单的算法确定, 即称为 shot 变化检测算法该算法检查属于连续帧的像素之间的差异量以及其他的统计量当该差异量超过某个固定的或动态调整范围的阈值时, 一个新的 shot 边界被确定有些可以在两个连续 shot 之间的边界上应用交叉渐变或其他视觉效果, 这类情况则可以通过更复杂的算法来处理
shot 变化检测算法的最终结果是 shot 列表和它们的时间戳人们可以使用这些生成的 shot 作为基本编码块, 而不是固定长度的块这提供了一些非常独特的机会:
现在 Intra 帧的放置可以始终不规则, 这个术语意味着:
(a)Intra 帧可以放置在随机的位置例如前 4 帧 I 帧可以是在时间 0,2,5,7 秒
(b)然而, 时间位置总是在相同主题的编码之间对齐, 换言之, 前 4 个 intra 帧的位置保持在 0,2,5,7 秒对于这个主题的所有编码都是这样
Intra 帧的不规则位置会带来最小的编码开销; 请记住, 在视频编码所使用的 3 种不同类型 (I / P / B) 的帧中, intra 帧的效率最低, 因此希望在编码视频中尽量减少它们的存在
在一个很长的视频序列中寻找产生的自然兴趣点, 这些兴趣点标记出了 shot 边界
当独立编码各 shot 时没有预测惩罚: 如果将一 intra 帧放置于 shot 中间, 则会将 shot 分割成若干部分当独立编码而非单个单元编码时, 则需要更多位数这是因为 Intra 之后的像素无法在 Intra 帧之前的帧中参考它们的类似对应物
连续拍摄之间的任何重要的编码参数变化都不太可能被人眼察觉, 这是因为不同 shot 中的不同视觉内容所引起的中断对人类视觉系统的破坏比任何可能的编码参数的变化 (例如分辨率和质量) 都要大得多
由于非常简单的编码方案, 例如固定量化参数 (fixed QP) 模式, 被几乎现在所有的视频编码器所支持, 且提供了非常一致的视频质量, 具有几乎最小的比特率变化故而在同类帧集合内, 如属于同一 shot 的那些帧, 使用速率控制的需求就少得多事实上, 在视频编解码器开发过程中一直使用 fixed QP, 因为在 MPEG,ITU 和其他标准机构中用于测试的所有序列几乎都由单 shot 视频块组成
图一: 始终不规则放置在 shot 边缘的 intra 帧 (关键帧) 关键帧在时间上与所有编码的镜头边界对齐
VMAF 作为感知视频质量指标
在 2016 年 6 月发布的另一个 Netflix 技术博客 [11] 中, 我们解释了视频多方法评估融合 (VMAF) 质量指标, VMAF 是由内部开发, 后为整个视频社区获益而开源
VMAF 的主要特征如下:
它是一个完整的参考指标, 这意味着它可以应用于任何原始的未失真的或已失真视频序列的版本
它考虑到压缩和向上 / 向下缩放的影响, 通过上采样解码视频帧到一个普通的参考帧大小 (1920x1080) 这样, 就可以使用 VMAF 来评估不同分辨率的编码视频的质量, 尤其可以用来比较不同分辨率下相同内容的编码版本, 并帮助判断出哪一个编码效果更好
它依赖于现有的图像质量指标 (VIF, DLM), 且经过适当修改以覆盖多个分辨率, 以及视频序列中连续视频帧之间的移动量, 这些移动量作为输入到机器学习权重集中的特征最后的得分是在支持向量机(SVM) 回归器中结合这些基本特征所得的结果
在 VMAF 中使用的权重校准和训练是通过收集实际观察者的主观数据来进行的, 而观察者提供的是 VMAF 当时适合的基础真实数据用于 training VMAF 的内容是 Netflix 目录的一个有代表性的子集, 因此我们了解到它的性能与我们的使用情况一致然而, VMAF 框架是通用的, 并且允许其他人根据自己的情况对其进行再 training 事实上, 大量的研究人员已经使用他们自己的主观数据集验证了 VMAF 的准确性
图 2:VMAF 的工作原理: 将像素级数据汇聚以生成帧级特征; 利用 SVM 回归方法融合不同时空特征, 来建立帧级质量分数; 连续帧的分数被汇集以产生最终的视频序列 VMAF 分数
率失真曲线的凸包
Ortega 和 Ramchandran [12]在 1998 年的一篇开创性论文展示了在处理图像和视频编码中的多种选择时如何解决最优性问题
假设图像由 N 个需要编码的单元组成
分别编码每个单元, 为每个可能性获取的 (速率, 失真) 对, 称之为工作点;
将所有可用的工作点放在率失真图上;
提取它的凸包和边界轮廓;
可以从每个单元的凸包上选取一个点, 以便不同单元的点具有 (大致) 相同的 distortion-rate 斜率
图 3: 工作点 R-D 凸包的示例, 以及源 R-D 曲线转载自[12]
组合
因此可以考虑以下系统:
一个长的视频序列在 shot 中分割开
图 4: 来自 El Fuente 测试序列代表性镜头的缩略图; 这个主题包括 96 个镜头
每个 shot 使用不同的编码参数进行多次编码, 如分辨率和质量(QP 等)
每个编码都使用 VMAF 进行评估, 并与其比特率一起生成 (R,D) 点 可以使用不同的映射将 VMAF 质量转换为失真; 我们针对线性和反比例映射这两种进行了测试将在下一节讨论这些映射产生的不同的时间聚合策略
图 5: 使用一组参数如分辨率和 QP 对一个 shot 进行编码, 并获得一个单独的 (R,D) 点
计算每个 shot 的 (R,D) 点的凸包 在以下示例图中, 失真是 (VMAF + 1) 的倒数
图 6: 使用 VP9(libvpx)以各种编码分辨率和量化参数 (QP) 获得的来自 El Fuente 的特定 shot 的多个 (R,D) 点
图 7: 使用 VP9(libvpx)从 El Fuente 拍摄同一 shot 的 (R,D) 操作点的凸包
来自每个 shot 的凸包中的点, 通过遵循恒定斜率原则并在 Trellis 中构建端到端路径来组合, 为整个视频序列创建编码
图 8: 结合 shot 编码以产生最佳编码; 示例网格路径显示固定的 QP 编码, 针对给定的平均质量来最小化比特率或针对给定的平均比特率来最大化编码质量 选定的 shot 编码在 (R,D) 空间中具有大致相等的斜率
为了能够覆盖到期望的比特率 / 质量范围, 要根据需要来改变 R-D 曲线的斜率参数, 以便产生尽可能多的聚合编码(最终动作点)
最终结果是整个视频序列的完整 R-D 曲线或速率 - 质量 (R-Q) 曲线
图 9: 对于整个 El Fuente 视频序列获得的最终的 R-Q 曲线 基线则是最好的 fixed-QP 编码; 在这种情况下, 动态优化器将比特率平均降低了 30%
这个完整的系统被称为动态优化器, 该框架产生了 Netflix 最新一代的编码
测试方法 - 结果
使用 VP9-libvpx 视频编解码器并编码了来自 Netflix 目录的 10 个代表性主题
就时间聚合而言, 我们实施了各种池化方法, 其中两种方法对应于前面已介绍的质量与失真映射, 即线性和反比例映射 我们称它们为算术平均平均 VMAF(LVMAF)和调和平均平均 VMAF(HVMAF)
这两种方法即 LVMAF 和 HVMAF 时间质量聚合, 产生了非常高质量的编码序列 - 允许分别在组合的视频序列中更激进或更保守的时间质量波动
VP9 编码方法
在 VP9-libvpx 中使用的编码参数取自以前的研究; 其研究结果发布于 2016 年 10 月举行的 Netflix 的免版税编解码器开放日基于该研究, 使用的最佳配置是 fixed-QP, AQ-mode=0, CPU=0, best, 在 PSNR 和 VMAF 质量度量方面显示出最高质量我们在附录中重现该研究的主要结果
我们将动态优化器获得的结果与 VP9-libvpx 的最佳固定 QP 编码的结果进行了比较 下表总结了所采用的方法和本实验所选择的各种参数
表 1: 用于动态优化器实验 1 的参数
动态优化器获得的相应增益, 在以相同视觉质量下的%比特率节省方面以及在相同平均比特率下 HVMAF 分数改善方面的表示如下:
表 2: 实验 1 的结果在动态优化器和最佳的固定 qp 编码之间大约 256kbps 在 Netflix 目录的 10 个代表性主题
当使用 HVMAF 作为质量指标时, 结果是整个视频序列的平均比特率比最佳固定的 QP 编码节省了 17.1% 而当使用 PSNR 时, 改进甚至更高: 平均节省 22.5%的比特率
在这个比较中, 由于为整个序列获得固定 QP 编码的凸包, 需要与动态优化器相同的复杂性, 所以基线和动态优化器结果之间的计算复杂度保持不变 因此, 这代表了动态优化器带来的改进量的下限
如果我们使用更常见的基线, 如 VP9-libvpx 中, 拥有 CPU=1, good, AQ-mode=2 编码配方的 2-pass VBR 配置, 则动态优化器的改进要更高: 就 HVMAF 而言, 平均节省 50%以上的比特率尽管如此, 需要记住的是动态优化器解决方案的计算复杂度也非常高
其他视频编解码器有多好?
根据前面介绍的内容, 可立即明白动态优化器框架中并没有特殊的编解码器为了证实这一点, 一组较短的剪辑使用了 H.264 / AVC,HEVC 和 VP9-libvpx 进行编码, 实验设置如下:
表 3: 用于动态优化器实验 2 的参数
图 10: 实验 2 的结果在 VMAF 和 PSNR 方面, 动态优化器相对于 AVC-High(x264),VP9(libvpx)和 HEVC(x265)的固定 QP / CRF 编码提高了 BD-rate
表 4: 实验 2 的结果使用不同的视频编解码器和质量度量, 相对于固定 QP / CRF 编码, 动态优化器提高了 BD-rate
可以看到, 动态优化器将这三种编解码器的编码效果均提高了大约 28-38% 请牢记, 这些改进并不是比较编解码器之间的性能, 而是通过使用动态优化器框架来改进各编解码器的性能在即将到来的几周内, 将使用动态优化器作为高级编码框架来对最先进的视频编解码器进行更彻底的比较
动态优化器总结
动态优化器是对视频编码的优化框架 其主要特点如下:
基于 shot 的编码
在不同分辨率和质量参数下进行多重编码
通过使用 VMAF 作为其核心指标进行感知评估和质量调整
大规模并行处理, 非常适合基于云的视频编码软件流水线
其主要优势如下:
它可以应用于任何现有的或未来的视频编解码器, 将它视为视频编码优化框架
它可以通过对每个测试视频序列的编码分辨率和质量 (QP) 进行识别感知相关范围来帮助未来的编解码器开发, 这也可以在开发和评估新编码工具的性能时使用
它消除了视频编解码器实现中的很多速率控制因素, 从而实现视频编解码器更公平地比较
它与 shot 编码配方的改进是正交的, 如更好的 I-B-P 编码结构, 空间自适应 QP 选择; 在 shot 级别执行的任何改进都是动态优化器带来的
根据计算资源的数量, 其复杂性可以放大或缩小, 在复杂性和率失真效率之间提供权衡
它生成完全兼容的比特流
它可以与 VMAF,PSNR 或其他任何视频质量指标一起使用
它有利于用于下载和离线消费的独立的比特流创建, 以及用于适应流媒体的完整的比特率阶梯创建
云实现
我们已经在编码管道中实施了动态优化器框架在非峰值流时间期间, 利用我们的可扩展云基础架构和未充分利用的云实例[13],[14] 我们将此编码系统应用于 AVC-High 和 VP9 数据流, 在提高了我们成员的视频质量的同时节省了带宽请继续关注另一个描述了我们的安装过程和结果的技术博客!
致谢
这项工作是 Netflix 整个视频算法团队的集体成果 我想亲自感谢 Anne Aaron,Chao Chen,Jan De Cock,Rich Gerber,Liwei Guo,Zhi Li,Megha Manohara,Aditya Mavlankar,Anush Moorthy,Andrey Norkin,Kyle Swanson 和 David Ronca 所做出的所有贡献
参考文献
- [1] ISO/IEC 111722:1993 Information technologyCoding of moving pictures and associated audio for digital storage media at up to about 1,5 Mbit/sPart 2: Video
- [2] ISO/IEC 230082:2013 Information technologyHigh efficiency coding and media delivery in heterogeneous environmentsPart 2: Video
- [3] ISO/IEC 1449610:2014 Information technologyCoding of audio-visual objectPart 10: Advanced Video Coding
- [4] ISO/IEC 138182:2013 Information technologyGeneric coding of moving pictures and associated audio informationPart 2: Video
- [5] J. De Cock, A. Mavlankar, A. Moorthy and A. Aaron, A large-scale video codec comparison of x264, x265 and libvpx for practical VOD applications, Proc. of the SPIE 9971, Applications of Digital Image Processing XXXIX, 997116 (27 Sep. 2016)
- [6] A. Grange, P. de Rivaz, and J. Hunt, VP9 Bitstream and Decoding Process Specification, Google, 2016
- [7] Adaptive bitrate streaming, WikipediaThe Free Encyclopedia, https://en.wikipedia.org/wiki/Adaptive_bitrate_streaming
- [8] A. Aaron and D. Ronca, High quality video encoding at scale, The NETFLIX tech blog, Dec. 9, 2015, link: http://techblog.netflix.com/2015/12/high-quality-video-encoding-at-scale.html
- [9] A. Aaron, Z. Li, M. Manohara, J. De Cock and D. Ronca, Per-title encode optimization, The NETFLIX tech blog, Dec. 14, 2015, link: http://techblog.netflix.com/2015/12/per-title-encode-optimization.html
- [10] A. Norkin, J. De Cock, A. Mavlankar and A. Aaron, More Efficient Mobile Encodes for Netflix Downloads, The NETFLIX tech blog, Dec. 1, 2016, link: https://medium.com/netflix-techblog/more-efficient-mobile-encodes-for-netflix-downloads-625d7b082909
- [11] Z. Li, A. Aaron, I. Katsavounidis, A. Moorthy, and M. Manohara, Toward a practical perceptual video quality metric, The NETFLIX tech blog, June 5, 2016, link: http://techblog.netflix.com/2016/06/toward-practical-perceptual-video.html
- [12] A. Ortega and K. Ramchandran, Rate-distortion methods for image and video compression: An overview, IEEE Signal Processing Magazine, vol. 15, no. 6, pp. 2350, 1998
- [13] A. Park, D. Derlinger and C. Watson Creating your own EC2 spot market, The NETFLIX tech blog, Sep. 28, 2015, link: http://techblog.netflix.com/2015/09/creating-your-own-ec2-spot-market.html
- [14] R. Wong, D. Derlinger, A. Shiroor, N. Mareddy, F. San Miguel, R. Gallardo and M. Prabhu Creating your own EC2 spot marketpart 2, The NETFLIX tech blog, Nov. 23, 2015, link: http://techblog.netflix.com/2015/11/creating-your-own-ec2-spot-market-part-2.html
附录: VP9 配方测试
在 VP9-libvpx 中使用的编码参数取自以前的研究; 其研究结果发布于 2016 年 10 月举行的 Netflix 的免版税编解码器开放日基于该研究, 使用的最佳配置是 fixed-QP, AQ-mode=0, CPU=0, best, 在 PSNR 和 VMAF 质量度量方面显示出最高质量下图显示了在 VP9-libvpx 编码中选择不同参数时, 对平均 BD 速率损失的影响
图 11:VP9-libvpx 编码中 AQ-mode = 0/1/2 的作用; AQ-mode = 0 效果最佳(摘自 2016 年 10 月 Netflix 的 Open House on Royalty Free Codecs 的 VP9 Encoding Opportunities @ Netflix 演示文稿)
图 12:VP9-libvpx 编码中 CPU0 / best 的影响; CPU0 / best 是最慢的, 但提供的结果始终优于其他设置(2016 年 10 月发布的关于 VP9 Encoding Opportunities @ Netflix, 摘自 NetflixOpen House on Royalty Free Codecs)
图 13:VP9-libvpx 中 2-pass VBR/ fixed-QP 的 BD 率损失(2016 年 10 月, Netflix 的 Open House on Royalty Free Codecs 的节选, VP9 Encoding Opportunities @ Netflix 演示文稿)
webRTCon 2018 8 折报名
经历了起跑 热炒失落的 7 年长跑后, 伴随 1.0 版定稿, 获得 iOS 端支持, WebRTC 具备了打通主流生态系统和端的能力, 2018 年也将是 WebRTC 落地的最好时机由 LiveVideoStack 音视频技术社区出品, WebRTCon 2018 将于 5 月在上海举行, 这是一次对过去几年 WebRTC 技术实践与应用落地的总结扫描下图二维码了解详情
来源: https://mp.weixin.qq.com/s?__biz=MzU1NTEzOTM5Mw==&mid=2247485369&idx=1&sn=fb369551a41627bbe057b433a124717f&chksm=fbd9af97ccae2681b61483e6b7d836317b6741f00098326a0a04cd5d0e6246236a45d8c5df62#rd