码率深度解析:码率的定义、单位与CBR/VBR

码率这东西,说白了就是视频在单位时间内占用的数据量。你想想看,视频本质上是一连串的图片快速播放,每张图片有多少像素、每个像素用多少bit来表示,最终都会汇总成一个数字——码率。

我刚开始做编码的时候,总觉得码率就是个简单的“大小”问题。后来踩了不少坑才明白,码率其实是画质和文件大小之间的那个“天平”。你往哪边偏,另一边就会翘起来。

码率的定义

码率(Bitrate),全称是比特率。它描述的是:每秒钟传输或处理的比特数。

公式很简单:

码率 = 总数据量 / 时长

举个例子。一个10秒钟的视频,文件大小是10MB(兆字节)。换算成比特:10MB = 10 × 8 = 80Mb(兆比特)。那么码率就是 80Mb / 10s = 8Mbps。

嗯,这里要注意:字节(Byte)和比特(bit)是两码事。1字节 = 8比特。很多新手在这里翻车,我见过有人把码率算错了十倍,结果视频传上去平台直接报错。

码率的单位

码率的单位其实就三个,从小到大排:

单位 全称 换算关系 常见场景
bps bits per second 基础单位 极低码率、文本传输
kbps kilobits per second 1 kbps = 1000 bps 语音、低清视频
Mbps megabits per second 1 Mbps = 1000 kbps 高清视频、直播推流

我个人习惯在项目里统一用Mbps。为什么呢?因为现在主流视频的码率都在几M到几十M之间,用Mbps读数最舒服。你想想看,说“这个视频码率是8000kbps”,不如直接说“8Mbps”来得干脆。

小提示: 很多编码工具(比如FFmpeg)默认用bit/s,但显示时可能自动换算。我建议你写参数时明确单位,比如 -b:v 8M 表示8Mbps,-b:v 8000k 表示8000kbps。两者等价,但前者更简洁。

固定码率(CBR)

CBR,全称Constant Bitrate。意思就是:整段视频的码率始终保持不变。

不管画面是静态的文字,还是激烈的动作场面,每秒输出的数据量都一样。听起来很公平对吧?但实际编码时,问题就来了。

我曾经做过一个直播项目,客户要求必须用CBR。结果呢?静态画面时,编码器为了凑够码率,不得不往里面塞“垃圾数据”——也就是填充比特。而到了动作场景,码率又不够用,画面直接糊成一团。

CBR的优缺点很明显:

  • 优点: 码率稳定,适合直播、视频会议等实时传输场景。带宽占用可预测,不会突然飙高。
  • 缺点: 画质不均匀。简单场景浪费码率,复杂场景画质不足。说白了就是“一刀切”,不够聪明。
避坑指南: 我曾经在某个OTT平台项目里,强制用了CBR编码。结果平台那边反馈说,部分视频在低动态场景下反而出现了奇怪的“闪烁”现象。排查了半天才发现,是填充比特导致的编码器异常。从那以后,除非客户硬性要求,我一般不用纯CBR。

可变码率(VBR)

VBR,全称Variable Bitrate。意思就是:码率根据画面复杂度动态调整。

这才是现代编码的主流做法。编码器会分析每一帧的画面,简单的画面给低码率,复杂的画面给高码率。最终在保证画质的前提下,把整体码率降下来。

你想想看,一个视频里,大部分场景可能都是对话、静态背景,只有少数几秒是爆炸、快速运动。如果全程都用高码率,那大部分码率都浪费了。VBR就是来解决这个问题的。

VBR有两种常见模式:

  • 1-pass VBR: 编码器边分析边编码,一次完成。速度快,但码率分配不够精准。
  • 2-pass VBR: 第一遍分析视频内容,记录每帧的复杂度;第二遍根据分析结果精确分配码率。质量更好,但耗时翻倍。

我个人习惯,做离线转码时一定用2-pass VBR。虽然多花一倍时间,但画质提升是肉眼可见的。直播场景没办法,只能用1-pass或者干脆用CBR。

CBR vs VBR 对比

对比维度 CBR VBR
码率波动 恒定 动态变化
画质一致性 差(简单场景好,复杂场景差) 好(全程画质均匀)
文件大小 可精确预测 不可精确预测(但可设目标)
编码耗时 快 慢(尤其2-pass)
适用场景 直播、视频会议、广播 点播、存储、流媒体
核心结论: 如果你在做点播视频(比如上传到B站、YouTube),用VBR。如果你在做直播,用CBR或者带缓冲的“受限VBR”。别搞反了,否则要么带宽爆炸,要么画质翻车。

码率与画质的关系

码率越高,画质越好——这句话对,但不全对。

为什么?因为画质还取决于编码器效率、分辨率、帧率、编码参数等等。同样的码率,用H.265(HEVC)编码比H.264能提升30%-50%的画质。你想想看,码率只是“预算”,怎么花这笔钱才是关键。

我记得有一次,一个客户非要用10Mbps的H.264去编码1080p视频,觉得码率越高越好。我建议他换成H.265,码率降到6Mbps,画质反而更好。他不信,我当场做了AB对比,他才服气。

所以,码率不是越高越好,而是够用就好。多出来的码率,要么浪费存储,要么浪费带宽。

知识体系总览

下面这张图,把本章的核心知识点串起来了。你可以把它当作一个快速索引:

码率知识体系结构图 码率(Bitrate) 定义 单位 编码模式 bps kbps Mbps CBR(固定码率) VBR(可变码率) 1-pass VBR 2-pass VBR 核心要点 • 码率 = 数据量 / 时间,单位常用Mbps • CBR码率恒定,适合直播;VBR画质均匀,适合点播 • 码率不是越高越好,够用就好,编码效率同样重要

这张图从码率的定义出发,分出了三个核心分支:定义本身、单位体系、编码模式。单位里bps/kbps/Mbps是递进关系,编码模式里CBR和VBR是并列关系,而VBR下面又细分了1-pass和2-pass。你可以把它当作本章的“地图”,哪里不懂看哪里。