前沿
需求:采集音频数据,按照每帧20ms的数据持续输出.
很显然需要用到AudioRecord,可以输出未处理的裸PCM数据.
PCM:PCM(Pulse Code Modulation)也被称为脉冲编码调制。PCM音频数据是未经压缩的音频采样数据裸流,它是由模拟信号经过采样、量化、编码转换成的标准的数字音频数据。
如果需要知道详细的 ====> www.baidu.com
Android 音频相关API
注意:MediaPlayer在播放音频时
1、在framework层还是会创建AudioTrack
2、解码后的PCM数流传递给AudioTrack
3、AudioFlinger进行混音
4、传递音频给硬件播放出来
AudioRecord
基础知识
采样率
“音频采样率” 是指录音设备在一秒钟内对声音信号的采样次数。常用的音频采样频率有:8kHz、11.025kHz、22.05kHz、16kHz、37.8kHz、44.1kHz、48kHz、96kHz、192kHz等。
通俗理解:每秒录取声音的次数。
注意:手机无法支持所有的采样率,Android中能保证的是44.1KHz全支持.其他的有可能在部分手机中不支持.
量化精度(采样位数)
“采样位数”越大表示的值的范围也就越大 "采样位数"可以理解为采集卡处理声音的解析度。这个数值越大,解析度就越高,录制和回放的声音就越真实。连续的模拟信号按一定的采样频率经数码脉冲取样后,每一个离散的脉冲信号被以一定的量化精度量化成一串二进制编码流,这串编码流的位数即为采样位数,也称为"量化精度"。常见的位数16bit和32bit.
通俗理解:每秒录取声音的精度,就像画面的分辨率,越高声音越真实
* 声道数
声道数分别有:单声道的声道数为1个声道;双声道的声道数为2个声道;立体声道的声道数默认为2个声道;立体声道(4声道)的声道数为4个声道。
常见使用的是:单声道(MONO) 和 双声道 (STEREO)
通俗理解:声道数表示录制或者播放音频的声音源.
码率
比特率(又叫做位速率或者码率)是指每秒传送的比特(bit)数。单位为bps(Bit Per Second),比特率越高,传送的数据越大。比特率表示经过编码(压缩)后的音、视频数据每秒钟需要用多少个比特来表示,而比特就是二进制里面最小的单位,要么是0,要么是1。比特率与音、视频压缩的关系,简单的说就是比特率越高,音、视频的质量就越好,但编码后的文件就越大;如果比特率越少则情况刚好相反。 若作为一种数字音乐压缩效率的参考性指标,比特率表示单位时间(1秒)内传送的比特数bps(bit per second,位/秒)的速度。通常使用kbps(通俗地讲就是每秒钟1000比特)作为单位。CD中的数字音乐比特率为1411.2kbps(也就是记录1秒钟的cd音乐,需要1411.2×1000比特的数据),音乐文件的BIT RATE高是意味着在单位时间(1秒)内需要处理的数据量(BIT)多,也就是音乐文件的音质好的意思。但是,BIT RATE高时文件大小变大,会占据很多的内存容量,音乐文件最常用的bit rate是128kbps,MP3文件可以使用的一般是8-320kbps,但不同MP3机在这方面支持的范围不一样,大部分的是32-256Kbps,这个指数当然是越广越好了,不过320Kbps是暂时最高等级了。<1B字节= 8 bit位 / 1024B = 1M> (那一秒的CD音乐需要 1411.2 / 8 = 176.4KB/s的空间,那四分钟的CD音乐需要 (1411.2kbps * 4 * 60)/ 8 / 1024 = 41.34373M)
码率计算公式
基本的算法是:【码率】(kbps)=【文件大小】(字节)X8/【时间】(秒)× 1000
音频文件专用算法:【比特率】(kbps)=【量化采样点】(kHz)×【位深】(bit/采样点)×【声道数量】(一般为2)
数据源
/**默认声音**/
public static final int DEFAULT = 0;
/**麦克风声音*/
public static