日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2024/3/26 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 RTP音频流分析以及乱序问题的解决方法(二) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前面文中描述了打包格式為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、從接收隊列中,從對頭開始,一個一個的出上一個出去序號+1的包,出去的包存入輸出隊列

3、如果接收隊列中,還沒有想找的序號,就先不出,等著

4、如果接收隊列長度超過上限,則將想找的序號+1,再重復‘3’

5、只要輸出隊列中有包,就讀出來,從輸出隊列出來的包應該是連續的


四、測試

將現場抓取的pcap文件使用bittwist修改目的IP后,發到本地設備進行測試

bittwiste -I in.pcap -O out.pcap -T ip -d 原來的目的IP,新的目的IP

先運行bittwist -d查看可用的適配器接口
bittwist -i <適配器接口號> -l 0 <文件名.pcap>



總結

以上是生活随笔為你收集整理的RTP音频流分析以及乱序问题的解决方法(二)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。