速率控制模式 CBR、VBR...

了解速率控制模式:什么是 CBR、VBR、CRF和Capped-CRF?

湃客:LiveVideoStack 2022-06-06 13:08

翻译:Alex

技术审校:赵军

本文来自 OTTVerse,作者为 Jan Ozer。

速率控制模式 CBR、VBR..._第1张图片

▲扫描图中二维码了解音视频技术大会更多信息▲

Easy-Tech 029——速率控制模式

每次在使用 H.264、HEVC、VP9 或者 AV1 等面向分发的编解码器对视频文件进行编码时,你都要选择一种码率控制机制来控制码率、整体质量、瞬态质量和编码成本。常见的码率控制模式包括 CBR、VBR、CRF 和 Capped-CRF。本篇文章将向大家介绍这些模式的工作原理,它们各自的优点和缺点,如何以及何时实现它们。

我们要讨论的前两个模式,CBR(恒定码率编码)和 VBR(可变码率编码)几乎可用于每一个分发出来的编码器。后两个模式 CRF(恒定码率系数)和 Capped CRF(上限恒定码率系数)可用于 FFmpeg 中的 x264、x265、libvpx-VP9 和 libaom-AV1,但本文中只讨论 x264。

在本文的讨论中,我将用到三个文件:

测试文件(Test): 这个两分钟的短片包括 30 秒的人物对着镜头讲话的视频和 30 秒的芭蕾舞视频,分别重复两次。

足球视频: 这是一个两分钟的含有大量动作(高帧率)的足球测试视频,其中既有高帧率的区域,又有低帧率的区域。

人物近距离讲话视频: 这是一个两分钟的慢动作(低帧率)人物近距离讲话视频。

每当你为了分发视频(而非为了存档或者转码上传文件)而编码视频文件时,你都应该考虑到五个因素:兼容性、整体质量、瞬态质量、可传输性和编码成本。下面是对这五个因素的简单描述:

兼容性: 当把视频传输给播放器,它能解码和播放文件吗?这里我们讨论的是 H.264,它几乎可以和任何播放器兼容。而 HEVC、 VP9 和 AV1 都可能存在兼容问题。

整体质量: 是指视频文件的整体质量,在本文中,使用计算调和平均数的 VMAF 测量。

瞬态质量: 是指视频文件显示时所可能出现的瞬间质量问题。在本文中,由低帧 VMAF 或者文件中任意帧的最低 VMAF 分值测量。

可传输性: 向远在天边的观众传输无中断的视频是你应具备的能力。通常情况下,拥有高带宽连接的观众无需担心,但使用 3G 或类似网络连接传输视频肯定会出现问题

编码成本: 涉及多次编码的技术明显增加编码时间,如果你需要为编码 farm 付费或者使用了很多云厂商的编码基础设施(如 AWS Elemental Media Convert),那么两次编码将显著提高成本。

最后,在 FFmpeg 中,大多数编码工具都部署了 x264 和 x265 编解码器,其中有三个开关控制码率,它们分别是:

b:v :设置整体码率

maxrate:设置最大码率

bufsize :设置 VBV(Video Buffer Verifier,视频缓存检验器)大小。

让我们先从 CBR 开始。

CBR:恒定码率编码

顾名思义,当你使用 CBR(Constant Bitrate Encoding)编码时,意味着你对全部文件都使用了恒定的码率(无论视频文件中场景的复杂度如何)。当使用 FFmpeg 编码时,你可以通过对 b:v、maxrate 和 bufsize 使用相同的数据率实现 CBR,如下所示:

-b:v 5000k -maxrate 5000k -bufsize 5000k

在测试文件中,交替播放 30 秒人物近距离讲话和 30 秒芭蕾舞的视频内容,CBR 编码文件如图 1(在 Bitrate Viewer 中)。如果你仔细观察,你会看到跟踪平均码率的蓝色波浪线在码率 5000kbps 左右徘徊。

在右侧,你可以看到平均码率为 4938kbps,峰值码率为 6013kbps,高出平均码率约 20%。大多数编码器软件中,CBR 的显示都不是一条直线,但相比于下文的其他控制技术,它的可变性明显更小。

速率控制模式 CBR、VBR..._第2张图片

图 1  使用 CBR 编码的测试文件

我们稍后将回顾 CBR 的质量影响。

从可传输性的角度来说,CBR 的优势非常明显。

如果你将直播视频通过固定码率连接上传到云,或者通过受限连接将视频发送给遥远的观看者,那么视频流缺乏可变性将确保其不会中断。CBR 也是单 Pass(Single-Pass)技术,这意味着它的成本要比接下来讨论的 VBR 低。

VBR:可变码率编码

VBR(Variable Bitrate Encoding)编码的目的是达到码率目标,但是在播放期间能够根据视频内容的复杂度来调整码率。VBR 通常要求 2 pass:第一遍扫描视频,识别不同区域的复杂度;第二遍进行实际的编码。

VBR 通常通过描述最大码率在目标码率上的变化来进一步明确。你可以称下文中第一个示例为 200% 受限 VBR,因为最大码率为目标码率的两倍;第二个示例为 150% 受限 VBR,因为最大码率为目标码率的 150%;第三个示例为 110% 受限 VBR。

-b:v 5000k -maxrate 10000k -bufsize 10000k -b:v 5000k -maxrate 7500k -bufsize 7500k -b:v 5000k -maxrate 5500k -bufsize 5500k

速率控制模式 CBR、VBR..._第3张图片

图 2 使用 200% 受限 VBR 编码的测试文件

图 2 显示了使用 200% 受限 VBR 编码的测试文件的码率配置。在交替的慢动作近距离讲话视频与高速动作的芭蕾舞之间,数据波动明显。即使平均码率与 CBR 相似(分别为 5041kbps 和 4938kbps),但最大码率显著提高(分别为 11137kbps 和 6013kbps)。150% 受限 VBR 视频拥有相似的平均码率(5036kbps)和降低了 20% 的峰值码率(9090kbps)。

从可传输性角度来说,VBR 明显更具挑战,但这只有在受限连接与视频流码率接近时才会出现。如果你正在向美国、欧洲、斯堪的纳维亚地区的观众通过 50 mbps 或者更高的网速传输 5000kbps、1080p 的视频,你很可能不会出现任何传输问题。但是如果是向相同地区的观众以 40mbps 网速传输 8K 视频,那么使用 200% 受限 VBR 就有点吓人了。当然,如果是 3G 连接上的 500kbps 200% 受限 VBR,那么使用 CBR(或 110% 受限 VBR)听起来就好多了。

这一切所带来的质量影响都有哪些?

表 1 显示了真实世界中足球视频片段所使用的四种模式的得分。平均码率非常相似,峰值码率差异明显。整体 VMAF 得分非常接近。CBR 与最高 VBR 值之间的分值差小于 0.7。

速率控制模式 CBR、VBR..._第4张图片

表 1 码率控制技术的质量影响

最大的不同在低帧分值(审校者注:指以帧的粒度看 VMAF 分数,其最低单帧 VMAF 分),即瞬态质量问题的指标,其中 CBR 比 200% 受限 VBR 低了约 5.5 分。这表示一些观众有可能注意到瞬间出现的问题。有趣的是,在 200% 受限 VBR 和 150% 受限 VBR 的低帧 VMAF 之间只有 1 分之差,150% 受限 VBR 和 110% 受限 VBR 之间有两分之差。

为了进一步探索,我对比了莫斯科国立大学视频质量衡量工具中的 CBR 和 200% 受限 VBR 文件(图 3)。

上图是整个视频文件播放期间,CBR 和 200% 受限 VBR 文件的 VMAF 分值,其中 CBR 为红色,200% 受限 VBR 为绿色。

下图是上图中突出显示区域的放大图(大致为 2100 帧到 3400 帧),红色钟乳石状所表示的帧中的 CBR 质量明显低于 VBR。

速率控制模式 CBR、VBR..._第5张图片

图 3 使用 200% 受限 VBR 编码的测试文件

在图中,你可以在右下角看到 Show frame 按钮。在这段视频中,使用了相当保守的编码参数,CBR 帧和 VBR 帧之间的区别几乎忽略不计,因为其中最明显的差异只有 1~2 帧。

其他视频片段中,如果使用较低的码率编码,那么瞬态问题就会更加明显。所以大部分 VOD 生产商为了避免这些问题选择使用 VBR(而非 CBR),尤其是在向高带宽观众分发 1080p 视频时。

有趣的是,Apple 在_HLS Authoring Specifications_中支持了 200% 受限 VBR,其说明如下:“1.30. 对于 VOD 内容来说,峰值码率不应该超过平均码率的 200%。” 但是 200% 受限 VBR 是否适用于高帧率 8K 内容(可能需要 40mbps 才能达到可接受的质量)还有待观察。

现在让我们来总结一下,CBR 在成本和可传输性上胜出一筹,而 VBR 在整体质量上扳回一局。然而,CBR 所带来的瞬态质量问题风险却是实实在在的。

CRF:恒定码率系数

使用 CBR 和 VBR 时,你需要选择一个目标码率,编码器会调整视频质量以达到该目标。这种方法的问题是,如果你对所有视频片段使用了相同的码率阶梯,那么就会在容易编码的视频(如近距离讲话视频)上浪费很多不必要的带宽。

图 4 显示了使用 200% 受限 VBR 编码、目标码率为 5mbps(与足球视频相同)的近距离人物讲话视频。平均码率和峰值码率与上面的足球视频一致,但是 VMAF 分值为 97.61。

研究显示,VMAF 值一旦超过 93 分,观众便无法感知。这也是我推荐生产商把 VMAF 目标值设置为 95 作为上限的原因。如下图所示,使用该视频,你可以减少至少 60% 的码率,但仍然能够达到 VMAF 95 的目标。

速率控制模式 CBR、VBR..._第6张图片

图 4 VBR 编码的问题在于,即使对于该视频来说数据率和质量水平过高,它也会达到目标码率

所以,当使用 CBR 和 VBR 编码时,编码器会调整所需的视频质量进而达到目标码率。相比之下,使用 CRF 编码(Constant Rate Factor Encoding,一种单 pass 编码模式),你选择一种目标质量,编码器会通过调整码率达到该质量水平。CRF 值分布为从 0 到 51,数值越低,质量越高。使用 CRF 和 FFmpeg 编码如下所示:

ffmpeg -i input_file -crf 23 output_file

CRF 适用于存档或者生成需上传和转码的 mezzanine 文件。然而,从可传输性的角度来说,它并不是最理想的方法:因为你并不知道将产生的数据率,直到你编码了文件。

在人物近距离讲话视频中,CRF 值 22 生成了平均码率为 1878kbps 和 VMAF 分值为 96.29 的文件,比 VBR 编码的码率降低了 60% 以上,且质量没有明显影响。

然而,在足球视频中,CRF 值 22 产生了 10650 的平均码率,这对于 1080p 编码阶梯来说太高了。

如何才能在确保合理码率限制的同时节省可用带宽?将 CRF 和码率上限组合使用就可以,也就是 Capped CRF。

Capped CRF :上限恒定码率系数

顾名思义,Capped CRF 就是将 CRF 值与码率上限组合使用。相关的命令如下所示:

-crf 22 -maxrate 5000k -bufsize 10000k

图 5 显示了在人物近距离讲话和芭蕾舞交替出现的视频中,该命令所生成的结果。同样,虽然最大码率不是一条水平直线,但芭蕾舞 GOP 与 5000kbps 线非常接近,码率峰值为 6302kbps。在操作中,编码器使用 CRF 值对人物近距离讲话区域进行编码,并在芭蕾舞区域应用 Capped CRF。

这与 200% 受限 VBR 相比效果如何?

200% 受限 VBR 编码产生了一个平均的 VMAF 分值:97.30(以及码率 5041 kbps)。所以 Capped CRF 编码节省了约 30% 带宽,并产生一个 96.55 的平均 VMAF 值,与 200% 受限 VBR 编码相比,它们之间的差异肉眼无法察觉。然而,如你所见,码率变化显著,所以在使用受限网络连接时,很可能会影响传输能力。

速率控制模式 CBR、VBR..._第7张图片

图 5 Capped CRF 与人物近距离讲话和芭蕾舞交替出现的视频

在含有大量动作的视频中,如足球测试视频中,CRF 值在视频中许多区域所产生的码率要高于上限。在这些区域,码率由上限控制,而非 CRF 值。这种情况下,Capped CRF 不会节省太多带宽,因为编码器在不超过上限的情况下生成特定质量的视频区域很少。

表 2 显示了分别使用 200% 受限 VBR 编码和 Capped CRF(CRF 22/5 上限)的足球视频的码率数据和 VMAF 分值。可以看到它们的平均码率相近,但使用了 Capped CRF 的视频的峰值码率却低很多。平均 VMAF 分值也非常相似。

速率控制模式 CBR、VBR..._第8张图片

表 2 足球视频;200% 受限 VBR vs. Capped CRF

而使用 CBR,最主要的差异就是瞬态质量问题的指标 —— 低帧 VMAF。图 6 显示了来自 VQMT 的对比结果。同样,我在观察主要的钟乳石状所代表的帧的位置时,没有发现明显的差异。

然而,其中 CBR 只是提高了可传输性,Capped CRF 被应用于容易编码的文件中,可以提升可传输性且节省带宽。本质上,这使得 Capped CRF 成为一种 Per-Title 编码技术,你可以通过几乎所有基于 FFmpeg 的编码工具(直播和点播)来实现它。

速率控制模式 CBR、VBR..._第9张图片

图 6 200% 受限 VBR 与 Capped CRF 之间的对比

Capped CRF 也不是银弹。你应该运行自己的测试文件,然后确定视频中的瞬态问题是否比我在足球视频中看到的更明显。如果瞬态问题很少,而你在考虑使用 Capped CRF,这个时候你应该尝试不同的 CRF 级别(参见:https://streaminglearningcenter.com/learning/choosing-the-optimal-crf-value-for-capped-crf-encoding.html)。

同样,并不是所有编码器和 Codec 都能够使用 CRF 和 Capped CRF;如果你正在使用第三方的编码器(该编码器并不是基于 FFmpeg,且没有使用 x264、x265、libvpx-VP9 或者 libaom-AV1 Codec),那么 CRF 和 Capped CRF 就可能不可用。

表 3 总结了上文讨论的四种编码方法的优点和缺点。

速率控制模式 CBR、VBR..._第10张图片

表 3 四种码率控制模式对比

作者简介:

Jan Ozer,流媒体技术专家。Jan 一直致力于为专业人士提供流媒体技术培训、编码测试服务等。你可以在:

https://courses.streaminglearningcenter.com/ 上了解和学习他的课程。

致谢:

本文已获得作者 Jan Ozer 授权翻译和发布,特此感谢。

原文链接:

https://ottverse.com/what-is-cbr-vbr-crf-capped-crf-rate-control-explained/

你可能感兴趣的:(音视频,ffmpeg)