3、码率与清晰度的博弈:码率太高会卡,码率太低会糊,如何找到平衡点?
推流这件事,说白了就是在「带宽」和「画质」之间走钢丝。
码率设高了,画面是清晰了,但观众那边缓冲转圈圈。码率设低了,倒是不卡了,但画面糊成一团,人脸都看不清。我刚开始做直播系统时,就吃过这个亏——给一个演唱会推了 8Mbps 的流,结果三分之一的观众在弹幕里骂「卡成 PPT」。
那到底怎么选?今天咱们就把这笔账算清楚。
码率到底是什么?
码率,就是每秒钟传输的视频数据量。单位是 bps(比特每秒),我们常用的是 Kbps 和 Mbps。
- 1 Mbps = 1000 Kbps
- 1 Kbps = 1000 bps
举个例子:你设了 2 Mbps 的码率,意思就是每秒钟要往网络里塞 2 兆比特的数据。网络水管就这么粗,塞多了就堵车。
核心公式:
码率 = 分辨率 × 帧率 × 色彩深度 × 压缩比
压缩比由编码器决定,H.264 通常能压到原始数据的 1/100 ~ 1/500。
码率太高会怎样?
你想想看,观众的网络是动态的。Wi-Fi 可能突然掉速,4G 可能信号不好。你推 6 Mbps,观众实际带宽只有 4 Mbps,那结果就是——
- 播放器开始缓冲,转圈圈
- 丢帧、跳帧,画面一顿一顿
- 严重时直接断开连接
我在项目中遇到过一位主播,为了追求「超清」,硬是把码率拉到 10 Mbps。结果他自己看着不卡,因为他在机房内网测的。观众在外面用手机看,卡得直接关直播。嗯,这就是典型的「实验室环境骗了自己」。
码率太低会怎样?
码率低了,带宽压力小了,但编码器为了把数据塞进小水管,只能牺牲画质。
- 画面出现马赛克(块效应)
- 运动场景糊成一团
- 文字边缘发虚,看不清
我记得有一次给在线教育平台做优化,老师用的是 500 Kbps 推流。静态板书还行,一旦老师翻页或者用手势比划,画面瞬间糊掉。学生反馈「老师写的公式看不清」。后来我们把码率提到 1.2 Mbps,问题才解决。
避坑指南:我曾经见过有人把 1080p 视频用 300 Kbps 去推,还开了「超清」标签。这纯粹是自欺欺人。码率不够,分辨率再高也是白搭。
如何找到平衡点?
这里没有万能公式,但有经验法则。我个人习惯按「场景 + 分辨率」来定基准值,再根据实际网络调整。
| 场景 | 分辨率 | 推荐码率(H.264) | 推荐码率(H.265) |
|---|---|---|---|
| 静态画面(PPT、桌面) | 1920×1080 | 1.0 ~ 1.5 Mbps | 0.6 ~ 1.0 Mbps |
| 普通对话(人物+背景) | 1920×1080 | 2.0 ~ 3.0 Mbps | 1.2 ~ 2.0 Mbps |
| 运动场景(游戏、体育) | 1920×1080 | 4.0 ~ 6.0 Mbps | 2.5 ~ 4.0 Mbps |
| 手机竖屏直播 | 720×1280 | 1.5 ~ 2.5 Mbps | 1.0 ~ 1.5 Mbps |
为什么 H.265 码率更低?因为它压缩效率更高,同样的画质只需要 H.264 的 60%~70% 码率。但解码更费性能,老手机可能扛不住。
动态码率:更聪明的做法
固定码率就像开定速巡航——路况好还行,遇到堵车就完蛋。更聪明的做法是「动态码率」(VBR 或 ABR)。
- CBR(固定码率):码率恒定,适合对延迟要求极高的场景(如视频会议)。但浪费带宽,静态画面也占满码率。
- VBR(可变码率):码率随画面复杂度变化。静态画面用低码率,运动画面用高码率。省带宽,画质更稳定。
- ABR(平均码率):在 VBR 基础上加一个平均目标,防止码率波动太大。我一般推荐这个。
我的习惯:推流时用 ABR,目标码率设为表格中的推荐值,最大码率设为推荐值的 1.5 倍。这样既能保证大部分场景清晰,又不会在复杂画面时崩掉。
一个实用的测试方法
你不可能等观众骂了再调码率。我建议上线前做「三档测试」:
- 低档:目标码率的 70%
- 中档:目标码率(推荐值)
- 高档:目标码率的 130%
分别推流 30 秒,录下来。然后在不同网络环境下播放:
- Wi-Fi(稳定)
- 4G(波动)
- 弱网(模拟限速 2 Mbps)
看看哪个档位在「画质可接受」和「不卡顿」之间最平衡。我做过的大多数项目,最终都落在中档附近。
码率与分辨率的配合
很多人以为「分辨率越高越好」,其实不然。分辨率高但码率不够,画面反而比低分辨率更糊。因为编码器要处理更多像素,每个像素分到的码率更少。
经验法则:
- 1080p 至少需要 2 Mbps(H.264)
- 720p 至少需要 1 Mbps(H.264)
- 480p 至少需要 0.5 Mbps(H.264)
如果带宽不够,降分辨率比降帧率更有效。
举个例子:你只有 1.5 Mbps 的带宽。推 1080p 会糊,推 720p 反而清晰。因为 720p 的像素少,每个像素能分到更多码率。我做过对比测试,同样 1.5 Mbps,720p 的画面主观质量明显优于 1080p。
SVG:码率与清晰度的平衡决策树
下面这张图帮你快速决策:
总结一下
码率不是越高越好,也不是越低越好。关键看你的观众在用什么网络、看什么内容。
- 带宽充足:用推荐码率的中高档,保证画质
- 带宽有限:降分辨率,而不是降帧率
- 不确定:用 ABR 动态码率,让编码器自己调整
最后说一句:别迷信「超清」标签。观众只看实际画面,不看标签。你推一个码率不够的 1080p,还不如一个码率充足的 720p 来得实在。