基于UDP的RTP传输在复杂的公网环境下,尤其是3G、4G、WIFI网络时面临丢包、乱序、重复、抖动等问题,严重影响实时音视频互动效果,即使是一个rtp包得丢失,如果接收端不做处理,也会导致视频马赛克的出现,本方案采用多种方式结合,致力于解决udp传输视频包丢失问题,方案包括视频接收端jitter buffer 处理包乱序/重复问题,FEC(前向纠错) 优先处理丢包恢复,以及当fec恢复不了丢失数据包时采用丢包重传策略请求重传数据包,如果重传依然有丢包情况,则解码端不去解码(有可能花屏),直接请求发送方发送I帧,这几种方式组合,在实践中能有效避免丢包导致的花屏,卡顿现象,通过调整FEC冗余度,可以达到不同丢包率的处理。


这里的FEC前向纠错技术已经应用很广泛,其大概原理就是每K个媒体包发出后,利用这个K个媒体包生成N-K个冗余包,这里的N是媒体包和数据包的总和,接收端只要接收到K个数据包(包括媒体包和冗余包),就可以恢复出K个媒体包中任意一个丢失的媒体包。