一般對於不同的語音有不同的打包週期,而不同的打包週期又對應着不同的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 0a=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位