目前总结出webrtc用于提升QOS的方法有:
1、NACK
2、FEC
3、PACER
4、降帧率
5、降码率
也许还有其他,待后续知识更新后,补充。
一、NACK原理介绍
接收端根据收到报文的丢包情况,把丢包的SEQ记录在RTCP报文里面,发给发送端,请求重发。
若在JB时长内,收到重发数据,就补上了。
二、FEC原理介绍
FEC是发送端在发送的时候,将之前的旧包也打包到新包里面,若接收端有丢包,就用新包里面冗余的旧包恢复数据。
说到这里大家可能认为这就是RFC2198冗余嘛。但是在webrtc里面,这不是简单的RFC2198冗余。
RFC2198冗余带宽占有量是倍增,简单冗余,对网络差的情况是恶化。FEC是有一套算法,仅冗余部分关键帧。
三、PACER原理介绍
PACER,是网络报文平滑策略。根据RTCP反馈的环路延时和丢包,对当前网络有个预判。然后把要发送的报文拆分成小包,按照一定的节奏慢慢发。
四、降帧率原理介绍
降帧率也是根据RTCP反馈的环路延时和丢包,对当前网络有个预判。当判断出当前网络质量比较差,通过不断的降低帧率,减少带宽的占用量。
五、降码率原理介绍
同理,降码率同样是根据RTCP反馈的环路延时和丢包,对当前网络有个预判。当判断出当前网络质量比较差,通过不断的降低码率,减少带宽的占用量。
这五种方法实现的细节,待续。。。。。
文章来源: webrtc QOS方法汇总