RTP抗丢包传输方案

简介

基于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

QOS-FEC-NACK vs SRT -2020

测试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通讯。

 

 

用户案列:

目前方案已经用于多家上市公司以及中科院,涉及军方、互联网、银行等领域,稳定性和效率得到验证,获得了来自用户的普遍好评。

 

入门资料:

【原创】QosFecNack传输方案C风格API说明

 

【原创】FEC/QOS中的NACK方案

【原创】音视频实时通讯之UDP vs TCP

【原创】RTP抗丢包方案概述

【原创】基于RTP的QOS算法简介

【原创】基于RTP的FEC前向丢错算法简介

【原创】自适应FEC冗余度与自适应QOS丢包时延

【原创】FEC/QOS 数据测试型DEMO——–FEC功能验证

【原创】FEC/QOS 数据测试型DEMO——–QOS功能验证

【原创】FEC/QOS 音视频实测DEMO

【原创】pc-android-demo使用说明