計算G711語音的打包長度和RTP裏timestamp的增長量

如何計算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位

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章