全称Adaptive Multi-Rate,自适应多速率编码,主要用于移动设备的音频,压缩比比较大,但相对其他的压缩格式质量比较差,由于多用于人声,通话,效果还是很不错的。
一、分类
1. AMR: 又称为AMR-NB,相对于下面的WB而言,
语音带宽范围:300-3400Hz,
8KHz抽样
2. AMR-WB:AMR WideBand,
语音带宽范围: 50-7000Hz
16KHz 抽样
“AMR-WB”全称为“Adaptive Multi-rate - Wideband”,即“自适应多速率宽带编码”,采样频率为16kHz,是一种同时被国际标准化组织ITU-T和3GPP采用的宽带语音编码标准,也称 为G722.2标准。AMR-WB提供语音带宽范围达到50~7000Hz,用户可主观感受到话音比以前更加自然、舒适和易于分辨。
与之作比较,现在GSM用的EFR(Enhenced Full Rate,增强型全速率编码)采样频率为8kHz,语音带宽为200~3400Hz。
AMR-WB应用于窄带GSM(全速信道16k,GMSK)的优势在于其可采用从6.6kb/s, 8.85kb/s和12.65kb/s三种编码,当网络繁忙时C/I恶化,编码器可以自动调整编码模式,从而增强QoS。在这种应用中,AMR-WB抗扰 度优于AMR-NB。
AMR-WB应用于EDGE、3G可充分体现其优势。足够的传输带宽保证AMR-WB可采用从6.6kb/s到23.85kb/s共九种编码,语音质量超越PSTN固定电话。
 
二、编码方式
1. AMR-NB:
AMR 一共有16种编码方式, 0-7对应8种不同的编码方式, 8-15 用于噪音或者保留用。
Frame Type
Mode Indication
Mode Request
Frame content (AMR mode, comfort noise, or other)
0
0
0
AMR 4,75 kbit/s
1
1
1
AMR 5,15 kbit/s
2
2
2
AMR 5,90 kbit/s
3
3
3
AMR 6,70 kbit/s (PDC-EFR)
4
4
4
AMR 7,40 kbit/s (TDMA-EFR)
5
5
5
AMR 7,95 kbit/s
6
6
6
AMR 10,2 kbit/s
7
7
7
AMR 12,2 kbit/s (GSM-EFR)
8
-
-
AMR SID
9
-
-
GSM-EFR SID
10
-
-
TDMA-EFR SID
11
-
-
PDC-EFR SID
12-14
-
-
For future use
15
-
-
No Data (No transmission/No reception)
 
2. AMR-WB:
Frame Type Index
Mode Indication
Mode Request
Frame content (AMR-WB mode, comfort noise, or other)
0
0
0
AMR-WB 6.60 kbit/s
1
1
1
AMR-WB 8.85 kbit/s
2
2
2
AMR-WB 12.65 kbit/s
3
3
3
AMR-WB 14.25 kbit/s
4
4
4
AMR-WB 15.85 kbit/s
5
5
5
AMR-WB 18.25 kbit/s
6
6
6
AMR-WB 19.85 kbit/s
7
7
7
AMR-WB 23.05 kbit/s
8
8
8
AMR-WB 23.85 kbit/s
9
-
-
AMR-WB SID (Comfort Noise Frame)
10-13
-
-
For future use
14
-
-
speech lost
15
-
-
No Data (No transmission/No reception)
 
-
-
 
 
二、AMR 帧格式:
AMR 有两种类型的帧格式:AMR IF1 和 AMR IF2
1. AMR IF1:
 IF1 的帧格式如下图所示:
FrameType, Mode Indication, Mode Request 对应上面两个表格里的数。从上面的表格里我们可以看出,这三个域的值是相同的。所以在IF2中省略了Mode Indication, Mode Request 两个域。
Frame Quality Indicator: 0表示bad frame 或者corrupted frame; 1表示 good frame
每一帧的数据有分为三个部分:Class A/B/C
Class A:一帧中最敏感、最重要的数据。一旦这一部份数据有损坏,整个帧就无法解码,就损坏了。所以,一般在无线传输的时候要使用各种冗余的方式对这部分数据加以保护。
Class B:相对于Class A不那么重要的数据。
Class C:比Class B还不重要的数据。
 
2. AMR IF2:
 IF2的帧格式如下图所示:
相对于IF1, IF2 省去了Frame Quality Indicator, Mode Indication, Mode Request 和CRC 校验。但是增加了bit 填充。因为AMR帧中数据的长度并不是字节(8bit)的整数倍,所以在有些帧的末尾需要增加bit填充,以使整个帧的长度达到字节的整数倍。
有关IF2帧中各个域的信息请参考下面的帧大小节的表格。
 
三、帧大小
1. AMR-NB
Frame Type Index
Frame content
Number of bits in Frame Type
Number of Bits in AMR Core Frame

Number of Bits in
Bit Stuffing

Number of octets (N)
0
AMR 4,75 
4
95
5
13
1
AMR 5,15
4
103
5
14
2
AMR 5,90
4
118
6
16
3
AMR 6,70
4
134
6
18
4
AMR 7,40
4
148
0
19
5
AMR 7,95
4
159
5
21
6
AMR 10,2
4
204
0
26
7
AMR 12,2
4
244
0
31
8
AMR SID
4
39
5
6
9
GSM-EFR SID
4
43
1
6
10
TDMA-EFR SID
4
38
6
6
11
PDC-EFR SID
4
37
7
6
12-14
For future use
-
-
-
-
15
No Data
4
0
4
1
Number of bits in Classes A, B, and C for each AMR codec mode
Frame Type

AMR
codec mode

Total number of bits
Class A
Class B
Class C
0
4,75
95
42
53
0
1
5,15
103
49
54
0
2
5,90
118
55
63
0
3
6,70
134
58
76
0
4
7,40
148
61
87
0
5
7,95
159
75
84
0
6
10,2
204
65
99
40
7
12,2
244
81
103
60
2. AMR-WB:
Composition of AMR-WB IF2 Frames for all Frame Types
Frame Type Index
Frame content
Number of bits in Frame Type
Number of bits in Frame Quality Indicator
Number of Bits in AMR-WB Core Frame
Number of Bits in Bit Stuffing
Number of octets (N)
0
AMR-WB 6.60 kbit/s
4
1
132
7
18
1
AMR-WB 8.85 kbit/s
4
1
177
2
23
2
AMR-WB 12.65 kbit/s
4
1
253
6
33
3
AMR-WB 14.25 kbit/s
4
1
285
6
37
4
AMR-WB 15.85 kbit/s
4
1
317
6
41
5
AMR-WB 18.25 kbit/s
4
1
365
6
47
6
AMR-WB 19.85 kbit/s
4
1
397
6
51
7
AMR-WB 23.05 kbit/s
4
1
461
6
59
8
AMR-WB 23.85 kbit/s
4
1
477
6
61
9
AMR-WB SID (Comfort Noise Frame)
4
1
40
3
6
10-13
For future use
-
-
-
-
-
14
speech lost
4
1
0
3
1
15
No Data (No transmission/No reception)
4
1
0
3
1
 
Frame Type

AMR-WB
codec mode

Total number of bits
Class A
Class B
Class C
0
6.60
132
54
78
0
1
8.85
177
64
113
0
2
12.65
253
72
181
0
3
14.25
285
72
213
0
4
15.85
317
72
245
0
5
18.25
365
72
293
0
6
19.85
397
72
325
0
7
23.05
461
72
389
0
8
23.85
477
72
405
0
四、PCM16和AMR之间的转换

Amr 一帧为20毫秒

以AMR 4.75Kbits/s为例
:

每秒产生的声音位数
= 4750bits/s
每20ms帧占用的位数
= 4750bits/s / 50frames/s = 95bits
每20ms帧占用的字节数 = 95bits / 8bits/byte = 11.875bytes - 圆整到12字节,不足的补
0
加上一个字节的帧头,所以,20ms一帧的
AMR: 12-bytes + 1-byte = 13-bytes

相反,转换回来就成了

13-bytes * 50frames/s * 8bits/byte = 5200bits/s

注意,这里两个数值并不对应,是由于圆整的原因

 
五、 AMR 文件的存储格式(RFC 3267):
AMR IF1, IF2定义了 AMR的帧格式, 用于无线传输用。 RFC 3267定义了把AMR数据存成文件的文件格式。
AMR的文件格式如下图1所示:
它包含一个文件头,然后就是一帧一帧的AMR数据了。
 
<!--[if !supportLists]-->1.
       <!--[endif]-->文件头格式:
 AMR 文件支持单声道和多声道。单声道和多声道的文件头是不同的。
 单声道:
 AMR-NB文件头: "#!AMR\n" (or 0x2321414d520a in hexadecimal)(引号内的部分)
 AMR-WB 文件头:"#!AMR-WB\n" (or 0x2321414d522d57420a in hexadecimal).(引号内)
多声道:
多声道的文件头包含一个magic number和32bit channle description域。
AMR-NB 的magic number:"#!AMR_MC1.0\n"
(or 0x2321414d525F4D43312E300a in hexadecimal).
AMR-WB的magic number:"#!AMR-WB_MC1.0\n"
                         (or 0x2321414d522d57425F4D43312E300a in hexadecimal).
32bit的channel description域的定义如下:
其中 reserved bits必须为0, CHAN:表示当前文件中含有几个声道。
 
帧头的格式:
帧头的格式如图2 所示, 它占1个字节(8个bit)
P为填充为设置为0

FT为编码模式, 即上面提到的16中编码模式。
Q为帧质量指示器,如果为0表明帧被损坏。

 
图3 列举了AMR-NB 5.9Kbit的一个帧的格式,
对于5.9kbit一帧的有118bit的数据,15*8=120=118+2, 所以在最后有2个bit的填充位。
 

AMR音频编码器概述及文件格式分析的更多相关文章

  1. AMR音频文件格式分析

    AMR音频文件格式分析 1 概要 如今非常多智能手机都支持多媒体功能,特别是音频和视频播放功能,而AMR文件格式是手机端普遍支持的音频文件格式.AMR,全称是:Adaptive Multi-Rate, ...

  2. JPEG概述和头分析(C源码)

    原创文章,转载请注明:JPEG概述和头分析(C源码)  By Lucio.Yang 部分内容来自:w285868925,JPEG压缩标准 1.JPEG概述 JPEG是一个压缩标准,又可分为标准 JPE ...

  3. linux第三次实践:ELF文件格式分析

    linux第三次实践:ELF文件格式分析 标签(空格分隔): 20135328陈都 一.概述 1.ELF全称Executable and Linkable Format,可执行连接格式,ELF格式的文 ...

  4. Linux及安全实践四——ELF文件格式分析

    Linux及安全实践四——ELF文件格式分析 一.ELF文件格式概述 1. ELF:是一种对象文件的格式,用于定义不同类型的对象文件中都放了什么东西.以及都以什么样的格式去放这些东西. 二.分析一个E ...

  5. MP4文件格式分析及分割实现(附源码)

    MP4文件格式分析                   MP4(MPEG-4 Part 14)是一种常见的多媒体容器格式,它是在“ISO/IEC 14496-14”标准文件中定义的,属于MPEG-4的 ...

  6. 多媒体(2):WAVE文件格式分析

    目录 多媒体(1):MCI接口编程 多媒体(2):WAVE文件格式分析 多媒体(3):基于WindowsAPI的视频捕捉卡操作 多媒体(4):JPEG图像压缩编码 多媒体(2):WAVE文件格式分析

  7. 实践2.4 ELF文件格式分析

    实践2.4 ELF文件格式分析 1.ELF文件头 查看/usr/include/elf.h文件: #define EI_NIDENT (16) typedef struct { unsigned ch ...

  8. wav文件格式分析详解

    wav文件格式分析详解 文章转载自:http://blog.csdn.net/BlueSoal/article/details/932395 一.综述    WAVE文件作为多媒体中使用的声波文件格式 ...

  9. 最简单的基于FFMPEG的音频编码器(PCM编码为AAC)

    http://blog.csdn.net/leixiaohua1020/article/details/25430449 本文介绍一个最简单的基于FFMPEG的音频编码器.该编码器实现了PCM音频采样 ...

随机推荐

  1. Inter IPP 跟 Microsoft V100编译器区别

    最近做项目用了两个编译器,由于是一种精度的算法计算,对计算的精度要求非常高,同时都用的float型,发现inter的结果比vs的结果好许多.但是不知道是什么原因,最后测试发现,是两个编译器的问题.   ...

  2. Ext.net.DirectMethods

    http://www.ext.net.cn/forum.php?mod=viewthread&tid=1282&highlight=directmethod DirectMethod ...

  3. cocos2d-x游戏开发系列教程-中国象棋01-工程文件概述

    上一篇博文我们看到了象棋的效果图,这一张我们来看象棋代码的整体概述 让我们先对整个代码框架有个了解. 主目录: 主目录包含内容如上图: classes目录:业务代码 proj.win32:包括main ...

  4. Linux下基于Erlang的高并发TCP连接压力实验

    1.实验环境: 联想小型机: 操作系统:RedHat Enterprise LinuxServer release6.4(Santiago) 内核版本号:Linux server1 2.6.32-35 ...

  5. android中关于ListView的卡位说明

    需求:做项目的时候,需要将ListView的header的一个Tab卡位,即listView滑动后,Header的某一个部分可以定在ListView的顶端卡住. 解决的方案:监听ListView的滑动 ...

  6. PHP - 字符串操作

    第8章 字符串处理 学习要点: 1.字符串格式化 2.操作子字符串 3.字符串比较 4.查找替换字符串 5.处理中文字符 在每天的编程工作中,处理.调整以至最后控制字符串是很重要的一部分,一般也认为这 ...

  7. C# - 委托_求定积分通用方法

    代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using Syst ...

  8. MVC与WebForm的简单的比较

    MVC与WebForm的简单的比较 ASP 强制程序员将业务逻辑和展示页放到一个文件中 WebForm 允许程序员将业务逻辑与页面展示分开到不同的文件中,并且提供强大的开发平台来写  业务逻辑代码  ...

  9. ORA-01403: no data found

    在项目的存储过程中有这样一句话 select jgdm,jgmc into parm_mrjgdm,parm_mrjgmc From BL_KHXX  where jgdm=PARM_JGDM; 每次 ...

  10. ADO.NET 操作数据库 --- 01 简单封装

    由于我是Java转的C#开始的时候就用的NHihernate,和EF 对ADO.NET使用较少,现在封装一个ADO.NET的工具类来实现数据库的操作,比较简单,望大家多多提意见. 如果大家有什么学习中 ...