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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

amr文件格式分析【转http://blog.csdn.net/dinggo/article/details/1966444】

發(fā)布時(shí)間:2024/7/19 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 amr文件格式分析【转http://blog.csdn.net/dinggo/article/details/1966444】 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
目錄 1.????概述 2.????AMR編碼方式 3.????AMR文件結(jié)構(gòu)示范圖 4.????AMR幀頭格式分析 5.????異常幀分析 6.????AMR幀讀取算法 7.????參考資料

1.??????概述

現(xiàn)在很多智能手機(jī)都支持多媒體功能,特別是音頻和視頻播放功能,而AMR文件格式是手機(jī)端普遍支持的音頻文件格式。

?

AMR,全稱是:Adaptive Multi-Rate,自適應(yīng)多速率,是一種音頻編碼文件格式,專用于有效地壓縮語音頻率。

?

AMR音頻主要用于移動(dòng)設(shè)備的音頻壓縮,壓縮比非常高,但是音質(zhì)比較差,主要用于語音類的音頻壓縮,不適合對(duì)音質(zhì)要求較高的音樂類音頻的壓縮。

?

下面是兩個(gè)AMR示范文件,一個(gè)是新聞?lì)?#xff0c;一個(gè)是歌曲,可以聽出來,音樂類壓縮成AMR格式后,音質(zhì)大大降低。

編號(hào)

文件名

文件長度

時(shí)長

1

h.amr??????????????(歌曲)

409KB

04:21

2

zbc1217.amr

242KB

02:36

?

?


2.????????AMR編碼方式

AMR有多種編碼方式,每種編碼方式的采樣頻率不同:

?

?

規(guī)格

比特率(kbps

音頻幀大小(字節(jié))

幀頭(字節(jié))

FT

0

AMR 4.75

?

13

04 00000100

0000

1

AMR 5.15

?

14

0C?00001100

0001

2

AMR 5.9

?

16

14 00010100

0010

3

AMR 6.7

?

18

1C?00011100

0011

4

AMR 7.4

?

20

24 00100100

0100

5

AMR 7.95

?

21

2C?00101100

0101

6

AMR 10.2

?

27

34 00110100

0110

7

AMR 12.2

?

32

3C?00111100

0111

?

說明:

l?????????比特率是指將數(shù)字聲音由模擬格式轉(zhuǎn)化成數(shù)字格式的采樣率,采樣率越高,還原后的音質(zhì)就越好。

?

l?????????比特率值與現(xiàn)實(shí)音頻對(duì)照:

16kbps=電話音質(zhì)

24kbps=增加電話音質(zhì)、短波廣播、長波廣播、歐洲制式中波廣播

40kbps=美國制式中波廣播

56kbps=話音

64kbps=增加話音(手機(jī)鈴聲最佳比特率設(shè)定值、手機(jī)單聲道MP3播放器最佳設(shè)定值)

112kbps=FM調(diào)頻立體聲廣播

128kbps=磁帶(手機(jī)立體聲MP3播放器最佳設(shè)定值、低檔MP3播放器最佳設(shè)定值)

160kbps=HIFI高保真(中高檔MP3播放器最佳設(shè)定值)

192kbps=CD(高檔MP3播放器最佳設(shè)定值)

256kbps=Studio音樂工作室(音樂發(fā)燒友適用)

?

l?????????音頻數(shù)據(jù)幀大小的計(jì)算:

amr?一幀對(duì)應(yīng)20ms,那么一秒有50幀的音頻數(shù)據(jù)。由于比特率不同,每幀的數(shù)據(jù)大小也不同。

如果比特率是12.2kbs,那么每秒采樣的音頻數(shù)據(jù)位數(shù)為:

12200 / 50 = 244bit = 30.5byte,取整為31字節(jié)。

取整要四舍五入。

再加上一個(gè)字節(jié)的幀頭,這樣數(shù)據(jù)幀的大小為32字節(jié)。

?


3.??????AMR文件結(jié)構(gòu)示范圖

下面是一個(gè)AMR文件示范:

?

?

?

?

?

從圖中可以看出,所有AMR文件頭標(biāo)志是6個(gè)字節(jié)。(最后一個(gè)字節(jié)是換行符“/n”)

后面就緊跟的是音頻幀。這個(gè)文件是每幀32字節(jié)。

?

文件頭

語音幀?1

語音幀?2

?

?


4.??????AMR幀頭格式分析

AMR語音幀格式為幀頭和語音數(shù)據(jù)組成。

幀頭

語音數(shù)據(jù)

?

AMR語音幀頭占1個(gè)字節(jié),如下圖所示:

0

1

2

3

4

5

6

7

P

FT

Q

P

P

0

?

?

?

?

0

0

0

?

其中:

P = 0;

FT:Frame Type,對(duì)應(yīng)不同編碼模式。(參見“2. AMR編碼方式”中表格中的說明)

Q:幀質(zhì)量指示器,0:表示為壞幀。

后面的P補(bǔ)0。

?


5.??????異常幀分析

下圖是一個(gè)出現(xiàn)異常幀的示例:(zbc1217.amr)

?

?

?

?

從上圖可以看見,本amr音頻幀頭都是0x3C,但是在0x000091e6處,幀頭字節(jié)為0x44。與0x3C不一致。而在0x00009243處,才恢復(fù)到0x3C。

?

對(duì)異常幀的簡單處理辦法是,遇到異常幀就跳過異常幀。后面的讀幀算法有描述。

?


6.??????AMR幀讀取算法

因?yàn)榭赡艽嬖诋惓?#xff0c;所以不一定所有的語音幀大小一致,對(duì)于跟正常幀大小不一致的,或者幀頭跟正常幀頭不一致的,就不交給解碼器,直接拋棄該壞幀。

?

讀取幀的算法,用C語言來編寫,readAMRFrame.c,JAVA可以用類似的方法。

下面是算法描述流程圖。

?

?

?

?

?



7.??????參考資料

l?????????rfc3267

http://www.rfc-editor.org/rfc/rfc3267.txt

http://ietfreport.isoc.org/rfc/PDF/rfc3267.pdf

l?????????3GPP TS 26.104 V?6.1.0?(2004-03)

http://www.3gpp.org/ftp/Specs/html-info/26104-CRs.htm

l?????????3GPP AMR Floating-point Speech Codec

http://www.3gpp.org/ftp/Specs/html-info/26104.htm

l?????????“amr編程匯總”

http://blog.csdn.net/windcao/archive/2006/01/04/570348.aspx

l?????????關(guān)于AMR文件格式的解釋

http://www.mcublog.com/blog/user1/11409/archives/2006/16832.html

l??????????

?

轉(zhuǎn)載于:https://www.cnblogs.com/songtzu/archive/2013/03/15/2961519.html

總結(jié)

以上是生活随笔為你收集整理的amr文件格式分析【转http://blog.csdn.net/dinggo/article/details/1966444】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。