webrtc笔记-媒体部分(丢包问题)

一、现象
通话中语音断断续续,视频卡顿或丢失画面,造成这些现象的一个重要原因是数据包在传输过程中出现丢失,在后端处理中,可以通过一些算法对缺失的数据进行预估,减轻一些影响,例如视频可以用I帧、P帧预估一些丢失的P帧,语音可以添加舒适噪音数据,但效果较好的办法还是降低丢包率。

二、原因
丢包的原因是媒体数据传输为了保证实时性,使用了UDP作为传输层的RTP协议,UDP只提供尽量送达的服务,数据传输过程经过网络中众多的交换机、路由器等设备有很多情况会导致数据包丢失。

三、处理办法
1、NACK
丢包首选想到的解决办法就是让发送端重发,那就需要接收端告诉发送端丢了那些包。NACK也就是no ack,接收端发送NACK给发送端,告诉丢了那些包,发送端重发。voice使用NackTracker类存丢包的sequence_number信息,而vodie使用NackModule类。
voice的NACK算法:
当收到一个包时,与上次收到的包比较序列号IsNewerSequenceNumber,如果序列号大,那上次收到包到本次收到的包之间缺失的包,可以看做包延时或丢失,定义一个常量nack_threshold_packets_,规定本次收到包之前的临近的nack_threshold_packets_个包是延时,其余的包认为丢失,并更新NackList,对丢失的包SendNACK给发送端。
vodie的NACK算法:
与voice的原理差不多,视频的数据量大,I帧最重要的特点,算法需要尽量重传关键数据,定义常量kMaxPacketAge,规定本次收到包的临近的kMaxPacketAge个包有机会重传,

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值