1.WebRTC 用于提升 QoS 的方法:
NACK、FEC、SVC、JitterBuffer、IDR Request、PACER、Sender Side BWE、VFR(动态帧率调整策略)
https://blog.csdn.net/CrystalShaw/article/details/80432267
![](https://img-blog.csdnimg.cn/img_convert/a0abecae44bcb60e6eddcee5a845c072.webp?x-oss-process=image/format,png)
丢包重传
NACK:一种通知技术,和ACK相反,通知未达
FMT=1, PT=RTPFB
a=rtcp-fb:96 nack
RTX:参考rfc4588,使用额外的 ssrc 传输,在sdp中标识
a=rtpmap:97rtx/90000
a=ssrc-group:FID2736695910239189782
RPSI:无
NACK 可以节省带宽,但会带来延迟*
谈谈网络通信中的ACK,NACK 和 REX](https://link.zhihu.com/?target=https%3A//blog.51cto.com/ticktick/2468581)
丢包恢复(冗余编码 前向纠错 FEC)**通过 FEC 协议实现:RED:RFC2198, 封装FEC冗余报文UlpFEC: RFC5109,报文异或,生成冗余打包;带宽占用大,连续丢包,随机丢包FLEXFEC: 草案, 更灵活,引入交织算法,增加纵向OXR运算,增加网络抗丢包能力。
a=rtpmap:116 red/90000a=rtpmap:117 ulpfec/90000
FEC由于通过冗余纠错,所以延迟比较低,但浪费带宽*
https://blog.csdn.net/CrystalShaw/article/details/83413772
根据丢包率动态调整冗余度。
关键帧请求(IDR)**严重丢包时可以通过发送关键帧请求进行画面恢复。关键帧请求方式包括三种:RTCP FIR:使用 RTCP Feedback 消息请求关键帧(完整帧)RTCP PLI:关键帧丢包重传SIP Info:
a=rtcp-fb:100 ccm fira=rtcp-fb:96 nack pli
Jitter Buffer 抖动缓冲区将收到的RTP报文缓存起来,按照时间戳或者序号重排,消除报文乱序和抖动问题。
分为静态和动态,动态 Jitter Buffer 根据网络环路延时情况,动态调整缓存大小。
Jitter buffer 核心思想是用时间换空间,以增大端到端延时为代价,换取视频通话的流畅性。 当网络抖动发生时,增加Buffer长度,以应对可能发生的抖动;当网络稳定时,减少buffer长度,降低视频端到端延迟,提高实时性。(尽量保证视频不卡的前提下,降低端到端延迟,