計算G711語音的打包長度和RTP里timestamp(時間戳)的增長量


轉自:http://blog.csdn.net/xujianglun/article/details/48342367

 

如何計算G711語音等的打包長度和RTP里timestamp的增長量

一般對於不同的語音有不同的打包周期,而不同的打包周期又對應着不同的timestamp in RTP

那么是如何計算的呢,我們通過G711舉個例子

G711的打包周期分為10ms,20ms,30ms,sample rate是8000,速率是64kbit/s

64kbits,意味着每秒發送64000比特

那么10ms發送= 64000 * (10/1000) = 640 比特 = 80 字節

那么10ms的包 = 80字節
20ms = 160 字節
30ms = 240 字節

那么64kbits 如何來的?
因為采樣周期為8000,那么意味着1秒8000個采樣,每次采樣站8個比特
那么 8000*8 = 64000bit/s = 64kbit/s

接下來計算timestamp的增長量,公式如下:
兩幀之間RTP timestamp的增量 = 時鍾頻率 / 幀率
同樣以10ms的G711舉例:

10ms的G711幀率 = 100,意味着每秒發送100幀

那么10ms的timestamp增量 = 8000/100 = 80

20ms的timestamp增量 = 160

30ms的timestamp增量 = 240

那么其他語音的計算以此類推,舉一反三

 

m=audio 1234 RTP/AVP 0
a=rtpmap:0 pcma/8000/1
a=framerate:25

c=IN IP4 172.18.168.45

 

 

1.m=是媒體級會話的開始處,audio:媒體類型 ; 1234:端口號    ;RTP/AVP:傳輸協議   ;0:rtp頭中的payload格式

2.a=rtpmap:證明是動態綁定的進一步說明    ;0:rtp頭中的payload格式;pcma:編碼名 ;8000:采樣頻率;1:單聲道

          注意:g711有兩種編碼類型,另一種是pcmu

3.a=framerate:25    指1s播放幾個rtp包,單位幀每秒,倒數為一個rtp包承載的數據播放的時間,單位s

                                   8000/25=320   表示每個時間戳增量值    每個rtp包的g711數據大小

4.c=:媒體鏈接信息;IN:網絡類型一般為IN;IP4:地址類型一般為IP4;后面是IP地址(注意是VLC所在的IP地址,不是發送方的IP)

m=audio 1234 RTP/AVP 0
a=rtpmap:0 pcma/8000/1
a=framerate:25

c=IN IP4 172.18.168.45

 

 

1.m=是媒體級會話的開始處,audio:媒體類型 ; 1234:端口號    ;RTP/AVP:傳輸協議   ;0:rtp頭中的payload格式

2.a=rtpmap:證明是動態綁定的進一步說明    ;0:rtp頭中的payload格式;pcma:編碼名 ;8000:采樣頻率;1:單聲道

          注意:g711有兩種編碼類型,另一種是pcmu

3.a=framerate:25    指1s播放幾個rtp包,單位幀每秒,倒數為一個rtp包承載的數據播放的時間,單位s

                                   8000/25=320   表示每個時間戳增量值    每個rtp包的g711數據大小

4.c=:媒體鏈接信息;IN:網絡類型一般為IN;IP4:地址類型一般為IP4;后面是IP地址(注意是VLC所在的IP地址,不是發送方的IP)

關於sdp文件的詳細介紹請看:http://blog.csdn.net/zhangjikuan/article/details/27367437

 

 

 

2音頻RTP包特點

 

以G711A為例,G711A編碼位數為8位,如下表,第0位為極性位,1到3位為段位碼,4-7位為段內碼,如以8K頻率對信號進行采樣,每個采樣點以8位編碼,顯然編碼速率為64Kbps。

 

以G711A編碼的音頻包如果以20ms打包,那么每個包有160個采樣點(采樣頻率為8KHZ,那么每毫秒的采樣個數為8個,因此20ms即為160個),這同樣體現在時戳,如下圖,兩個包之間的時戳間隔為160。

 

 

並且,凈荷的長度即為160×1字節/包=160個字節,見下圖,DSP在解碼時讀取每個采樣點的數值,查表就可以恢復信號。

 

 

 

 

3速率計算

對於每路媒體通道速率大小的描述,可用kbps或是每秒傳輸的RTP包數,用前者描述便於計算帶寬,可以和底板/扣板邏輯接口速率進行對照,后者便於計算NP處理包數。

a. 對音頻而言,知道打包時長就可以詁算通道每秒傳輸的包數,例如打包時長為20ms,每秒該通道即傳輸50個包。

 

b. 計算通道帶寬速率

速率=RTP包大小(包頭+凈荷)×每秒處理包數(1/打包周期)

=(Ethernet頭+IP頭+UDP頭+RTP頭+有效載荷)×(1/打包周期)
=(208bit(不一定) +160bit+64bit+96bit +有效載荷)×(1/打包周期)
=(528bit+(打包周期(秒)×每秒的比特數))×(1/打包周期)
=( 528 / 打包周期 ) + 每秒比特數

 

G711:20ms打包,帶寬為 ( 528/20 + 64) Kbit/s=90.4 Kbit/s

G729:20ms打包,帶寬為 ( 528/20 + 8 ) Kbit/s= 34.4 Kbit/s

 

性能測試時可根據通道處理速率詁算產品處理性能。

 

 

各個報頭長度參考下面報文格式:

 

 

UDP報頭8字節,64位

 

 

IP報頭固定長度為20字節,160位


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM