《音视频QoS技术:WebRTC带宽估计/拥塞控制GCC技术深入剖析与实现》
该课程专注于音视频传输中的 QoS(Quality of Service)技术,特别聚焦于 WebRTC(Web Real-Time Communication) 框架中的 GCC(Google Congestion Control)带宽估计与拥塞控制技术。课程从网络传输的基础概念出发,深入剖析 WebRTC 的带宽适应机制、传输优化策略和核心算法实现,帮助学习者系统掌握 WebRTC 在实时音视频传输中的带宽管理原理及其代码级实现。
一、课程特色
- 深度剖析 WebRTC GCC 技术
课程以 GCC 算法为核心,详细讲解 Google Congestion Control 的实现原理、数学模型和协议交互流程,涵盖网络状态检测、延迟抖动估计、码率自适应、丢包处理等关键机制。 - 理论结合源码实战
除了讲解原理,还会带领学员分析 WebRTC 开源代码,手把手讲解 GCC 模块如何在实际项目中部署与优化。 - 全面覆盖 QoS 技术栈
涉及 带宽估计(BWE)、链路拥塞检测、码率控制、FEC(前向纠错)、NACK(重传机制) 等 QoS 技术。 - 真实场景案例驱动
结合视频会议、低延迟直播、远程教育等场景,展示 WebRTC GCC 如何优化实际传输效果。
二、课程大纲
模块 1:实时音视频与 QoS 基础
- 实时音视频传输特性与 QoS 需求
- RTP/RTCP 协议及传输过程解析
- 网络延迟、抖动、丢包率、带宽波动的影响
模块 2:WebRTC QoS 框架概述
- WebRTC 架构及媒体传输管线(Media Pipeline)
- RTP Sender、Receiver、RTCP Receiver Report 工作机制
- WebRTC 中的 QoS 模块组成(BWE、拥塞控制、码率调节)
模块 3:GCC(Google Congestion Control)原理
- GCC 概述:目标、设计理念与演进
- GCC 两大核心模块:
- 基于丢包的码率控制(Loss-Based Control)
- 基于延迟的码率控制(Delay-Based Control)
- 延迟趋势检测算法(Delay-based Estimator)
- 带宽估计 BWE (Bandwidth Estimation) 算法
- GCC 码率更新与平滑策略
模块 4:GCC 源码剖析
- WebRTC 源码结构与编译指南
- 关键模块源码解析:
goog_cc
模块send_side_bandwidth_estimation
、delay_based_bwe
AimdRateControl
、OverUseDetector
- GCC 参数调优与自适应策略
模块 5:拥塞控制与优化
- TCP vs UDP 拥塞控制机制差异
- GCC 与 BBR、RTP REMB、Transport-CC 对比
- 不同网络场景下的优化策略(移动网络、弱网、5G)
模块 6:实战项目
- 使用 WebRTC M81+ 版本搭建实时音视频传输 Demo
- 模拟带宽波动测试 GCC 性能(利用 NetEm、tc 工具)
- GCC 算法参数修改与自定义策略实现
- QoS 优化方案落地实战(码率自适应 + FEC/NACK)
三、课程适合人群
- 音视频开发工程师:想深入理解 WebRTC 传输层优化与 GCC 算法。
- 实时通信领域开发者:从事视频会议、直播、互动应用开发。
- 网络工程师:对传输协议、带宽控制感兴趣,想研究 QoS 技术。
- 高校/研究人员:研究 WebRTC、音视频 QoS、低延迟传输技术。
四、学习收获
- 掌握 WebRTC QoS 核心模块及 GCC 带宽估计实现逻辑。
- 能够独立分析 GCC 源码,调整和优化带宽控制策略。
- 深入理解 RTP/RTCP 与码率自适应机制。
- 能基于 WebRTC 搭建稳定、低延迟的音视频传输系统。
五、课程时长与资源
- 总时长:约 40-60 小时,分为理论讲解 + 源码分析 + 实战演示。
- 配套资料:
- WebRTC 代码示例与 GCC 源码标注
- 网络测试脚本(NetEm、tc 配置)
- PPT 笔记、算法流程图
- 学习工具:Linux 编译环境、Wireshark、WebRTC 开发 SDK。

课程目录:
1_1.1-拥塞控制体系架构介绍和效果演示.mp4
2_1.2-拥塞控制基础知识.mp4
3_1.3-从google的一篇论文开始学习之旅.mp4
4_2.1-实现RTP头部扩展的管理功能.mp4
5_2.2-注册transport-cc头部扩展.mp4
6_2.3-详解RTP头部扩展结构.mp4
7_2.4-RTP头部扩展内存分配1.mp4
8_2.5-RTP头部扩展内存分配2.mp4
9_2.6-RTP头部扩展内存分配3.mp4
10_2.7-RTP头部扩展内存分配4.mp4
11_2.8-RTP头部扩展内存分配5.mp4
12_3.1-写入SequenceNumber扩展.mp4
13_3.2-处理Feedback包.mp4
14_3.3-详解Feedback包结构.mp4
15_3.4-解析Feedback包.mp4
16_3.5-行程长度算法解码数据块.mp4
17_3.6-状态矢量算法解码数据块.mp4
18_3.7-解析包时间信息以及还原seq_no.mp4
19_4.1-创建google拥塞控制模块.mp4
20_4.2-使用观察者模式获得Feedback数据.mp4
21_4.3-同wireshark对比验证数据包解析结果.mp4
22_4.4-feedback数据结构转换.mp4
23_4.5-在发送端记录RTP包的发送状态.mp4
24_4.6-更新RTP包发送后的状态1.mp4
25_4.7-更新RTP包发送后的状态2.mp4
26_4.8-完成Feedback转换成内部的数据结构.mp4
27_5.1-创建基于延迟的带宽估计模块.mp4
28_5.2-基于延迟的带宽估计核心原理.mp4
29_6.1-创建包组时间差计算类.mp4
30_6.2-计算包组发送和到达时间差1.mp4
31_6.3-计算包组发送和到达时间差2.mp4
32_7.1-创建trendline单向延迟趋势估计器.mp4
33_7.2-线性回归zui小二乘法基本原理.mp4
34_7.3-线性回归zui小二乘法样本数据.mp4
35_7.4-线性回归zui小二乘法计算trend.mp4
36_7.5-利用trend进行网络过载检测.mp4
37_7.6-过载检测阈值自适应调整.mp4
38_7.7-设计实验观察trend和阈值的变化.mp4
39_8.1-创建AIMD码率控制模块.mp4
40_8.2-网络过载时降低码率.mp4
41_8.3-AIMD-判断是否进一步降低码率.mp4
42_8.4-AIMD-未知吞吐量时的码率调整.mp4
43_8.5-AIMD-已知吞吐量时的码率调整.mp4
44_8.6-AIMD-状态机状态转换.mp4
45_8.7-AIMD-估计链路容量.mp4
46_8.8-AIMD-加性增加码率.mp4
47_8.9-AIMD-慢启动模式增加码率.mp4
48_8.10-AIMD-乘性降低码率.mp4
49_9.1-创建吞吐量估计类.mp4
50_9.2-贝叶斯估计的基本思想.mp4
51_9.3-以时间窗口计算样本码率.mp4
52_9.4-贝叶斯估计吞吐量.mp4
53_10.1-基于丢包的带宽估计核心原理.mp4
54_10.2-根据RR包信息统计丢包指数.mp4
55_10.3-起始阶段的带宽估计.mp4
56_10.4-更新最小码率历史队列.mp4
57_10.5-根据丢包率调整目标码率.mp4
58_10.6-更新丢包率和RTT.mp4
59_10.7-设置发送码率、max和min码率.mp4
60_10.8-更新基于延迟的码率估计值.mp4
61_11.1-更新估计的目标码率到pacer.mp4
62_11.2-更新估计的目标码率到编码器1.mp4
63_11.3-更新估计的目标码率到编码器2.mp4
64_11.4-发送端码率估计测试.mp4
65_11.5-周期性更新目标码率到pacer.mp4
66_11.6-发送端码率估计小结.mp4
67_12.1-ALR检测的基本原理和作用.mp4
68_12.2-创建AlrDetector.mp4
69_12.3-更新ALR状态的开始时间.mp4
70_12.4-设置ALR的带宽估计值.mp4
71_12.5-利用ALR优化吞吐量估计.mp4
72_12.6-利用ALR优化基于延迟的码率估计.mp4
73_13.1-Probe的基本原理和作用.mp4
74_13.2-设置起始码率的时候触发探测.mp4
75_13.3-初始化Probe.mp4
76_13.4-创建ProbeCluster.mp4
77_13.5-存储ProbeCluster信息到队列.mp4
78_14.1-启动Probe.mp4
79_14.2-Pacer高优执行probe探测任务1.mp4
80_14.3-Pacer高优执行probe探测任务2.mp4
81_14.4-更新探测执行后的状态信息.mp4
82_14.5-构造padding包1.mp4
83_14.6-构造padding包2.mp4
84_15.1-创建Probe码率估计器.mp4
85_15.2-统计Probe结果.mp4
86_15.3-计算Probe码率.mp4
87_15.4-获取和重置Probe码率.mp4
88_16.1-完善设置起始码率时的探测.mp4
89_16.2-将probe结果作用到基于延迟的码率估计.mp4
90_16.3-设置码率估计值.mp4
91_16.4-主动请求探测1.mp4
92_16.5-主动请求探测2.mp4
93_16.6-周期性探测处理1.mp4
94_16.7-周期性探测处理2.mp4
95_16.8-Probe技术小结.mp4
96_17.1-通过config的方式初始化拥塞控制模块1.mp4
97_17.2-通过config的方式初始化拥塞控制模块2.mp4
98_18.1-总结和未来工作.mp4
音视频QoS优化之WebRTC拥塞控制(GCC)技术深入剖析和代码实战.pdf