AMR音频文件格式分析
1 概述
如今非常多智能手机都支持多媒体功能,特别是音频和视频播放功能,而AMR文件格式是手机端普遍支持的音频文件格式.AMR,全称是:Adaptive Multi-Rate,自适应多速率,是一种音频编码文件格式,专用于有效地压缩语音频率.
AMR音频主要用于移动设备的音频压缩,压缩比非常高,可是音质比較差,主要用于语音类的音频压缩,不适合对音质要求较高的音乐类音频的压缩.
2 AMR编码方式
AMR 一共同拥有16种编码方式. 0-7相应8种不同的编码方式,每种编码方式的採样频率不同; 8-15 用于噪音或者保留用.说明:
- 比特率是指将数字声音由模拟格式转化成数字格式的採样率,採样率越高,还原后的音质就越好.
- 比特率值与现实音频对比:
- 16kbps=电话音质
- 24kbps=添加电话音质,短波广播,长波广播,欧洲制式中波广播
- 40kbps=美国制式中波广播
- 56kbps=话音
- 64kbps=添加话音(手机铃声最佳比特率设定值,手机单声道MP3播放器最佳设定值)
- 112kbps=FM调频立体声广播
- 128kbps=磁带(手机立体声MP3播放器最佳设定值,低档MP3播放器最佳设定值)
- 160kbps=HIFI高保真(中高档MP3播放器最佳设定值)
- 192kbps=CD(高档MP3播放器最佳设定值)
- 256kbps=Studio音乐工作室(音乐发烧友适用)
- 音频数据帧大小的计算:amr 一帧相应20ms,那么一秒有50帧的音频数据.由于比特率不同,每帧的数据大小也不同.假设比特率是12.2kbs.那么每秒採样的音频数据位数为:12200 / 50 = 244bit = 30.5byte,取整为31字节.取整要四舍五入,再加上一个字节的帧头,这样数据帧的大小为32字节.
3 AMR文件结构示范图
从图中能够看出,全部AMR文件头标志是6个字节(最后一个字节是换行符"/n").帧头为0x2C,后面就紧跟的是音频帧.这个文件是每帧21字节.
4 AMR帧头格式分析
AMR语音帧格式为帧头和语音数据组成.
![技术分享](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAP0AAAAcCAYAAACqLbnbAAADAUlEQVR4Ae1ci07kQAyj6P7/lw/MySdjMt1NWcTOjCvB5OGkiZvwqATH3/frJVcYCAPbMPC6TadpNAyEgQ8GsvQZhDCwGQN/tN/jOFSNHAbCwCIM6G/xn5Ye/alzkX7vagNf8Hbt/S6CApqWAf9mnh/vp32UKTwMXGMgS3+Nt0SFgWkZyNJP++hSeBi4xsDlpfffE3j7kZ1+PTtYjfstWeuFfPZxVqPmOcPB51jXPf6W3/HR92Pgy4u8n6YAQznrCzPUzfq1B9pG3FWL6DbNhzye0/XRvdTu96DP70V7zj0YaC+9DhJlH6KRHZQCC7/HzEK31s0+UbvKioHvrOcRF1UO5Openkfr7OYKfg0G2kuPtnWIqyHyQUOMDnflB2a2S3lg7RUf8I2wFReegzqx1JkXp9ogV1jgcoWBS0tf0eZDBwwHj7IOY5Xj2W3sUfu6VTNjiDvTmZcnsapXMnJ37awn534MPGzpQR0HDzIHFjIv9dM204n62RdP1K8ydfbKs9sncvJ+lKl3cmptlDvx3bqDf34GHrr0aJcDqq1z2NRG2X2zDGSnTu+Rveup+ZxD+NymsS4rlnnV5vjoezHw8KWv6OPgqW+FIUQP1VX1W9kY63mIVY5oY4yfmkOxaqesfs8TfX0GvrX0HKLv0IQcMw+h1z7iZGSvuFMsZb+Px9FPvPrpg63yKzby+gy0l14HSOUOVRg8xuJUvZPnt7BX6mW/Vc2+iM6J+t1X5YONNWrsCBv7Xgy0l35Ejw4jB86xHEBfAI31mGfUtX72dKvOe3HMQ06g+/3oUzvjqrN77ypHbOsw8LClx2BxCH0oOXT0V/R5TIV5Bpv34Dp79Vodp36Poc4Y6JB5ItZ12BinOGJx4iLmn5bPOzJwvA/P//+R58OyEyE7977Tc96xV5/ty39wsyN56TkMrMBAln6Fp5gewkCDgSx9g6xAw8AKDGTpV3iK6SEMNBj48vZ+57e7O/femJlAJ2fg09LLi/zJ20r5YSAMjBjIj/cjZmIPA4sy8Aa9aYVrVZSU0gAAAABJRU5ErkJggg==)
AMR语音帧头占1个字节,例如以下图所看到的:
![技术分享](data:image/png;base64,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)
当中:
P = 0;
FT:Frame Type,相应不同编码模式.(參见“2 AMR编码方式”中表格中的说明)
Q:帧质量指示器,0表示为坏帧.
后面的P补0.
5 AMR帧读取算法
由于可能存在异常帧,所以不一定全部的语音帧大小一致,对于跟正常帧大小不一致的,或者帧头跟正常帧头不一致的,就不交给解码器,直接抛弃该坏帧.以下是算法描写叙述流程图.