AMR文件分析

AMR音频文件格式分析 阅读详情

(转)AMR文件分析

(2012-03-25 13:45:03)
标签:

杂谈

分类:音视频编解码
目录
1.   概述
2.   AMR编码方式
3.   AMR文件结构示范图
4.   AMR帧头格式分析
5.   异常帧分析
6.   AMR帧读取算法
7.   参考资料

1.     概述

现在很多智能手机都支持多媒体功能,特别是音频和视频播放功能,而AMR文件格式是手机端普遍支持的音频文件格式。

 

AMR,全称是:AdaptiveMulti-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

0400000100

0000

1

AMR 5.15

 

14

0C 00001100

0001

2

AMR 5.9

 

16

1400010100

0010

3

AMR 6.7

 

18

1C 00011100

0011

4

AMR 7.4

 

20

2400100100

0100

5

AMR 7.95

 

21

2C 00101100

0101

6

AMR 10.2

 

27

3400110100

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文件头标志是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:FrameType,对应不同编码模式。(参见“2. AMR编码方式”中表格中的说明)

Q:帧质量指示器,0:表示为坏帧。

后面的P补0。

 


5.     异常帧分析

下图是一个出现异常帧的示例:(zbc1217.amr)

 

从上图可以看见,本amr音频帧头都是0x3C,但是在0x000091e6处,帧头字节为0x44。与0x3C不一致。而在0x00009243处,才恢复到0x3C。

 

对异常帧的简单处理办法是,遇到异常帧就跳过异常帧。后面的读帧算法有描述。

 


6.     AMR帧读取算法

因为可能存在异常帧,所以不一定所有的语音帧大小一致,对于跟正常帧大小不一致的,或者帧头跟正常帧头不一致的,就不交给解码器,直接抛弃该坏帧。

 

读取帧的算法,用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.youkuaiyun.com/windcao/archive/2006/01/04/570348.aspx

l        关于AMR文件格式的解释

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

AMR文件格式分析 说明:这个是一年前的工作了,现在把相关资料整理一下。 目录1.    概述2.    AMR编码方式3.    AMR文件结构示范图4.    AMR帧头格式分析5.    异常帧分析6.    AMR帧读取算法7.    参考资料1.      概述现在很多智能手机都支持多媒体功能,特别是音频和视频播放功能,而AMR文件格式是手机端普遍 阅读详情

相关推荐

音频编码:AMR

7:压缩码率:6.60/8.85/12.65/14.25/15.85/18.25/19.85/23.05/23.85,最高码率达到。7:压缩码率:4.75/5.15/5.90/6.70/7.40/7.95/10.2/12.2,最高码率达到。6:原始码率:16kHz×16bit=256kbit/s。1:AMR-NB:Narrow Band,窄带AMR。2:AMR_WB:Wide Band,宽带AMR。3:量化:采用均匀量化,65 536个量化电平。3:量化:采用均匀量化,65 536个量化电平。

weixin_66299220的博客 1377

AMR 是一种文件格式 - 编程

AMR (Adaptive Multi-Rate) 是一种音频文件格式,它在移动通信领域被广泛使用。AMR 文件使用自适应多速率编码技术,可在保证音频质量的同时,实现较高的压缩比。在本文中,我们将介绍 AMR 文件的基本结构,并提供使用 Python 编程语言读取和处理 AMR 文件的示例代码。

2301_79326254的博客 727

AMR音频编码器概述及文件格式分析

全称Adaptive Multi-Rate,自适应多速率编码,主要用于移动设备的音频,压缩比比较大,但相对其他的压缩格式质量比较差,由于多用于人声,通话,效果还是很不错的。 一、分类 1. AMR: 又称为AMR-NB,相对于下面的WB而言, 语音带宽范围:300-3400Hz, 8KHz抽样 2. AMR-WB:AMR WideBand,       语音带宽范围: 50-7000H

weixiaowenrou的专栏 943

AMR音频格式分析

AMR音频格式分析

健健的博客 2574

一种使用wireshark快速分析抓包文件amr音频流的思路方法

项目场景: 在VOLTE通话中,需要听取抓包文件中的AMR音频流,没有现成的工具可以利用,这里分享一种“投机取巧”的办法,不一定通用,但是可以尝试。 问题描述: 在VOLTE通话过程中,发现一端用户内容听不清,通话采用的编码格式为AMR,在IMS上抓包之后,得到包含发往该用户的音频流的包,那么如何快速分析一下这个音频流内容??? 解决方案: 1. 使用wireshark过滤amr,并导出原始数据文件; 使用ue的二进制编辑模式,编辑该文件,添加amr头,6个字节数据“#!AMR”,字节数据为 2

程序员沙子的专栏 3078

VS2019 C# MySQL 学生信息增删改查(一、增删)

VS2019 C# MySQL 学生信息增删改查 由于刚刚学习VS2019,入手的第一个例子是编写一个简单的增删改查。这里,我以学生信息为例,进行详细的过程描述以及代码实现。 一、 新建一个Windows窗体应用程序 1、创建新项目界面,如下图所示。 2、更改项目名称,当然不修改也可以。我这里的是“StudentInfoSystem”;项目存放位置路径根据自己需要进行更改;“将解决方案和项目放在同一目录中”前面的勾选框,选不选都可以;点击“创建”,如下图所示。 二、前期准备工作 1、将Form1属性中

青哥 1万+
上一篇: 什么是PCM?它和.wav文件是什么关系?
下一篇: ios程序发布后,收集Crash崩溃信息
JackHu
博客等级 码龄17年 4粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值