视频产业现在处于一个十字路口,巨大的视频服务行业每年价值约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亿美元/年的庞大视频服务生态系统中使用。
虽然还有专利问题,复杂度问题和其他技术细节,但它们不是这个演讲的重点,重点在于其一个应用场景--如何编码和传输无人机航拍4KHDR视频。
对于先进编解码器的用户来说,无论是消费者还是流媒体公司,了解简单的原理都更有用。已经有许多关于这些编解码器的性能比较,但我们使用一些常见的JVET/MPEG1080p测试序列提出了新的结果,如下图所示。VVC比AV1略胜一筹,但它们都比H.264、H.265好用。
在常见的测试序列中对H.264/5/6和AOMAV1的FastVDOR-D模拟。在这些测试中使用了几种不同的普通编解码器预设。VVC似乎比AV1略胜一筹,但两者都大大优于H.264和H.265。
在过去40年的技术发展中,视频压缩研发界已经开发出了需要数百页标准文本来描述的方法,实现了惊人的压缩水平。下图列出了三种领先编解码器EVC、AV1和VVC的一些关键特征。
三个领先的现代视频编解码器(ISOEVC,AOMAV1,ITU/ISO/IECVVC)中使用的编码工具。
以帧内预测模式为例,帧内预测模式的数量也体现了视频编解码器复杂度的增长。
H.264/5/6帧内预测模式的对比,显示了编码器复杂度的上升。
简而言之,之前存在的所有工具都被加强了,并且被添加了新的工具,所以这些编解码器实际上非常复杂。
HDR/WCG视频数据具有高水平的亮度,至少为1000nits,有可能达到10000nits,并且具有更广泛的色域,由BT.2020标准提供。相比之下,BT.709视频内容的标准动态范围(SDR)只支持到100nits,色彩空间也小得多。
三种常见的传递函数BT.709,HLG,和PQ对输入光照度的映射情况,数轴显示信号值的刻度为0-1,0为黑色,1为白色。这样做是为了使信号范围、比特深度不受影响。横轴显示的是显示设备的尼特光照水平。
对于10bit数据,输入的码级是0-1023,通过各种色调映射转换为亮度级别。图中为一些用于8bit和10bit数据的常见色调映射SDR(BT.709),以及PQEOTF(ST-2084)。
在扩大亮度动态范围的同时,也增加了可表示的颜色范围,RGB中的颜色是一个三维空间,通过一个特殊的投影可以投射到两个维度。下图中HDR使用的是黑色三角形,跨越了相当大的色域。
为了便于可视化,色彩空间通常用CIE1931来投射到两个维度。显然,BT.2020比BT.709色域更广。
视频编码的问题是如何有效地支持这种更丰富的数据类型,既支持更大的亮度规模,又支持更宽的色彩范围。我们在此不深入研究编码的技术考虑,而是参考标准。相反,我们专注于为我们的特定目的,即航拍4KHDR视频,直接应用先进编码技术。
FastVDO获取了一组初步的4Kp6010bitHDR测试片段,以H.265/HEVC流的形式捕获,标称100Mbs,HLG色调映射,如下图所示。
FastVDO4Kp6010bitHLG无人机航拍视频。(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)进行测试;presetfast
vvenc-ifvfair1s.yuv-s3840x2160-cyuv420_10-r60-q30--presetfast--hdrhlg_2020-ofvfair1s-vvc-q30.vvcSVT-AV1:支持0-51范围内的QP值,选择了4个QP值(28、33、38、43)进行测试;preset8
ffmpeg-y-ifvpond1s.mp4-max_muxing_queue_size1024-map0:0-c:vlibsvtav1-pix_fmtyuv420p10le-strictexperimental-preset8-tile_columns0-tile_rows0-tiermain-color_primariesbt2020-color_trcarib-std-b67-colorspacebt2020nc-passlogfiletmplog-qp28-rc0-pass1-an-fmatroskaNUL代码语言:javascript复制ffmpeg-y-ifvpond1s.mp4-max_muxing_queue_size1024-map0:0-c:vlibsvtav1-pix_fmtyuv420p10le-strictexperimental-preset8-tile_columns0-tile_rows0-tiermain-color_primariesbt2020-color_trcarib-std-b67-colorspacebt2020nc-passlogfiletmplog-qp28-rc0-pass2fvpond1s-av1-q28.mkvAOM-AV1:支持0-51范围内的QP值,选择了4个QP值(33、38、43、48)进行测试;cpu-used4
ffmpeg-y-ifvfair1s.mp4-max_muxing_queue_size1024-map0:0-c:vlibaom-av1-pix_fmtyuv420p10le-strictexperimental-cpu-used4-tile-rows0-tile-columns0-usagegood-color_primariesbt2020-color_trcarib-std-b67-colorspacebt2020nc-row-mt1-b:v0-crf33-map_chapters0fvfair1s-av1-q33.mkv速率控制VVC和AOM-AV1都支持速率控制。
对于VVC,我们将速率设置为1、2.5、4和6Mbs;presetmedium;2-pass速率控制,以及2秒的I-frame刷新率(对于我们的1s视频片段,这意味着没有I-frame刷新)。
vvenc-ifvfair1s.yuv-s3840x2160-cyuv420_10-r60-p2-rs2-b1000000--presetmedium--hdrhlg_2020-ofvfair1s-rlm.vvc``对于AOM-AV1,我们也使用了相同的速率;cpu-used=2;2-pass速率控制,以及超过1s片段的I-frame刷新。
ffmpeg-y-ifvfair1s.mp4-max_muxing_queue_size1024-map0:0-c:vlibaom-av1-pix_fmtyuv420p10le-strictexperimental-cpu-used2-tile-rows0-tile-columns0-usagegood-color_primariesbt2020-color_trcarib-std-b67-colorspacebt2020nc-row-mt1-passlogfiletemplog-b:v1000k-pass1-an-fmatroskaNUL代码语言:javascript复制ffmpeg-y-ifvfair1s.mp4-max_muxing_queue_size1024-map0:0-c:vlibaom-av1-pix_fmtyuv420p10le-strictexperimental-cpu-used2-tile-rows0-tile-columns0-usagegood-color_primariesbt2020-color_trcarib-std-b67-colorspacebt2020nc-row-mt1-passlogfiletemplog-b:v1000k-pass2-map_chapters0fvfair1s-av1-r1m.mkv实验结果实验结果显示,这两种编解码器在所有方面都具有相当的可比性,无论是QP控制还是速率控制。但是,这些特定的结果在R-D图上的落点是一个惊喜,至少对于QP控制的情况是这样。
AV1和VVC的结果在设计上有很大的重叠。首先要注意,我们正在测量10bitPSNR=10*log10(1023^2/MSE)~12+8bitPSNR。也就是说,如果期望在8bit视频数据中获得30-40dB的良好质量,应该期望在10bitPSNR中获得42-52dB,获得类似的高质量。因此,在下面的图中,40dB是好的,但不一定是高的视频质量。
考虑到这两个编解码器支持的QP范围,我们选择了一组QP值,希望能在R-D曲线上产生高度重叠。相反,我们发现VVC和AV1编码之间根本没有重叠,即便两个AV1编解码器使用了两个不同的QP范围。
值得注意的是,我们对所有三个编解码器进行了设置,使它们尽可能以合理的速度运行(AV1的cpu-used=8,VVC的preset=fast)。
从相对类似的QP水平的表现来看,VVC似乎比AV1有更强大的工具。
在这里,我们专门选择重叠的目标速率范围,如果速率控制机制合理有效,可以保证有一些重叠。结果也正是如此。此外,我们选择在视频编码中使用更多的功能,对于每个编解码器,使用较慢的预设。
首先要注意的是,相对于用QP控制所做的模拟,我们已经大大改善了这两种编解码器的性能。这是由于我们使用了更多的CPU(和GPU)功率,通过使用preset:medium(VVC)和使用cpu-used=2(AV1),加上速率控制。
结果发现,两个编解码器是相当可比的(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。在这个产品中,我们使用FraunhoferHHI的VVencapp来支持VVC。这个应用程序可以模拟视频源编码/解码、通道编码/解码、通道模拟,并提取接收的视频质量指标。
比较两个当前的编码器VVC和AV1,并在一些4Kp60HDR航拍视频上进行测试,