RTP音频流分析以及乱序问题的解决方法(二)

本文深入探讨了RTP音频流在传输过程中出现的乱序问题,通过查看路由、增加发送端VBV控制、接收端重排序功能等方法进行分析和解决。实施VBV控制后,乱序率显著降低,而接收端的重排序算法确保了数据的连续性。通过测试验证了这些解决方案的有效性。
摘要由CSDN通过智能技术生成

前面文中描述了打包格式为RTP,负载为G.711的音频流的分析方法。

并且得知了设备收到的RTP流有严重的乱序情况。

那么,发送端发出的流是正常的,接收端收到的流却乱序严重,这是什么原因呢?


一、查看路由

linux命令行输入 tracert -d 目的IP


二、发送端要增加VBV控制发送速度

有的发送端并不控制发送速度,UDP本身并不是可靠连接,发送速度不均匀、过快,会导致接收端丢包或者乱序。

这个也很好验证,可以让发送端给一台PC发,如果PC收到的RTP包也有丢包或者乱序的情况,则说明发送端有问题。

解决的办法就是在发送端加入VBV处理,控制发送速度,尽量保持匀速发送。

在加入音频的VBV控制之后,每20ms左右发送一个G.711包(负载为160字节,20ms一帧的音频数据),音频包乱序率从40%降低到2%左右了。


三、接收端要增加重排序功能

虽然乱序率降低到2%左右了,但毕竟还是有乱序的,所以还是要增加重排序功能。

这个功能对视频也尤其重要。

在代码实现上要设计好,在没有乱序的情况下,不要带来额外的延迟。


大概的算法可以是:

做两个队列,最好是双向循环队列,可以使用链表。

一个是接收队列,用于重排序

一个数发送队列,用于下一级模块获取重排序后的数据

1、先存入接收队列,从队尾开始对比,插在比他序号小的成员后面

2、从接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值