<tr id="5ry4k"></tr>
        1. <big id="5ry4k"></big>

          • WAP手機版 加入收藏  設為首頁
          文件數據恢復資料

          AMR文件格式分析

          時間:2017-1-16 11:33:59   作者:成都數據恢復中心   來源:網絡轉載   閱讀:2994   評論:0
          內容摘要:最近在傳輸手機錄音時,遇到了AMR編碼的問題,開始以為可以任意截斷amr文件,加個文件頭就可以播放的,后來發現是有問題,這樣得到的amr音頻有些不能正常播放,后來參看amr格式后,才知道amr文件是一幀一幀的,如果是按照完整的幀前面添加文件頭,就沒問題了,下面是參考的一篇文章:原文地址:http://blog.csdn...




          最近在傳輸手機錄音時,遇到了AMR編碼的問題,開始以為可以任意截斷amr文件,加個文件頭就可以播放的,后來發現是有問題,這樣得到的amr音頻有些不能正常播放,后來參看amr格式后,才知道amr文件是一幀一幀的,如果是按照完整的幀前面添加文件頭,就沒問題了,下面是參考的一篇文章:
          原文地址:http://blog.csdn.net/dinggo/archive/2007/12/25/1966444.aspx
          目錄
          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)

          音頻幀大。ㄗ止潱

          幀頭(字節)

          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         比特率是指將數字聲音由模擬格式轉化成數字格式的采樣率,采樣率越高,還原后的音質就越好。

           

          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文件格式分析

          從圖中可以看出,所有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編碼方式”中表格中的說明)

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

          后面的P補0。

           


          5.      異常幀分析

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

           

           AMR文件格式分析

           

           

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

           

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

           


          6.      AMR幀讀取算法

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

           

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

          下面是算法描述流程圖。

           

          AMR文件格式分析

           

           



          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         關于AMR文件格式的解釋

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


          相關評論
          不良信息舉報中心成都網警網警110報警服務AAA級互聯網行業信用360網站安全檢測

          數據恢復QQ交流群:378664983    站長QQ:958754010


          蜀ICP備14015947號-2


          麻豆人人妻人人妻人人片Av_碰国产免费公开视频_99精品成人片免费毛片无码_国产91视频天天爽夜夜爽