WebRTC设计了一套基于延迟和丢包反馈的拥塞机制(GCC)和带宽调节策略来保证延迟、质量和网路速度之间平衡,这是一个持续循环过程。
1) estimator通过RTCP的feedback反馈过来的包到达延迟增量和丢包率信息计算出网络拥塞状态并评估出适合当前网络传输的码率,根据这个码率改变视频编码器码率,然后改变pacer的码率
2) pacer会根据这个码率改变pacer的网络发送速度和padding比例,并用新的网络发送速度来定时触发发包事件。
3) sender收到pacer的发送事件,进行RTP报文发送。
4) receiver接收到RTP报文,进行arrival time统计和丢包统计。
5) feedback定时对receiver统计的信息进行RTCP编码,并反馈到发送端的estimator进行新一轮的码率评估。
以上是整个WebRTC拥塞控制和带宽调节过程,下面这个示意图是这个过程涉及到WebRTC内部模块关系。