WebRTC QoS方法之FlexFEC 实现优化点

文章讨论了WebRTC中FEC(前向错误校正)的优化点,包括改变冗余报文和媒体报文的打包方式以减少解码延迟,提议使用FEC和媒体报文交织发送。此外,指出当前系统对单帧媒体报文数量的限制降低了FEC保护能力,根据RFC8627,FlexFEC能保护更多媒体包,这一限制有待改进。最后,提出了引入2D行列冗余模式以增强对抗不同丢包模型的能力,适应不同延时要求的场景。
摘要由CSDN通过智能技术生成

一、冗余报文和媒体报文组织结构优化点

以单帧10个媒体报文,冗余度20%为例。这里webrtc输出要有10个媒体包2个冗余包。webrtc输出的报文序列如下:

代码实现如下:

UlpfecGenerator::AddPacketAndGenerateFec:攒够足够的帧

ForwardErrorCorrection::EncodeFec:根据媒体报文个数和冗余度,计算要生成的冗余报文个数。

ForwardErrorCorrection::GenerateFecPayloads:通过这组媒体报文数据,连续生成num_fec_packets个冗余报文。

EnqueuePackets函数,一口气把num_fec_packets个冗余报文全部发送出去。

可以看出这种打包方式,会增加FEC解码端的解码时间。 建议优化改成FEC和媒体报文交织打包发送。如下:

二、冗余报文的保护个数限制

UlpfecGenerator::AddPacketAndGenerateFec函数限制如下:

目前webrtc限制,仅支持48bit的掩码,若是单帧视频报文数大于48的话,后续报文不会push到media_packets_队列,也就不会参与冗余。降低了FEC的保护能力。实际根据rfc8627协议格式,flexfec可以保护108个媒体包。这里的限制不合理。

flexfec_header_reader_writer.h文件报文格式定义:

 三、仅支持1D列冗余模式

 可以引入2D行列冗余模式,对抗连续丢包和随机丢包两种丢包模型。

 但是这种打包方式冗余度偏高,对于延时要求不是特别严苛的场景下,可以考虑多帧冗余打包。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值