翻译:Alex

技术审校:赵军

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

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


速率控制模式

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的显示都不是一条直线,但相比于下文的其他控制技术,它的可变性明显更小。

图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

图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。

表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。

图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的目标。

图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编码相比,它们之间的差异肉眼无法察觉。然而,如你所见,码率变化显著,所以在使用受限网络连接时,很可能会影响传输能力。

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

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

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

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

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

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

图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总结了上文讨论的四种编码方法的优点和缺点。

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

作者简介:

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

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

致谢:

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

原文链接:

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


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

  1. Capped CRF:节省编码成本和数据流

    Capped CRF编码是一种单通道编码方法,与双通道VBR相比,可以节省编码成本.Capped CRF也是一种简单的per-title编码方法,可以降低带宽成本并且提高观众的体验质量.本文来自资深多 ...

  2. 摄像头编码模式定码率CBR和变码率VBR有什么区别

    Q: IPC编码模式定码率CBR和变码率VBR有什么区别? A:区别如下: 定码率CBR:相机将以恒定的编码码率发送实况数据 变码率VBR:相机根据图像质量动态的调整实况码率

  3. 【FFmpeg编码】了解速率控制模式(x264、x265、vpx)

    了解速率控制模式(x264.x265.vpx) 2017 年 3 月 1 日 直接说结论 Archival - CRF that gives you the quality you want. Str ...

  4. UBR/CBR/VBR

    CBR,VBR,ABR,UBR的特性区别: 未定比特速率(UBR:Unspecified Bit Rate):对传输速率没有指定,但可靠性要求很高,即所谓"尽力传输"(Best E ...

  5. BiLSTM, CRF,BiLSTM+CRF原理讲解以及viterbi算法python实现

    目录 1 训练数据 2 模型结构 2.1 BiLSTM 2.1.1 结构 2.1.2 预测 2.1.3 缺点 2.2 CRF 2.2.1 基础概念 2.2.2 如何计算特征函数 2.2.3 如何求解归 ...

  6. 音视频中的CBR,VBR,ABR

    视频码率CBR和VBR   固定码率(CBR)与可变码率(VBR) 一般在我们输出视频文件的时候都会碰到一个选择即CBR与VBR,CBR的英文全称是Constant Bit Rate翻译过来是固定码率 ...

  7. MPEG简介 + 如何计算 CBR/VBR MP3 的播放时间

    [此文目的]  1.  了解 MPEG相关知识  2.  了解 MP3 的常见术语含义  3.  详解 VBR MP3的帧头格式及含义  4.  搞懂如何去计算 CBR和 VBR的 MP3文件的播放时 ...

  8. Bilstm+crf中的crf详解

    本文是对bilstm+crf模型中的crf进行讲解,并不是完整的条件随机场的讲解. 如果对命名实体识别还不清楚的同学,可以先看这篇文章.代码在这里. 模型如下图所示. 我们已知lstm的输出就是每个字 ...

  9. CRF++:一个 CRF 工具包

    目录 参考 一.安装 二.使用 2.1 数据文件格式 2.2 模板文件 2.3 训练

  10. 码率控制(一):理解码率控制模式(x264,x264,vpx)

    码率控制(一):理解码率控制模式(x264,x264,vpx) 什么是"码率控制"?它是编码器决定为每帧视频分配多少比特的工具. 视频编码(有损)的目标是尽可能多的节省比特(码率) ...

最新文章

  1. Error from server (Forbidden): Forbidden (user=system:anonymous, verb=get, resource=nodes, subresour
  2. mysql 查看表v空间自增涨_MySQL InnoDB表空间加密
  3. shell读取文件并且遍历输出
  4. 别把机器学习和人工智能搞混了! 1
  5. Outlook 2013中 IMAP配置
  6. 哈工大2015秋 编译原理课程实验1:词法分析
  7. 人工智能机器学习笔记 10月10日
  8. Unity游戏接入Steam成就
  9. 深度linux升级,测试从Deepin Linux 15升级到Deepin Linux v20
  10. 三款Linux文件传输工具简单介绍
  11. 区块链之零知识证明(zk-SNARK从小白到明白)
  12. 魔兽世界国服服务器稳定,《魔兽世界》国服大服务器功能实装启动
  13. python爬虫设计图片大全_PYTHON爬虫——必应图片关键词爬取
  14. visual C#(二十五)实现UWP应用的用户界面
  15. Python flask实战订餐系统微信小程序-16后台管理系统其他页面调整
  16. 从牛顿-莱布尼兹公式到变限积分求导
  17. 使用setBounds()函数设置Java布局
  18. win10输入法不能切换_怎么解决win10系统微软输入法打不出汉字
  19. Javaweb酒店预约管理系统(框架SpringBoot+Vue)
  20. 前端练习 静态网页(一):导航栏

热门文章

  1. 力扣刷题第5天——Z字形变换(N字形似乎更贴切)
  2. 基于SLAM的机器人的自主定位导航
  3. php计算圆的面积怎么带单位_圆的面积计算公式的教学演示工具的制作方法
  4. 华为云、百度、斗鱼的技术专家聚到一起在探讨什么?
  5. 求职面试准备——自我介绍
  6. 弘辽科技:淘宝保险保证金怎么开通?它和消保保证金有什么区别?
  7. mac电脑如何设置开机启动项
  8. 四、随机变量及其分布函数的基本定义和性质 random variables and distribution
  9. 使用nginx配置一级域名和多个二级域名
  10. android强制开启深色模式bug,强制深色模式软件