現(xiàn)在很多智能手機(jī)都支持多媒體功能,特別是音頻和視頻播放功能,而AMR文件格式是手機(jī)端普遍支持的音頻文件格式。
AMR,全稱是:AdaptiveMulti-Rate,自適應(yīng)多速率,是一種音頻編碼文件格式,專用于有效地壓縮語音頻率。
AMR音頻主要用于移動設(shè)備的音頻壓縮,壓縮比非常高,但是音質(zhì)比較差,主要用于語音類的音頻壓縮,不適合對音質(zhì)要求較高的音樂類音頻的壓縮。
下面是兩個AMR示范文件,一個是新聞類,一個是歌曲,可以聽出來,音樂類壓縮成AMR格式后,音質(zhì)大大降低。
編號 | 文件名 | 文件長度 | 時長 |
1 | h.amr | 409KB | 04:21 |
2 | zbc1217.amr | 242KB | 02:36 |
AMR有多種編碼方式,每種編碼方式的采樣頻率不同:
| 規(guī)格 | 比特率(kbps) | 音頻幀大?。ㄗ止?jié)) | 幀頭(字節(jié)) | FT |
0 | AMR4.75 | | 13 | 0400000100 | 0000 |
1 | AMR5.15 | | 14 | 0C 00001100 | 0001 |
2 | AMR5.9 | | 16 | 1400010100 | 0010 |
3 | AMR6.7 | | 18 | 1C 00011100 | 0011 |
4 | AMR7.4 | | 20 | 2400100100 | 0100 |
5 | AMR7.95 | | 21 | 2C 00101100 | 0101 |
6 | AMR10.2 | | 27 | 3400110100 | 0110 |
7 | AMR12.2 | | 32 | 3C 00111100 | 0111 |
說明:
l
l
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
amr 一幀對應(yīng)20ms,那么一秒有50幀的音頻數(shù)據(jù)。由于比特率不同,每幀的數(shù)據(jù)大小也不同。
如果比特率是12.2kbs,那么每秒采樣的音頻數(shù)據(jù)位數(shù)為:
12200 /50 = 244bit = 30.5byte,取整為31字節(jié)。
取整要四舍五入。
再加上一個字節(jié)的幀頭,這樣數(shù)據(jù)幀的大小為32字節(jié)。
下面是一個AMR文件示范:
從圖中可以看出,所有AMR文件頭標(biāo)志是6個字節(jié)。(最后一個字節(jié)是換行符“\n”)
后面就緊跟的是音頻幀。這個文件是每幀32字節(jié)。
文件頭 |
語音幀 1 |
語音幀 2 |
… |
AMR語音幀格式為幀頭和語音數(shù)據(jù)組成。
幀頭 | 語音數(shù)據(jù) |
AMR語音幀頭占1個字節(jié),如下圖所示:
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
P | FT | Q | P | P | |||
0 | | | | | 0 | 0 | 0 |
其中:
P =0;
FT:Frame Type,對應(yīng)不同編碼模式。(參見“2. AMR編碼方式”中表格中的說明)
Q:幀質(zhì)量指示器,0:表示為壞幀。
后面的P補(bǔ)0。
下圖是一個出現(xiàn)異常幀的示例:(zbc1217.amr)
從上圖可以看見,本amr音頻幀頭都是0x3C,但是在0x000091e6處,幀頭字節(jié)為0x44。與0x3C不一致。而在0x00009243處,才恢復(fù)到0x3C。
對異常幀的簡單處理辦法是,遇到異常幀就跳過異常幀。后面的讀幀算法有描述。
因為可能存在異常幀,所以不一定所有的語音幀大小一致,對于跟正常幀大小不一致的,或者幀頭跟正常幀頭不一致的,就不交給解碼器,直接拋棄該壞幀。
讀取幀的算法,用C語言來編寫,readAMRFrame.c,JAVA可以用類似的方法。
下面是算法描述流程圖。
l
http://www.rfc-editor.org/rfc/rfc3267.txt
http://ietfreport.isoc.org/rfc/PDF/rfc3267.pdf
l
http://www.3gpp.org/ftp/Specs/html-info/26104-CRs.htm
l
http://www.3gpp.org/ftp/Specs/html-info/26104.htm
l
http://blog.csdn.net/windcao/archive/2006/01/04/570348.aspx
l
http://www.mcublog.com/blog/user1/11409/archives/2006/16832.html
l