https://blog.csdn.net/crystalshaw/category_9281395.html
Table of Contents
策略汇总
- NACK
- FEC
- SVC
- JitterBuffer
- IDR Request
- PACER
- Sender Side BWE或REMB(Receiver Estimated Maximum Bitrate
- 动态帧率调整
- AVSync音视频同步
- 动态分辨率调整策略
NACK
- 通过检测接收到的包序号,若发现丢包(包序号跳跃)就生成一个NACK,"准备”要求发送端重传;
- 上面生成的NACK不是马上发送的,而是需要有一个delay,因为这个包可能只是乱序了,并不是真的丢失了,如果在延时内收到了这个包,那么这个NACK就不用发了;
- 有时一个包可能要发多次NACK要求进行重传,但是同一个包的多次NACK发送间隔应该大于rtt,因为从接收端发送NACK到发送端再到发送端把包传过来,需要至少rtt的延时;
- 1个包不会无限发送NACK进行重传,而是有1个最大重传次数;
FEC
- RedFEC
一个包里面带两个包(当前包和上一个包) - UlpFEC
m个原始数据包通过异或生成n个冗余包,任意丢失n个包都可以通过剩余的包把这一组包全部恢复出来 - FlexFEC
引入了交织算法,异或的方式更加灵活(可以按行,按列之类的方式进行异或); - Reed Solomon算法
FEC冗余度配置:通过预测丢包率来配置FEC冗余度.
拥塞控制
GCC | Sendside-BWE | |
---|---|---|
码控计算模块 | 接收端 | 发送端 |
RTP头部扩展 | AbsSendTime | TransportSequenceNumber |
接收端关键对象 | RemoteBitrateEstimatorAbsSendTime | RemoteEstimatorProxy |
网络延时滤波器 | Kalman Filter | Trendline Filter |
接收端反馈RTCP报文 | REMB | TransportCC |
近期评论