1、FEC 简介
FEC也称为前向纠错编码。其基本原理为:将n份原始数据,增加m份数据,并能通过n+m份中的任意n份数据,还原为原始数据,在音视频通信中可以达到抗丢包的目的;
2、FEC框架定义
FEC框架定义来自于rfc6363,rfc6363旨在定义一种通用的fec框架,rs编码、flexfec、喷泉码都是遵循此框架来定义的;具体参照https://rfc2cn.com/rfc6363.html
发送方框架定义如图:
接收方定义如图:
3、fec 在webrtc中的应用
在webrtc的原生方案中使用的ulpfec和其升级版本flexfec,恢复效果都不够理想,而传统的RS编码计算较为复杂,尤其在移动端会对cpu造成一定的压力,所以参考牛人文章 Erasure Code - EC纠删码原理_纠删码技术csdn-CSDN博客,以柯西矩阵为转换矩阵,实现基于柯西矩阵的RS编码,和flexfec相比,在cpu消耗相当的情况下,提升了恢复率,目前在50%的丢包下,应用基于柯西矩阵的fec编码,能实现音视频的流畅播放。有兴趣的读者可以下载最新的百家云brtc sdk进行试用。
百家云 - 开发者中心https://docs.baijiayun.com/resources/docs/open/download/tpl.html