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

来源:互联网 发布:画中字软件 编辑:程序博客网 时间:2024/05/16 12:19
四、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的填充位。
参考文献:
RFC3267 RTP  Payload Format for AMR and AMR-WB
3GPP TS 26.201  V6.0.0
3GPP TS 26.101  V6.0.0
原创粉丝点击