AudioRecord 可以获取到一帧帧PCM数据,然后转化成wav格式。
pcm是一种数据编码格式,CD唱盘上刻录的就直接用pcm格式编码的数据文件;
wav是一种声音文件格式,wav里面包含的声音数据可以是采用pcm格式编码的声音数据,也可以是采用其它格式编码的声音数据,但目前一般采用pcm编码的声音数据
AudioRecord的基本参数
audioResource:音频采集的来源
audioSampleRate:音频采样率
channelConfig:声道
audioFormat:音频采样精度,指定采样的数据的格式和每次采样的大小。
bufferSizeInBytes:AudioRecord 采集到的音频数据所存放的缓冲区大小。
获取最小的缓冲区大小,用于存放AudioRecord采集到的音频数据。
定义参数
//音频输入-麦克风
private final static int AUDIO_INPUT = MediaRecorder.AudioSource.MIC;
//采用频率
//44100是目前的标准,
//采样频率一般共分为22.05KHz、44.1KHz、48KHz三个等级
private final static int AUDIO_SAMPLE_RATE = 16000;
//声道 单声道
private final static int AUDIO_CHANNEL = AudioFormat.CHANNEL_IN_MONO;
//编码
private final static int AUDIO_ENCODING = AudioFormat.ENCODING_PCM_16BIT;
获得缓冲区字节大小
bufferSizeInBytes = AudioRecord.getMinBufferSize(AUDIO_SAMPLE_RATE,
AUDIO_CHANNEL, AUDIO_ENCODING);
创建录音对象
private AudioRecord audioRecord;
audioRecord = new AudioRecord(AUDIO_INPUT, AUDIO_SAMPLE_RATE, AUDIO_CHANNEL, AUDIO_ENCODING, bufferSizeInBytes);
6.录音
//开始录音
audioRecord.startRecording();
new Thread(new Runnable() {
@Override
public void run() {
writeDataTOFile(listener);
}
}