news 2026/10/26 6:55:53

WebRTC 入门:一分钟带你理解比特率

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
WebRTC 入门:一分钟带你理解比特率

用 水 来举例子从而理解比特率

  1. 网络带宽等于水管的容量

    • 粗水管,水流大相当于光纤宽带

    • 细水管,水流小相当于 4G 网络

  2. 比特率设置等于水龙头开度

    • 水龙头开的大,水流急相当于高比特率

    • 水龙头开的小,水流小相当于低比特率

  3. 网络质量等于水压

    • 水压稳定,水流顺畅相当于网络好

    • 水压不稳定,水流断续相当于网络差


WebRTC 里的比特率

比特率等于单位时间内传输的数据量,单位是kbps / Mbps。

在 WebRTC 的日常讨论中,大家常说的“码率”,可以宏观地理解为比特率,通常指音视频的媒体码率,而不是底层网络的总流量。

在 WebRTC 中,比特率有几个不同的概念:

类型含义举例
编码比特率编码器产生的数据速率水泵的抽水速度
发送比特率实际发送的数据速率水龙头出水速度
接收比特率对方实际接收的数据速率对方接水的速度
目标比特率系统想要达到的速率期望的出水速度
可用带宽网络实际能承载的速率水管的最大通水量

这些值通常是不一样的,WebRTC 的目标是让它们尽可能匹配。


WebRTC 对比特率的自动调节

WebRTC 通常使用以 GCC(Google Congestion Control)为代表的拥塞控制算法,根据网络反馈来持续动态调节比特率,网络变好,提高比特率(画面更清晰);网络变差,降低比特率(保证不卡顿)。整个过程的原则是:宁愿水流小,也不能断流。

工作流程如下:

  1. 开始通话
  2. 初始探测(较小比特率)
  3. 逐步增加比特率
  4. 检测网络反馈(丢包率、延迟、抖动)
  5. 判断网络状态
    • 良好: 继续增加比特率
    • 变差: 降低比特率
  6. 持续循环

如何设置比特率

通过RTCRtpSender.setParameters

const sender = pc.getSenders().find(s => s.track.kind === 'video'); const params = sender.getParameters(); params.encodings[0].maxBitrate = 1500 * 1000; // 1.5 Mbps params.encodings[0].minBitrate = 300 * 1000; sender.setParameters(params);

但是需要注意:这里的设置只是设置上限和下限,最终能否达到是由 GCC 决定。

实际项目中,通常只设置maxBitrate,让 WebRTC 在网络变差时可以自由下降,比强行限制最小码率更稳定。


常见分辨率对应的帧率和码率

下表为常见经验值,实际效果会受到编码器、内容复杂度和网络状况等影响。

分辨率帧率建议码率
360p15fps300–500 kbps
480p30fps500–1000 kbps
720p30fps1–2 Mbps
1080p30fps3–4 Mbps

常见误区

比特率是不是越高越好?

不是。WebRTC 的目标不是“越清晰越好”,而是,在不造成卡顿的前提下,尽可能清晰。

比特率需要与当前网络条件匹配:

  1. 比特率太高(水龙头开得很大、水流很急,但水管不够粗)
    • 网络带宽不够用
    • 结果:视频卡顿、语音断断续续
    • 就像用 4G 网络看 4K 电影
  2. 比特率太低(水管很粗,但水龙头开得很小)
    • 网络带宽够,但发送的数据太少
    • 结果:画面模糊、马赛克多
    • 就像用光纤网络看 240p 的视频

我已经设置了比特率,为什么实际达不到?

这是正常现象。

通过setParameters设置的比特率只是期望范围,
WebRTC 会根据实时网络情况自动调整,最终是否能达到目标,由拥塞控制算法决定。


码率、比特率、带宽是一回事吗?

不是一回事

  • 带宽:网络最多能承载多少数据(水管容量)
  • 比特率 / 码率:当前实际发送的数据速率(水流大小)

弱网下,WebRTC 是先降画质还是先卡顿?

通常是先降码率,再降画质,尽量避免卡顿。

这也是 WebRTC 拥塞控制的核心原则:宁愿清晰度下降,也要保证播放连续


是不是应该手动频繁调整比特率?

一般不建议。

WebRTC 已经内置了成熟的自动调节机制,频繁手动干预,反而可能与系统策略冲突,导致效果变差。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/11 21:52:48

黑名单动态更新:及时封禁违规IP和设备指纹

黑名单动态更新:及时封禁违规IP和设备指纹 在电商平台大促的前夜,系统突然遭遇一波异常登录洪流——成千上万的请求来自全球各地的代理IP,用户行为高度一致,显然是自动化脚本在进行撞库攻击。传统基于规则的防火墙只能识别已知模式…

作者头像 李华
网站建设 2026/10/10 0:21:03

Java毕设项目推荐-SpringBoot+Vue项目大学生网络教学平台的设计与实现基于SpringBoot+Vue 大学生在线教育平台设计与实现【附源码+文档,调试定制服务】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/10/21 18:29:07

V2EX社区互动:在极客圈层传播TensorRT价值

V2EX社区互动:在极客圈层传播TensorRT价值 在V2EX的某个深夜技术帖里,一位开发者贴出一张性能对比图:同样的ResNet-50模型,在T4 GPU上用PyTorch推理每秒只能处理380张图像,而切换到TensorRT后飙升至接近1700张——吞吐…

作者头像 李华
网站建设 2026/10/23 13:22:57

微博话题运营:制造#AI推理革命#等热门讨论

微博话题运营中的AI推理加速实践 在社交媒体平台,热点话题的诞生往往只在一瞬之间。一条普通的技术动态,可能因为几条关键转发而演变为全网热议的#AI推理革命#;一个原本冷门的科技标签,也可能在数小时内登上热搜榜首。这种“病毒式…

作者头像 李华
网站建设 2026/10/18 3:58:59

【课程设计/毕业设计】基于Spring Boot+Vue的非遗文创产品管理系统非物质文化遗产(非遗)文创产品【附源码、数据库、万字文档】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/10/24 3:13:04

运营商智能客服升级:基于TensorRT的大模型部署实践

运营商智能客服升级:基于TensorRT的大模型部署实践 在通信运营商的日常运营中,每天要处理数以百万计的用户咨询——从查询话费余额、办理套餐变更,到投诉网络故障。传统客服系统依赖人工坐席与规则引擎,面对如此庞大的并发请求&a…

作者头像 李华