一種基於amr音頻幀的rtp快速聚包方法
2023-06-05 18:01:21 1
專利名稱:一種基於amr音頻幀的rtp快速聚包方法
一種基於AMR音頻幀的RTP快速聚包方法
技術領域:
本發明涉及無線流媒體領域,特別涉及一種基於AMR音頻幀的RTP快速聚包方法。背景技術:
AMR,全稱Adaptive Multi-Rate (自適應多碼率),主要用於行動裝置的音頻編 碼,壓縮比比較大。它分為 AMR-WB(Adaptive Multi-Rate wide band)禾Π AMR-NB(Adaptive Multi-Rate narrow band)兩種類型,AMR音頻幀數據格式包括幀頭和語音數據兩部分。流媒體是指以流方式在網絡中傳送音頻、視頻和多媒體文件的媒體形式。而為了 支持網絡的實時傳輸服務,流媒體音視頻流都是以RTP的封裝的形式傳輸發送。目前對各 數據RTP的封裝傳輸方案都有對應的專門的RFC文檔。對AMR音頻幀來說,由於每幀數據 所佔字節數比較少,如果對每幀數據進行RTP打包發送,相當於每幀數據加上了 12位元組的 RTP頭進行傳輸,這樣將大大增加網絡的額外負擔,不利於節省帶寬。因此有必要將多個音 頻幀的訪問單元串聯起來聚合封裝到一個RTP包中,在不影響MTU(Maximum Transmission Unit最大傳輸單元,是指一種通信協議的某一層上面所能通過的最大數據報大小,以字節 為單位。MTU參數通常與通信接口有關,如網絡接口卡、串口等有關)的IP分片的情況下。
發明內容本發明目的在於提出一種將儘可能的多個AMR音頻幀封裝成一個RTP包的聚包方法。為了實現以上目的,本發明提出一種基於AMR音頻幀的RTP快速聚包方法,具體如 下步驟1 接收一個AMR音頻幀,取音頻幀頭,分離FT位,得出FT值,判斷音頻編碼 類型,根據音頻編碼類型及對應的FT值查表確認編碼模式,並獲取對應編碼模式的AMR音 頻幀長度值L ;步驟2 根據音頻幀長度L確認一個RTP封裝包可聚包的總的音頻幀數量N,步驟3 創建RTP包,填充RTP頭信息和PayloadHeader信息,其中RTP頭信息中M 位置1,PT值由SDP獲取;步驟4 :AMR音頻幀頭信息處理,將該音頻幀中的幀頭和語音數據分離,幀頭中幀 編碼模式位FT位保持不變,最低兩位補0位清0,對於沒遭到破壞的幀,幀質量指示位Q位 設置為1,遭破壞的置為0;步驟5 將AMR音頻幀幀頭和語音數據信息填充至RTP包,步驟6:循環接收AMR音頻幀,每接收到音頻數據即重複執行上述步驟4、5,直到接 收到N個音頻幀為止,將所述N個音頻幀封裝至所述RTP包。相對現有技術,本方法可以大大節省對網絡帶寬的佔用,減少網絡開銷,提高網絡 處理能力,減少頻繁數據發送造成的高丟包率。
圖1所示為打包前的AMR音頻幀幀頭的格式;圖2所示為包含三幀音頻的RTP包音頻幀頭的示意圖;
圖3所示為包含三幀音頻RTP包示意圖。
具體實施方式AMR,全稱Adaptive Multi-Rate,主要用於行動裝置的音頻編碼,壓縮比比較大。 它分為AMR-WB (Adaptive Multi-Rate wide band)禾口AMR-NB (AdaptiveMulti-Rate narrow band)兩種類型。其AMR音頻幀數據格式包括幀頭+語音數據,其中幀頭為一個字節,音頻 幀幀頭實際為六個bits,但基於實際應用的需要,一般將其定義為1個字節,後面兩位為補 0位。其具體定義如圖1所示其中,P 填充位lbit,一般設置為0。Q:lbit,為幀質量指示器。如果為0表明幀被損壞。FT (編碼模式)4bits,可查表求得該模式下的幀率和幀長度。以下是Amr-nb主要的一些編碼模式以及對應的數據速率及每幀數據的長度TypeRateframe IenMode O-AMR 4. 75-Encodes at 4. 75kbit/s, 13Mode I-AMR 5. 15-Encodes at 5. 15kbit/s, 14Mode 2-AMR 5. 9-Encodes at 5. 9kbit/s,16Mode 3-AMR 6. 7-Encodes at 6. 7kbit/s,18Mode 4-AMR 7. 4-Encodes at 7.4kbit/s,20Mode 5-AMR 7.95-Encodes at 7. 95kbit/s, 21Mode 6-AMR 10. 2-Encodes at 10. 2kbit/s, 27Mode 7-AMR 12. 2-Encodes at 12. 2kbit/s, 32以下是Amrib主要的一些編碼模式TypeRateframe IenMode 0-AMR-ffB 6. 60-Encodes at 6. 60kbit/s,18Mode 1-AMR-ffB 8. 85-Encodes at 8.85kbit/s,24Mode 2-AMR-ffB 12. 65-Encodes at 12. 65kbit/s, 33Mode 3-AMR-ffB 14. 25-Encodes at 14. 25kbit/s, 37Mode 4-AMR-ffB 15. 85-Encodes at 15. 85kbit/s, 41Mode 5-AMR-ffB 18. 25-Encodes at 18.25kbit/s, 47Mode 6-AMR-ffB 19. 85-Encodes at 19. 85kbit/s, 51Mode 7-AMR-ffB 23. 05-Encodes at 23. 05kbit/s, 59本發明核心思想在於設計一種基於AMR音頻的RTP快速聚包方法。因為AMR數據 不同編碼類型和模式對應的語音數據幀長度不同,對於採用UDP的數據承載方式,該方法 可以直接針對不同編碼類型和模式的AMR數據進行聚包,並針對各AMR數據類型和編碼模 式大小,在不超過一個MTU單元包長的情況下,通過計算,可儘可能多的將AMR音頻數據封 裝在一個RTP包中進行傳輸。
聚包原則少於一個MTU單元長度的數據,需對其進行聚包傳輸,以節省網絡帶 寬,提高網絡處理能力。AMR音頻幀的封裝完全遵循RFC3267文檔標準,一般是將幾個音頻 幀封裝成一個RTP包,該RTP包總體長度不能超過一個MTU單元大小,對於多個音頻幀的封 裝,其封裝格式為formula see original document page 6當需打包的AMR音頻幀數目為η時,又可以表示為RTP頭+Payload header (1位元組)+幀頭1+幀頭2+· · · +幀頭η+語音數據1+語音 數據2+... +語音數據η。其中Payload Header 的前 4bits 是 CMR(Codec Mode Request),根據 RFC3267 文 檔規範,如果終端沒有定義對何種模式的優先選擇性接收,CMR值必須設置為15,其他位為 0,因此PayloadHeader的值為OXFO。Payload Data指的是所有音頻幀數據,包括各音頻的 幀頭和幀數據。本發明RTP包封裝過程如下1、接收AMR音頻幀,取音頻幀頭,分離FT位,得出FT值,然後按照音頻編碼類型 (編碼類型在SDP中判斷,AMR表示NB類型,AMR-WB表示WB編碼)的不同,根據音頻編碼 類型及對應的FT值查表確認編碼模式,並獲取對應的AMR音頻幀長度值L。2、根據音頻幀長度L確認一個RTP封裝包可聚包的總的音頻幀數量N,計算公式 為N = (MTU 長度-RTP 包頭長度-PayloadHeader 長度)/L0例如MTU長度取1400位元組,L選擇為AMR-NB編碼模式ModeO所對應的13位元組, RTP包頭長度為12位元組,AMR負載幀頭PayloadHeader長度為1位元組,則計算出N為106。3、創建RTP包,長度為一個MTU單元,填充RTP頭信息和PayloadHeader信息,其 中RTP頭信息中M位置1,PT值由SDP獲取,序列號SeqNo、時間戳TimeStamp和SSRC必須 與RTSP信令中描述一致。PayloadHeader信息的值為0XF0。4、幀頭信息處理,將該音頻幀中的幀頭和語音數據分離,幀頭中幀編碼模式位FT 位保持不變,最低兩位補ο位清0,對於沒遭到破壞的幀,幀質量指示位Q位設置為1,遭破 壞的置為O ;5、將AMR音頻幀的幀頭和語音數據信息的RTP包填充。將下述數據按順序直接存 入RTP包的相應位置。AMR音頻幀的幀頭填充位置RTP 包頭長度 +PayloadHeader 長度 + (i_l)幀頭長度1個字節AMR音頻幀的語音數據填充位置RTP 包頭長度 +PayloadHeader 長度 +N+ (i_l) X L幀數據長度(L-I)個字節其中i表示需聚包的音頻幀序號,底標從1開始,直到N(由步驟2計算出的一個 RTP封裝包可聚包的總的音頻幀數量),L表示AMR音頻幀語音數據長度值。如果幀數據序號小於N,則表示該幀不是RTP包裡面的最後一幀數據,幀頭中的填 充位P位置1,表示後面有接連續的音頻幀,幀數據序號為N的幀是最後一個音頻,其幀頭最高位P位則清0,表示音頻幀頭的結束。如圖2所示為包含三幀音頻的RTP包音頻幀頭示意圖,分為幀頭1、幀頭2與幀頭3,其中幀頭格式與圖1所示的打包前的AMR音頻幀幀頭的格 式完全一樣,僅在P位的具體取值有差別。6、循環接收AMR音頻幀,每接收到音頻數據即重複執行步驟4,5,直到接收到N個 音頻幀為止。這樣,一個完整的RTP包就打好了。如圖3所示為包含三幀音頻RTP包示意 圖圖中RTP(12)表示RTP包頭佔用12位元組,PH(I)表示PayloadHeader佔用1位元組,幀頭 1 (1)、幀頭2 (1)、幀頭3 (1)分別表示各幀頭佔用1位元組,語音數據1 (L)、語音數據2 (L)、語 音數據3 (L)表示各語音數據佔用L字節,例如L取AMR-NB編碼模式ModeO所對應的13字 節。本發明可以直接針對不同編碼類型和模式的AMR數據進行聚包,並針對各AMR數 據類型和編碼模式大小,在不超過一個MTU單元包長的情況下,計算出一個RTP包所能負載 的最大音頻幀數,儘可能多的將AMR音頻數據封裝在一個RTP包中進行傳輸,且通過對AMR 數據進行直接的RTP包填充,無需耗費任何其他額外的內存資源,可以在減少網絡開銷的 同時達到高效的目的。在上述實施例中,僅對本發明進行了示範性描述,但是本領域技術人員在不脫離 本發明所保護的範圍和精神的情況下,可根據不同的實際需要設計出各種實施方式。
權利要求
一種基於AMR音頻幀的RTP快速聚包方法,具體步驟如下步驟1接收AMR音頻幀,取音頻幀頭,分離FT位,得出FT值,判斷音頻編碼類型,根據音頻編碼類型及對應的FT值查表確認編碼模式,並獲取對應編碼模式的AMR音頻幀長度值L;步驟2根據音頻幀長度L確認一個RTP封裝包可聚包的總的AMR音頻幀數量N,步驟3創建RTP包,填充RTP頭信息和PayloadHeader信息,其中RTP頭信息中M位置1,PT值由SDP獲取;步驟4對AMR音頻幀頭信息處理,將該音頻幀中的幀頭和語音數據分離,幀頭中幀編碼模式位FT位保持不變,最低兩位補0位清0,對於沒遭到破壞的幀,幀質量指示位Q位設置為1,遭破壞的置為0;步驟5將AMR音頻幀幀頭和語音數據信息填充至RTP包,步驟6循環接收AMR音頻幀,每接收到音頻數據即重複執行上述步驟4、5,直到接收到N個音頻幀為止,完成所述N個音頻幀封裝至所述RTP包。
2.如權利要求1所述的基於AMR音頻幀的RTP快速聚包方法,其特徵在於步驟1中所 述編碼類型在會話描述信息中SDP判斷,AMR或AMR-NB表示NB編碼類型,AMR-WB表示WB 編碼類型。
3.如權利要求2所述的基於AMR音頻幀的RTP快速聚包方法,其特徵在於步驟2中 確定N的計算公式如下N = (MTU 長度-RTP 包頭長度-PayloadHeader 長度)/L其中MTU長度為網絡最大傳輸單元,單位為字節,RTP包頭長度為12位元組,AMR負載頭 PayloadHeader長度為1位元組。
4.如權利要求1所述的基於AMR音頻幀的RTP快速聚包方法,其特徵在於步驟3中, PT值由SDP獲取,SeqNo, TimeStamp和SSRC與RTSP信令中描述一致。
5.如權利要求3所述的基於AMR音頻幀的RTP快速聚包方法,其特徵在於步驟5進 一步包括51.確定AMR音頻幀頭在RTP包中的填充位置,將幀頭按順序直接存入RTP包的相應 填充位置;52.確定AMR音頻幀語音數據在RTP包中的填充位置,將語音數據按順序直接存入 RTP包的相應填充位置。
6.如權利要求5所述的基於AMR音頻幀的RTP快速聚包方法,其特徵在於步驟51, AMR音頻幀頭在RTP包中的填充位置確定方法如下RTP 包頭長度 +PayloadHeader 長度 +(i_l)步驟52AMR音頻幀語音數據在RTP包中的填充位置確定方法如下RTP 包頭長度 +PayloadHeader 長度 +N+(i_l) XL其中RTP包頭長度為12位元組,PayloadHeader長度為1位元組,(i_l)單位為字節,i表 示需聚包的音頻幀序號,底標從1開始,直到N。
7.如權利要求6所述的基於AMR音頻幀的RTP快速聚包方法,其特徵在於如果幀數 據序號i小於N,則表示該幀不是RTP包裡面的最後一幀數據,RTP包中幀頭中的填充位P 位置1,表示後面有接連續的音頻幀,幀數據序號為N的幀是最後一個音頻,其幀頭最高位P位則清0,表示音頻幀頭的結束。
8.如權利要求3所述的基於AMR音頻幀的RTP快速聚包方法,其特徵在於 PayloadHeader 信息的值為 OXFO。
9.如權利要求3所述的基於AMR音頻幀的RTP快速聚包方法,其特徵在於MTU長度取 1400位元組,L選擇為AMR-NB編碼模式ModeO所對應的13位元組。
全文摘要
本發明涉及一種基於AMR音頻幀的RTP快速聚包方法,步驟如下1接收AMR音頻幀,取音頻幀頭,確認編碼模式,並獲取對應編碼模式的AMR音頻幀長度值L;2根據音頻幀長度L確認一個RTP封裝包可聚包的總的AMR音頻幀數量N;3創建RTP包,填充RTP頭信息和PayloadHeader信息;4對AMR音頻幀頭信息處理,將該音頻幀中的幀頭和語音數據分離;5將AMR音頻幀幀頭和語音數據信息填充至RTP包,6循環接收AMR音頻幀,每接收到音頻數據即重複執行上述步驟4、5,直到接收到N個音頻幀為止,其中音頻幀頭和幀數據統稱為PayloadData信息。本發明方法可有效減少網絡開銷,減少頻繁數據發送造成的高丟包率,可大大提高流媒體業務的服務質量。
文檔編號H04L1/00GK101814973SQ20101010539
公開日2010年8月25日 申請日期2010年1月29日 優先權日2010年1月29日
發明者歐志 申請人:深圳市融創天下科技發展有限公司