背景
在基于UDP的数据传输过程中,经常会遇到网络不好的所谓弱网络场景,而UDP是不可靠的传输协议,传输速度快但却不能保证数据包的可靠送达,而对于视频传输一旦出现丢包势必影响画面的质量,会出现卡顿花瓶等现象。
对于这种弱网络的保护,或者说解决方法,通常可归为两大类,一种是信源解决法,一种是信道解决法。对于信源法,可以修改数据采集端的信息,比如调整帧率、码率、分辨率以期与网络带宽相适应;也可以在接收端进行丢帧处理,或者调整解码参数或算法实现数据的补偿。对于信道法,则可以采取的策略有FEC、丢包重传及快速请求I帧等策略。本文实现了一种信道和信源相结合的处理方案。
设计方案
主要设计思路是利用媒体传输过程中的RTCP反馈来进行视频编码参数的调整,以期达到最优的视频传输效果。
根据RFC协议,RTCP中的RR消息用于接收端接收RTP数据的统计反馈,主要是丢包比例统计数据,SR消息是发送端的时间统计,主要用于接收端计算端到端的数据时延。也就是说我们根据RR消息就能知道收到的丢包状况,发送端可以根据这个信息进行适当的编码处理。
对于硬件编解码Mediacodec,它是能够进行码率及分辨率的动态切换的,并且我们可以根据摄像头采集的数据进行帧率控制(硬编码目前设置帧率是不生效的),有了这些信息,我们就可以设计出一个简单的根据丢包情况调整视频质量的模型,并设计出相关的实现算法。然后结合实验数据给出不同网络模型的经验阈值。这样我们就有了一个简单的抗网络丢包的视频传输优化方案。