来源:SPIE 2021 主讲人:P. Topiwala 内容整理:付一兵 本文来自 SPIE Optical Engineering + Applications, 2021,作者从以下三个角度研究了航拍 HDR 视频:a) 转换为 VVC 或 AV1 格式码流的方便性;b) 转换为 VVC 或 AV1 格式码流的效率;c) 是否存在复杂度或播放上的问题。
目录
视频产业现在处于一个十字路口,巨大的视频服务行业每年价值约 2000 亿美元。视频占互联网所有流量的 80%,这个比例还在增长。而在这 80% 的流量中,80% 是由 H.264 比特流组成的 -- 这是当今主流的视频编解码器。但 H.264 是在 2003 年实现标准化的,整整 18 年了,现在时机已经成熟,需要一个更新、更强大的编解码器来取代它。
现今,有大量的视频编解码器可用。除了传统的 MPEG-2 和 H.264 编解码器,我们现在还有 H.265、VP9、AV1、H.266、EVC 和 LC-EVC。除了最后三个(H.266、EVC 和 LCEVC),所有其他的编解码器目前都在全球 2000 亿美元/年的庞大视频服务生态系统中使用。
虽然还有专利问题,复杂度问题和其他技术细节,但它们不是这个演讲的重点,重点在于其一个应用场景 -- 如何编码和传输无人机航拍 4K HDR 视频。
简而言之,在未来,先进编解码器可以支持前所未有的应用,我们主要关注其中的两个编解码器:VVC 和 AV1。
对于先进编解码器的用户来说,无论是消费者还是流媒体公司,了解简单的原理都更有用。已经有许多关于这些编解码器的性能比较,但我们使用一些常见的 JVET/MPEG 1080p 测试序列提出了新的结果,如下图所示。VVC 比 AV1 略胜一筹,但它们都比 H.264、H.265 好用。
在常见的测试序列中对 H.264/5/6和 AOM AV1 的 FastVDO R-D 模拟。在这些测试中使用了几种不同的普通编解码器预设。VVC 似乎比 AV1 略胜一筹,但两者都大大优于 H.264 和 H.265。
在过去 40 年的技术发展中,视频压缩研发界已经开发出了需要数百页标准文本来描述的方法,实现了惊人的压缩水平。下图列出了三种领先编解码器 EVC、AV1 和 VVC 的一些关键特征。
三个领先的现代视频编解码器(ISO EVC, AOM AV1, ITU/ISO/IEC VVC)中使用的编码工具。
以帧内预测模式为例,帧内预测模式的数量也体现了视频编解码器复杂度的增长。
H.264/5/6 帧内预测模式的对比,显示了编码器复杂度的上升。
简而言之,之前存在的所有工具都被加强了,并且被添加了新的工具,所以这些编解码器实际上非常复杂。
HDR/WCG 视频数据具有高水平的亮度,至少为 1000 nits,有可能达到 10000 nits,并且具有更广泛的色域,由 BT.2020 标准提供。相比之下,BT.709 视频内容的标准动态范围(SDR)只支持到 100 nits,色彩空间也小得多。
三种常见的传递函数 BT.709,HLG,和 PQ 对输入光照度的映射情况,数轴显示信号值的刻度为 0-1,0 为黑色,1 为白色。这样做是为了使信号范围、比特深度不受影响。横轴显示的是显示设备的尼特光照水平。
对于 10bit 数据,输入的码级是 0-1023,通过各种色调映射转换为亮度级别。图中为一些用于 8bit 和 10bit 数据的常见色调映射 SDR(BT.709),以及 PQ EOTF(ST-2084)。
在扩大亮度动态范围的同时,也增加了可表示的颜色范围,RGB 中的颜色是一个三维空间,通过一个特殊的投影可以投射到两个维度。下图中 HDR 使用的是黑色三角形,跨越了相当大的色域。
为了便于可视化,色彩空间通常用 CIE 1931 来投射到两个维度。显然,BT.2020 比 BT.709 色域更广。
视频编码的问题是如何有效地支持这种更丰富的数据类型,既支持更大的亮度规模,又支持更宽的色彩范围。我们在此不深入研究编码的技术考虑,而是参考标准。相反,我们专注于为我们的特定目的,即航拍 4K HDR 视频,直接应用先进编码技术。
FastVDO 获取了一组初步的 4Kp60 10bit HDR 测试片段,以 H.265/HEVC 流的形式捕获,标称 100 Mbs,HLG 色调映射,如下图所示。
FastVDO 4Kp60 10bit HLG 无人机航拍视频。(a) fv-fair, (b) fv-stadium, (c) fv-pond, (d) fv-suburb. 这些图像只是在 8bit 计算机显示器上的屏幕截图(SDR),所以看起来没有 HDR 。这是 HLG 传输功能的一个特点,它可以在没有任何元数据的情况下以 SDR 渲染,但 HDR 显示器可以充分利用传输功能,以 HDR 显示(有更多的亮度和饱和度)。
我们在测试序列上使用两种编码方法比较了 VVC 和 AV1 编解码器。
以下为用于编码/解码的命令行示例。
VVC:支持 0-63 范围内的 QP 值,选择了 4 个 QP 值(30、35、40、45)进行测试;preset fast
vvenc -i fvfair1s.yuv -s 3840x2160 -c yuv420_10 -r 60 -q 30 --preset fast --hdr hlg_2020 -o fvfair1s-vvc-q30.vvc
SVT-AV1:支持0-51范围内的QP值,选择了 4 个 QP 值(28、33、38、43)进行测试;preset 8
ffmpeg -y -i fvpond1s.mp4 -max_muxing_queue_size 1024 -map 0:0 -c:v libsvtav1 -pix_fmt yuv420p10le - strict experimental -preset 8 -tile_columns 0 -tile_rows 0 -tier main -color_primaries bt2020 -color_trc arib-std-b67 - colorspace bt2020nc -passlogfile tmplog -qp 28 -rc 0 -pass 1 -an -f matroska NUL
ffmpeg -y -i fvpond1s.mp4 -max_muxing_queue_size 1024 -map 0:0 -c:v libsvtav1 -pix_fmt yuv420p10le - strict experimental -preset 8 -tile_columns 0 -tile_rows 0 -tier main -color_primaries bt2020 -color_trc arib-std-b67 - colorspace bt2020nc -passlogfile tmplog -qp 28 -rc 0 -pass 2 fvpond1s-av1-q28.mkv
AOM-AV1:支持0-51范围内的QP值,选择了 4 个 QP 值(33、38、43、48)进行测试;cpu-used 4
ffmpeg -y -i fvfair1s.mp4 -max_muxing_queue_size 1024 -map 0:0 -c:v libaom-av1 -pix_fmt yuv420p10le -strict experimental -cpu-used 4 -tile-rows 0 -tile-columns 0 -usage good -color_primaries bt2020 -color_trc arib-std-b67 - colorspace bt2020nc -row-mt 1 -b:v 0 -crf 33 -map_chapters 0 fvfair1s-av1-q33.mkv
VVC 和 AOM-AV1 都支持速率控制。
对于 VVC,我们将速率设置为 1、2.5、4 和 6Mbs;preset medium;2-pass 速率控制,以及 2 秒的 I-frame 刷新率(对于我们的 1s 视频片段,这意味着没有 I-frame 刷新)。
vvenc -i fvfair1s.yuv -s 3840x2160 -c yuv420_10 -r 60 -p 2 -rs 2 -b 1000000 --preset medium --hdr hlg_2020 -o fvfair1s- rlm.vvc
``
对于 AOM-AV1,我们也使用了相同的速率;cpu-used=2;2-pass 速率控制,以及超过 1s 片段的 I-frame 刷新。
ffmpeg -y -i fvfair1s.mp4 -max_muxing_queue_size 1024 -map 0:0 -c:v libaom-av1 -pix_fmt yuv420p10le -strict experimental -cpu-used 2 -tile-rows 0 -tile-columns 0 -usage good -color_primaries bt2020 -color_trc arib-std-b67 - colorspace bt2020nc -row-mt 1 -passlogfile templog -b:v 1000k -pass 1 -an -f matroska NUL
ffmpeg -y -i fvfair1s.mp4 -max_muxing_queue_size 1024 -map 0:0 -c:v libaom-av1 -pix_fmt yuv420p10le -strict experimental -cpu-used 2 -tile-rows 0 -tile-columns 0 -usage good -color_primaries bt2020 -color_trc arib-std-b67 - colorspace bt2020nc -row-mt 1 -passlogfile templog -b:v 1000k -pass 2 -map_chapters 0 fvfair1s-av1-r1m.mkv
实验结果显示,这两种编解码器在所有方面都具有相当的可比性,无论是 QP 控制还是速率控制。但是,这些特定的结果在 R-D 图上的落点是一个惊喜,至少对于 QP 控制的情况是这样。
AV1 和 VVC 的结果在设计上有很大的重叠。首先要注意,我们正在测量 10bit PSNR = 10*log10(1023^2/MSE) ~ 12 + 8bit PSNR
。也就是说,如果期望在 8bit 视频数据中获得 30-40 dB 的良好质量,应该期望在 10bit PSNR中获得 42-52 dB,获得类似的高质量。因此,在下面的图中,40dB 是好的,但不一定是高的视频质量。
考虑到这两个编解码器支持的 QP 范围,我们选择了一组 QP 值,希望能在 R-D 曲线上产生高度重叠。相反,我们发现 VVC 和 AV1 编码之间根本没有重叠,即便两个 AV1 编解码器使用了两个不同的 QP 范围。
值得注意的是,我们对所有三个编解码器进行了设置,使它们尽可能以合理的速度运行(AV1 的 cpu-used=8,VVC 的 preset=fast)。
从相对类似的 QP 水平的表现来看,VVC 似乎比 AV1 有更强大的工具。
固定 QP 的方法。在这些模拟中,VVC 为绿色,ST-AV1(8cpu)为蓝色,AOM-AV1(4cpu)为红色。尽管使用了理论上能带来重叠曲线的 QP 值,但它们是不相交的。可见 VVC 和 AV1 大致相当,但 VVC 在类似的相对 QP 水平上提供了更多的编码效率。这表明 VVC 的核心工具可能比 AV1 的工具更强大。这也表明,随着时间的推移,VVC 编码器可能会胜过 AV1。
在这里,我们专门选择重叠的目标速率范围,如果速率控制机制合理有效,可以保证有一些重叠。结果也正是如此。此外,我们选择在视频编码中使用更多的功能,对于每个编解码器,使用较慢的预设。
首先要注意的是,相对于用 QP 控制所做的模拟,我们已经大大改善了这两种编解码器的性能。这是由于我们使用了更多的 CPU(和 GPU)功率,通过使用 preset: medium (VVC)和使用 cpu-used = 2(AV1),加上速率控制。
对于VVC,我们还使用了 2-pass 速率控制,并将 I 帧的刷新时间推到视频片段的长度之外。这些额外的功能或多或少是 AV1 的默认标准(它是为流媒体视频设计的,而对于广播或现场通信来说就不那么重要了)。因此,我们在 2Mb/s 的编码视频质量上接近我们以前在 5Mb/s 时取得的效果。
使用2-pass速率控制,以及2秒的I-frame刷新率进行模拟,使它们的编码器控制合理地具有可比性。这里,VVC 是蓝色的,AOM-AV1 是绿色的。在所有的测试中,VVC 似乎在低速率范围内略微领先,而在高速率和质量方面则相反。但总的来说,这两种编解码器的性能不相上下。但这对 VVC 来说还很早,编解码器会随着时间的推移而改进。
结果发现,两个编解码器是相当可比的(VVC 在低速率下似乎更强,而 AV1 在高速率下似乎比 VVC 更强,但不是决定性的)。因此,这个重要的选择标准是一个平局。但考虑到 AV1 有 2 年多的领先优势,VVC 在编码方面也许比 AV1 有更多的改进余地。
随着 2018 年 3 月 AV1 的发布,它在转换工具(如 ffmpeg)中的收录以及播放支持(如在浏览器和移动设备中)方面都比 VVC 有很大的领先优势,在用户中享有广泛的可用性。
我们注意到,在 ITU-ISO/IEC 标准中,H.265 的市场份额在不断增长,而 H.264 仍然占据了 80% 的份额。而 H.266/VVC 是它们当之无愧的继承者。因此,在 3-5 年内,这种情况可能会发生巨大的变化。
同时,H.264 占主导地位,H.265 正在崛起,而 VVC/AV1 则争夺下一代视频编解码器的称号。此外,FastVDO 已经推出了第一个具有VVC编码的应用程序;Interdigital已经首先在 VLC 中支持了 VVC 播放。
不同编解码器在浏览器和手机上所占的市场份额,AV1 目前处于领先地位。当然,目前占主导地位的视频编解码器 H.264 在各平台都得到了支持,而且很难被取代。
除了考虑视频格式,还必须考虑底层的 HDR 结构:高动态范围以及宽色域。现今的 HDR 服务一般都是采用 H.265,但它不再是最先进的编解码器,这就是为什么我们正在研究 AV1 和 VVC,它们也支持这些。但它们到底有多方便呢?这里的答案很简单。
因此,AV1 在这一轮中获胜。
FastVDO 的屏幕截图显示支持的视频编解码器包括 VVC。在这个产品中,我们使用Fraunhofer HHI 的 VVencapp 来支持 VVC 。这个应用程序可以模拟视频源编码/解码、通道编码/解码、通道模拟,并提取接收的视频质量指标。
比较两个当前的编码器 VVC 和 AV1,并在一些 4Kp60 HDR 航拍视频上进行测试,