可变码率(Variable Bitrate,简称 VBR)是音频与视频编码中分配比特的一种码率控制方式,其单位时间输出的数据量随内容复杂度变化,而不是保持恒定。复杂、运动剧烈的片段获得较高码率,简单、平缓的片段获得较低码率,从而在同等文件体积下取得更好的质量,或在同等质量下占用更少空间。与之相对的固定码率(CBR)则基本维持码率不变。这种方式广泛用于 MP3、AAC、H.264 等音视频格式。[1][2]
定义
可变码率是电信与计算机领域中用来描述声音或视频编码所用码率的术语。它的特点是单位时间输出的数据量随时间片段变化:内容复杂的片段分到更高的码率,因而占用更多存储空间,较简单的片段占用较少空间;这些不同码率的平均值构成整个文件的平均码率。[1]
与它相对的是固定码率(Constant Bitrate,简称 CBR),后者在整段素材中维持大致不变的数据输出量。用固定码率存储时,复杂部分容易因码率不足而质量下降,简单部分则会浪费比特;可变码率通过在两者之间调配比特,使有限空间得到更有效的利用。[3][1]
选择哪种码率控制方式只影响编码环节。无论编码器采取什么策略分配比特,可变码率数据流的解码过程都是相同的。[1]
原理
编码器在编码过程中评估输入信号的复杂度,并据此决定每一段时间投入多少比特,其追求的目标通常是让输出质量保持稳定,而不是让码率数值保持稳定。[2] 难以编码的段落获得更多比特,要求不高的段落少用比特,这就是可变码率在相同数据上比固定码率具有更好质量体积比的原因。[1]
实现可变码率有单遍编码和多遍编码两条路径。单遍编码边分析边编码,适用于速度优先的场合,例如实时编码,其参数常以固定质量、最小与最大码率范围或平均码率的形式给出。多遍编码面向质量优先的场合,需要反复读入输入数据,耗时明显更长,并且由于固定码率不允许调整码率,这种编码方式只用于可变码率。[1] 最常见的是两遍编码:第一遍分析素材并把结果写入日志,第二遍再利用这些信息提高编码质量。[1]
按其控制目标,可以分出几种典型模式。固定质量模式由使用者给定一个主观质量等级,编码器自行决定所需比特,输出质量较为一致,代价是事先无法得知文件大小。[4][1] 无约束可变码率给定一个平均码率,编码器在这一平均值的约束下尽可能提升质量;受约束可变码率在此基础上还限定最大码率与缓冲窗口,以适应带宽受限的链路。[4]
平均码率(Average Bitrate,简称 ABR)与可变码率关系密切:它同样让码率逐段浮动,但以使用者指定的平均值为目标,因此文件大小比纯质量模式更好预估,部分编码器还用两遍编码来尽量贴近这一目标值。[5] 文件的平均码率可由总数据量与时长算出,即 $平均码率 = 文件总比特数 ÷ 时长$。[1]
发展历程
MP3 格式最初的标准实现中并没有可变码率功能。MP3 把音频切成许多各自带有码率的帧,因此可以在同一个文件内动态改变码率,这一特性后来被广泛采用。[6]
在编码器层面,开源 MP3 编码器 LAME 于 1999 年 6 月随 3.11 版首次发布可变码率实现;2003 年 12 月的 3.94 版大幅改进默认设置,2007 年 5 月的 3.98 版又显著提升了默认可变码率的编码速度。[7]
早期实现同时面临质量与兼容性两方面的问题。在单调或音调变化很小的素材(例如有声读物、原声音乐)上,早期的可变码率算法偶尔会引入可听见的失真,在安静段落中表现为类似数字啾声的杂音,这些问题随后续算法改进而得到处理。[1] 另一方面,过去不少硬件与软件播放器无法正确解码可变码率文件,其中一部分原因在于当时的编码器自身尚不成熟,出于兼容考虑,固定码率一度更常被采用;到 2006 年 12 月,只支持固定码率的设备已基本被淘汰,因为绝大多数便携式音乐播放器和软件都能支持可变码率文件。[1]
可变码率在早期曾被质疑质量不可预测,此后逐渐被认为技术已经成熟,并在多数场合比固定码率更受青睐。[5]
应用
音频方面,MP3、WMA、AAC 文件都可以选择以可变码率编码,Opus 与 Vorbis 则默认采用可变码率。[1] 在 无损压缩 方案如 FLAC、Apple Lossless 中,可变码率是内生的:若改用固定码率,码率必须按源信号可能出现的最复杂情形设定,否则无法完整还原,压缩便无从谈起。[1][5]
视频方面,MPEG-2、MPEG-4 Part 2(如 Xvid、DivX)、MPEG-4 Part 10/H.264、Theora、Dirac 等压缩格式普遍使用可变码率编码。[1] 以 x264 为例,它提供固定 QP、恒定速率因子(Constant Rate Factor,简称 CRF)和平均码率等码率控制方式,其中默认的 CRF 追求主观质量稳定,瞬时码率随场景复杂度波动,同属可变码率的范畴。
从使用场合看,可变码率更适合存储与归档,能把有限的存储空间优先用在对质量影响最大的内容上,而不太适合流式传输。[2] 在 流媒体 场景中常用的做法是给码率加上约束,例如限制最大码率并设置缓冲窗口;把恒定速率因子与码率上限组合使用的上限 CRF 属于单遍编码,与双遍可变码率相比可以降低编码开销。[4][8]
在直播、视频会议一类要求传输平稳的环境中,固定码率在可传输性上更有优势,因为其码率波动明显更小。[8]
局限
可变码率的编码过程比固定码率复杂,所需时间也可能更长,并且部分硬件不一定兼容可变码率文件。[1]
文件大小难以事先确定。纯质量模式下尤其如此,因为成片体积直接取决于素材复杂度;如果必须得到特定大小的文件,通常改用平均码率方式编码。[4][5]
瞬时码率可能超出通信链路的传输能力,从而在传输过程中造成问题。常用的缓解办法是限制瞬时码率的上限,或者扩大播放缓冲,而后者以增加等待时间为代价。[1]
多遍编码无法用于实时编码、直播与流式直播,只能用于对时间要求不高的离线处理。[1]
此外,对采用可变码率的语音或其他信号做加密时,码率变化的模式可能泄露语言或词句的线索,因此这类加密只能提供有限的隐私保护。[9]
参见
参考资料
- Variable bitrate . wikipedia.org [引用日期2026-09-27]
- 可变码率 . c114.com.cn [引用日期2026-09-27]
- VBR与CBR的区别是什么? . aliyun.com [引用日期2026-09-27]
- variable-bit-rate--vbr--encoding . microsoft.com [引用日期2026-09-27]
- Bitrate – Wikipedia . wikipedia.org [引用日期2026-09-27]
- MP3 . wikipedia.org [引用日期2026-09-27]
- LAME - The Wayback Machine . archive.org [引用日期2026-09-27]
- 了解速率控制模式:什么是 CBR、VBR、CRF和Capped-CRF? . tencent.com.cn [引用日期2026-09-27]
- [科普中国]-可变比特率 - 版权归原作者所有,如有侵权,请联系我们 . imac.edu.cn [引用日期2026-09-27]
浏览次数:0 次
阅读量:0 次 · 阅读完成量:0 次
最近更新:2026-09-27T15:56:54Z
完成率 = 阅读完成量 ÷ 阅读量,分母是阅读量不是浏览次数 —— 关了 JS 的、秒退的都在浏览次数里、不在阅读量里。 详细口径在后台的「数据统计」页。