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 倍。这样既能保证大部分场景清晰,又不会在复杂画面时崩掉。

一个实用的测试方法

你不可能等观众骂了再调码率。我建议上线前做「三档测试」:

  1. 低档:目标码率的 70%
  2. 中档:目标码率(推荐值)
  3. 高档:目标码率的 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:码率与清晰度的平衡决策树

下面这张图帮你快速决策:

码率与清晰度平衡决策树 码率与清晰度平衡决策树 你的可用带宽是多少? 带宽 < 2 Mbps 带宽 ≥ 2 Mbps 降分辨率到 720p 用 H.265 编码 保持 1080p 分辨率 用 ABR 动态码率 码率设为 1.5 Mbps 码率设为 1.2 Mbps 码率设为 3.0 Mbps 码率设为 4.0 Mbps 💡 说明 以上数值基于 H.264 编码,普通对话场景。 运动场景需上浮 50%~100%,静态场景可下调 30%。

总结一下

码率不是越高越好,也不是越低越好。关键看你的观众在用什么网络、看什么内容。

  • 带宽充足:用推荐码率的中高档,保证画质
  • 带宽有限:降分辨率,而不是降帧率
  • 不确定:用 ABR 动态码率,让编码器自己调整

最后说一句:别迷信「超清」标签。观众只看实际画面,不看标签。你推一个码率不够的 1080p,还不如一个码率充足的 720p 来得实在。