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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

AMR文件结构

發布時間:2023/12/18 编程问答 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 AMR文件结构 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉自:http://blog.csdn.net/dinggo/article/details/1966444

https://blog.csdn.net/wlsfling/article/details/5875928

?

目錄

1.????概述

2.????AMR編碼方式

3.????AMR文件結構示范圖

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

5.????異常幀分析

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

7.????參考資料

1.??????概述

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

?

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

?

AMR音頻主要用于移動設備的音頻壓縮,壓縮比非常高,但是音質比較差,主要用于語音類的音頻壓縮,不適合對音質要求較高的音樂類音頻的壓縮。

?

下面是兩個AMR示范文件,一個是新聞類,一個是歌曲,可以聽出來,音樂類壓縮成AMR格式后,音質大大降低。

編號

文件名

文件長度

時長

1

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

409KB

04:21

2

zbc1217.amr

242KB

02:36

?

?

?

?

?

?

?

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

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

?

?

規格

比特率(kbps)

音頻幀大小(字節)

幀頭(1個字節)

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

?

說明:

04 的二進制:00000100

0C?的二進制:00001100

?

說明:

l?????????比特率是指將數字聲音由模擬格式轉化成數字格式的采樣率,采樣率越高,還原后的音質就越好。

?

l?????????比特率值與現實音頻對照:

16kbps=電話音質

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

40kbps=美國制式中波廣播

56kbps=話音

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

112kbps=FM調頻立體聲廣播

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

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

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

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

?

l?????????音頻數據幀大小的計算:

amr?一幀對應20ms,那么一秒有50幀的音頻數據。由于比特率不同,每幀的數據大小也不同。

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

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

取整要四舍五入。

再加上一個字節的幀頭,這樣數據幀的大小為32字節。

3.??????AMR文件結構示范圖

下面是一個AMR文件示范:

?

?

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

后面就緊跟的是音頻幀。這個文件是每幀32字節。

?

文件頭

語音幀?1

語音幀?2

?

?

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

?

AMR語音幀格式為幀頭和語音數據組成。

幀頭

語音數據

?

?

?

?

AMR語音幀頭占1個字節,如下圖所示:

?

0

1

2

3

4

5

6

7

P

FT

Q

P

P

0

?

?

?

?

0

0

0

?

?

其中:

P = 0;

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

用法:在解析了音頻幀的FT數據之后,就可以根據?“”AMR編碼方式表格“”來確定這個音頻文件的比特率。

Q:幀質量指示器,0:表示為壞幀。

后面的P補0。

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

下圖是一個出現異常幀的示例:(zbc1217.amr)

?

?

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

?

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

?

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

因為可能存在異常幀,所以不一定所有的語音幀大小一致,對于跟正常幀大小不一致的,或者幀頭跟正常幀頭不一致的,就不交給解碼器,直接拋棄該壞幀。

?

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

下面是算法描述流程圖。

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

后記

采樣率,比特率,文件格式的說明:

?

通俗的講采樣頻率是指計算機每秒鐘采集多少個信號樣本。它用赫茲(Hz)來表示。

以上文中提到數據為例:

amr?一幀對應20ms,這個數值跟采樣率的關系:

1s=1000ms

20ms = 1000ms/50

采樣率為50hz

?

比特率:

音頻文件專用算法:【比特率】(kbps)=【量化采樣點】(kHz)×【位深】(bit/采樣點)×【聲道數量】(一般為2)

?

【比特率】(kbps) = 采樣率值×采樣大小值×聲道數 bps

?

以電話為例,每秒3000次取樣,每次取樣是7比特(bit),那么電話的比特率是21000。

?

反過來,知道了比特率跟采樣率,可以知道每次采樣的數據是多少bit,

12200 / 50 = 244bit = 30.5byte,取整為31字節。取整要四舍五入。

(為什么要四舍五入呢?猜測是因為在寫入文件的時候是按照 8 bits = 1 byte 來對齊的)

?

?

https://zhidao.baidu.com/question/1539029237582451067.html

?

如果把原始16位深調到32位,那么精度增大。就像一座1000米的山,原來有10級臺階,現在修成100級臺階,但高度沒變還是1000米。此外16位到32位也不是增加一倍,而是2的32-16=16次冪即65536倍。

?

量化精度:

??? 聲波在轉為數字的過程中不是只有采樣率會影響原始聲音的完整性,另一個亦具有舉足輕重的參數——量化精度,也是相當的重要。一般來說,音質分辨率就是大家常說的bit數。目前,絕大多數的聲卡都已經可以支持24bit的量化精度。

?那么,什么是量化精度呢?前面曾說明采樣頻率,它是針對每秒鐘所采樣的數量,而量化精度則是對于聲波的“振幅”進行切割,形成類似階梯的度量單位。所以,如果說采樣頻率是對聲波水平進行的X軸切割,那么量化精度則是對Y軸的切割,

切割的數量是以最大振幅切成2的n次方計算,n就是bit數。

??? 舉個例子,如果是8bit,那么在振幅方面的采樣就有256階,若是16bit,則振幅的計量單位便會成為65536階,越多的階數就越能精確描述每個采樣的振幅高度。如此,也就越接近原始聲波的“能量”,在還原的過程序也就越接近原始的聲音了。

?

【轉貼掃盲】位深度、采樣率以及碼率:

http://blog.renren.com/share/233588808/4959169016/0

?

轉載于:https://www.cnblogs.com/zhangxuan/p/8492905.html

總結

以上是生活随笔為你收集整理的AMR文件结构的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。