简介
基于UDP的RTP传输在复杂的公网环境下,特别是3G、4G、WIFI网络时面临丢包、乱序、重复、抖动等问题,严重影响实时音视频互动效果。
本方案即为解决此类问题而生,方案采用FEC(Forward Error / Erasure Correction )前向纠错技术进行丢包恢复,由发送方进行FEC编码引入冗余包,接收方进行FEC解码,恢复丢失的数据包。对于包乱序和包重复和抖动,我们采用收端QOS处理,该QOS方案特点是在没有丢包的情况下,不引入任何系统延时,并且可以通过可控的丢包等待时延来适应不同的信道乱序程度。在FEC无法恢复的情况下,方案引入独创选择性实时重传NACK机制,在保障实时性的前提下大幅提高系统对连续丢包的抵抗力。本方案的另一个特色是支持根据网络传输信道状况自动调整FEC冗余度、QOS策略以及NACK机制,在抗丢包能力和带宽代价之间获得较好折中。
众多产品案例表明:采用FEC+QOS+NACK丢包重传+RTP的组合,能显著提升UDP传输的丢包、乱序抵抗力,为上层音视频服务提供有力保障。核心技术、行业领先,API接口非常简洁可以快速集成到现有系统。
本方案与声网为代表的WebRtc方案以及腾讯实时音视频方案的对比测试报告如下:
QOS-FEC-NACK 实时音视频传输库测试报告(声网Webrtc、腾讯对比测试)-2018
测试DEMO下载:
https://github.com/waterfoxfox
效果示例(视频初次加载需要一定时间,请耐心等待)
(1)4%丢包,不使用FEC/QOS方案下的效果,左边为原始视频,右边为经过编码、网络传输、解码后的视频,可见经常性的花屏。
(2)4%丢包,使用FEC 20%冗余度,视频改善非常明显
(3)15%丢包,无FEC/QOS,视频一直花屏
(4)15%丢包,使用FEC自动冗余度,视频偶尔花屏
支持平台:
C/C++(非C++11)开发,支持Windows、Android、IOS、Linux、Arm嵌入式、C#,无外部依赖
使用方式:
(A)模块内部不附带RTP功能,只完成FEC\QOS功能,以函数模块形式供外部调用。用户只需要在发送数据前调用FEC编码函数,在收到数据后调用QOS-FEC解码函数即可。这种模式多用于用户当前已有自己的传输方案,仅需要加入抗丢包能力。
(B)模块提供RTP、FEC\QOS功能,用户通过本模块实现音视频RTP通讯。
用户案列:
目前方案已经用于多家上市公司以及中科院,涉及军方、互联网、银行等领域,稳定性和效率得到验证,获得了来自用户的普遍好评。
入门资料:
【原创】FEC/QOS 数据测试型DEMO——–FEC功能验证
【原创】FEC/QOS 数据测试型DEMO——–QOS功能验证