WebRTC[5]-WebRTC拥塞控制之REMB and GCC

目录

前言

正文

基于丢包的带宽估计算法

基于延时的带宽估计算法

REMB

GCC

参考文献


前言

WebRTC在运行过程中经常会遇到网络拥塞问题,网络拥塞(congestion)是指在分组交换网络中传送分组的数目太多时,由于存储转发节点的资源有限而造成网络传输性能下降的情况。当网络发生拥塞时,一般会出现数据丢失,时延增加,吞吐量下降,严重的时候甚至会导致“拥塞崩溃”(congestion collapse)。WebRTC处理网络拥塞问题时需要非常准确的带宽估计算法,本文重点将讲述WebRTC的两种带宽估计算法。

《WebRTC工作原理精讲》系列-总览

正文

WebRTC有基于丢包的带宽估计和基于延时的带宽估计的两种带宽估计算法。其中,基于丢包的带宽估计算法是当网络发生拥塞时,路由器缓冲区被填满,后续的数据包会被丢弃;基于网络延时的带宽估计算法是当网络开始出现拥塞时,路由器缓冲区数据逐渐增加,数据包之间的延迟变化加剧。

编辑

基于丢包的带宽估计算法

基于丢包的带宽估计算法是通过RTCP-RR报文来检测丢包率,然后根据丢包率来调整对应的带宽。

带宽估计可能是WebRTC视频引擎中最重要的部分之一。带宽估计(BWE)模块的任务是决定你可以发送多大的视频流和音频流而不会造成网络拥塞,以此来保证不会降低视频质量。

较早的带宽估计算法还是十分基础的,主要是基于丢包而设计的。通常我们在开始慢慢的增加视频的比特率,直到我们能够检测到丢包为止,保持当前带宽状态,发送数据包。检测丢包的机制就是根据标准的RTCP包的反馈信息,这就需要接收端使用RTCP数据周期性的报告丢包情况。但是这种模式已经逐步被基于延时的带宽估计算法取代了。

基于延时的带宽估计算法

基于延时的带宽估计算法通过分析数据包之间的延时来预测拥塞情况,在路由器丢弃数据包之前尝试降低带宽。因此能够更早的发现网络的拥塞状况,进而提前调整码率,防止拥塞加重。

编辑

REMB

REMB侧重于在接收端起作用,在接收端计算预估码率的结果,并通过RTCP-FB反馈给发送端。这个过程需要发送端发送数据包的绝对时间,这个信息可以存储在RTP报头的扩展中。相关的SDP协商信息:

a=extmap:2 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01

相关代码:webrtc\api\rtp_parameters.cc

const cha RtpExtension::kTransportSequenceNumberUri[] = ;

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

WebRTC工作原理精讲 文章被收录于专栏

WebRTC 作为当下最热门的实时音视频通讯框架,涉及非常多的过程,比如采集、编码、组包、发包、传输、收包、丢包重传、解封装、解码、音视频同步、渲染等,同时还包括很多功能特性,比如ANS、AGC、AEC,REMB、GCC、CNG、FEC、PLI、SVC等,需要一点点深入理解其中的奥秘。

全部评论

相关推荐

07-18 15:02
门头沟学院 Java
刚打开网申页面就不想填了,还是不要为难自己了
poppinzhan...:多益老行业毒瘤了,碰到徐波这种恶心的烂人,去了也是受罪。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务