zl程序教程

您现在的位置是:首页 >  APP

当前栏目

基于 SVT-AV1 的高效视频点播应用解决方案

2023-04-18 16:19:42 时间

来源:Video @Scale 2021 主讲人:Nader Mahdi, Amir Naghdinezhad, Hassene Tmar 内容整理:张一炜 本次演讲介绍了 SVT-AV1 编码器针对 VOD 的高延迟恒定比特率编码(CRF)编码和可变比特率(VBR)编码的最新改进。在对比实验部分,进行了 SVT-AV1 与其他开源编码器的复杂度与压缩性能对比,SVT-AV1 新增的 VBR 模式 与 CRF 模式的性能对比, 以及 SVT-AV1 fast encoding 对比这 3 个对比实验。

SVT-AV1 编码器

SVT-AV1 在 2020年 8月已经被 AOM Sorftware Implementation Working Group (SIWG) 采用为参考软件,并且已经开源。

在过去的一年中,SVT-AV1 的进一步优化主要包括了以下方面:

  • 添加中等和快速模式下的复杂度和编码性能的折衷,并新增了 M7 和 M8 两种配置以适应更广范围下的复杂度要求;
  • 优化部分特征,包括 Temporal Dependency Model(TPL), 内容自适应 QP 以及预测结构;
  • 高负载度模式的模式选择算法优化;
  • 添加 1-pass 和 2-pass 码率控制的初始支持,并正在努力增加其他功能;
  • 单线程以及多线程的内存使用优化;
  • 添加 AVX2 和 AVX512 指令集优化。

增强的 CRF 模式

目前的 SVT-AV1 已经可以支持 Multi-pass。在 2-pass 编码中,包括一个 IPP 编码过程和最终编码过程。在最终编码过程中,第一遍 IPP 编码中收集的统计信息预测结构将会被用在最终编码过程中,用于提高 CRF 的编码效果。

CRF 模式 2-pass 编码过程

另一个在 SVT-AV1 中用于提高编码质量的优化特征为时域参考模型 Temporal Dependency Model(TPL),通过对 QP 进行缩放和调整实现。并且,还可以在最终编码过程中自适应的减小特定编码工具的复杂度,主要是一些复杂度高的工具和一些模式选择等工具。具体来说,对于参考传播较远的区域,采用完全版本的工具,而对于一些参考传播较近的区域,则使用快速实现版本。TPL 也同样支持多线程实现,使用者可以根据需要调整包括 lookahead 距离、跳过的帧数以及块的大小(16x16,32x32,64x64)来对复杂度进行调整。

针对 VOD 增强的 ABR 模式

对于 CRF 模式来说,需要给定一个 QP 级别的大小,编码器为不同帧分配不同的 QP 或者 qindex,使得编码后的视频质量恒定,但输出码率的大小不能被确定。而对于 VBR 模式来说,输入的是目标码率的大小,码控算法根据目标码率的大小为每帧或是每块分配不同的 QP。由于有了码率的限制,VBR 模式编码得到的视频总体质量要低于 CRF 模式。

SVT-AV1 中采用了 multi-pass 的 VBR 编码模式,希望能够减小和 CRF 模式编码的质量差距。从下图可以看出,SVT-AV1 的 VBR 模式一般有 3 个编码阶段。第一个编码阶段与 CRF 模式的第一个编码阶段类似,都是为了获取统计信息与预测结构,并计算得到第二个编码阶段的输入 QP 大小。第二个编码阶段类似于 CRF 编码,但其过程相比于 CRF 模式的 final pass 要更为简单,并得到最终的第三轮编码所需的 QP 大小。

VBR 模式 Multi-pass 编码过程

对于 VBR 模式的中间编码过程,是采用 CRF 的方式进行编码,其目标是在没有码率约束的情况下获取当前视频片段的码率分布情况。通过统计每一帧的码率相比于目标码率的差值以及第一遍 IPP 编码得到统计信息来调整 QP 的大小。在中间编码过程中,通过采用简化的编码方式来节省时间,简化的方式包括对输入进行下采样、跳过非参考帧编码、关闭较耗时的工具如 CDER、LF 以及限制参考图片和模式来实现。中间编码过程完成后,需要存储每一帧的码率大小以及对应的 qindex。

而在最终编码阶段,利用中间编码过程得到的码率大小数据,来对每一个 GOP、mini-GOP 来进行码率分配,并根据已编码完成码率大小和 internal buffer 的反馈对帧级的目标码率进行更新。最后则是将码率大小映射为实际编码的 qindex,具体来说,会利用 TPL 的数据来确定 qindex 的范围,并在这个范围内搜索得到当前目标码率下所需的 qindex。具体过程如下图所示。

VBR 模式 final-pass 的编码过程

当一帧编码完成后,编码器会将实际编码的码率和目标码率进行比较,如果与目标码率相差较大,则编码器对当前帧重新进行编码。在 SVT 的架构中,由于不同编码模块并行的特点,重新编码只需要重新进行模式选择即可,其他如运动估计等不需要重新进行。如果当前帧的码率符合要求,则将当前的码率大小作为反馈调整后续帧的编码。

SVT-AV1 性能对比

在与其他编码器的对比实验中,主要对比了 AV1 的 SVT-AV1 实现与 libaom 实现,以及 VP9、x264、x265、以及 VVenC 等其他的开源编码器。整体的测试流程如下图所示。

测试流程

测试时将不同的视频分为单独的 shot 分别进行编码,每一个 shot 中包括了相同的场景。并将原始的 1080p 视频下采样到不同的分辨率进行编码,以比较不同编码器在不同分辨率下的表现。而在评测指标方面包括了 VMAF、PSNR、SSIM 以及与 libaom AV1 相比的 BD-rate,同时也对编码时间进行了统计以作为复杂度的评估。

另外,测试过程中也对 SVT-AV1 新增的 VBR 模式编码与 per-shot 编码下的 CRF 模式编码的结果进行了对比。

测试过程中使用的数据集为 ELFuente Premium VOD 数据集。在 per-shot 编码的过程中的分辨率范围为 1080p 到 144p,使用的 QP/CRF 范围为 [19-41]。

测试结果

测试结果如下图所示,图中不同颜色的线代表了不同的编码器,不同点的代表了不同复杂度与压缩性能的操作点。SVT-AV1 可以实现在非常广的范围内的复杂度与压缩性能的折中。对于 M0 preset 来说,其压缩性能与 libaom 和 vvenc 接近,而在 M12 preset 下可以实现与 x264 veryfast 接近的编码复杂度

ELFuente 数据集对比结果

在 VBR 与 CRF 对比中,将 VBR 的目标码率设为了使用 CRF per-shot 编码中的码率。二者的对比结果如下图所示。从图中可以看出,VBR 模式的压缩性能损失是比较小的。在编码时间方面,VBR 模式的编码时间相比于 CRF 还是有所增加。因此对于 VBR 中的编码流程还有优化的空间。

VBR 模式与 CRF 模式编码结果对比

SVT AV1 fast encoding 对比

对于 SVT-AV1 快速编码的作用,下图展示了先使用 SVT-AV1 的快速模式(M8) 编码找到 RD 曲线上的操作点,再使用其他的预设的模式进行编码后的 RD 性能与直接使用期望模式编码性能的对比图。图中的纵坐标 SVT AV1 的编码结果与 libaom AV1 2 pass 编码相比的 BD-rate 大小,横坐标为编码时间。

SVT AV1 fast coding 作用

初始的快速模式设置使得 SVT AV1 可以快速的找到合适的编码参数,对减少编码时间较有帮助。下图展示了这两种编码方式下,对应编码模式循环减少的百分比与 RD 性能损失。可以看出一开始的快速编码有效的减少了编码过程中的循环所消耗的时间,并且对于 RD 性能的损失也在可以接受的范围。

Fast encoding 下的循环减少百分比与 RD 性能损失

总结

  • SVT-AV1 目前有13个复杂度模式可以选择,可以支持高延迟的 VOD 场景和低延迟的直播场景。
  • SVT-AV1 在压缩性能上,SVT-AV1 的 M12 preset 可以实现与 x264 veryfast 相同的复杂度下有 25% 的压缩性能增益,而在与 x264 veryslow 相同的压缩性能下复杂度减小 14 倍
  • SVT-AV1 目前已经支持了面向 VOD 应用的 CRF 模式编码和 VBR 模式编码。
  • 快速编码参数选择相比于动态的优化方式在减小编码复杂度上效果更为明显。

附上演讲视频:

http://mpvideo.qpic.cn/0bc3gqaaaaaaq4aecvgemjqvangdaa2aaaaa.f10002.mp4?dis_k=e8ccf037a2d0ca9bb6f7164790a13545&dis_t=1640593181&vid=wxv_2192103596077481990&format_id=10002&support_redirect=0&mmversion=false