AudioRecord是安卓多媒体框架中用于录制音频的工具。它支持录制原始音频数据,即PCM数据,PCM数据不能被播放器直接播放,需要编码压缩成常见音频格式才能被播放器识别。通常生成PCM文件之后可将PCM文件转成WAV文件一般的播放器便可直接播放了。
接下来处理AudioRecord操作。
1.初始化AudioRecord
先了解几个概念:
audioSource:音频来源 sampleRateInHz:采样率,以赫兹为单位。目前,只有44100Hz是保证在所有设备上都可以使用的速率(最适合人耳的),但是其他速率(例如22050、16000和11025)可能在某些设备上可以使用;如果用于语音识别的话根据不同厂商需要采用不同的采样率 channelConfig:音频通道的配置 audioFormat:音频数据的格式 bufferSizeInBytes:在录制期间写入音频数据的缓冲区的总大小(以字节为单位)
初始化操作:
int mBufferSize = AudioRecord.getMinBufferSize(16000, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT)*2;
AudioRecord mAudioRecord = new AudioRecord(MediaRecorder.AudioSource.MIC,
16000,
AudioFormat.CHANNEL_IN_MONO,//双声道
AudioFormat.ENCODING_PCM_16BIT,
mBufferSize);
2.开始录音
/**
* 录制pcm文件
* @param pcmFilePath pcm文件路径
*/
public void startRecord(String pcmFilePath) {
if (isRecord) {
return;
}
this.mPcmFilePath=pcmFilePath;
isRecord = true;
RecordThread recordThread = new RecordThread();
mExecutorService.execute(recordThread);
}
class RecordThread implements Runnable {
@Override
public void run() {
mAudioRecord.startRecording();
FileOutputStream fos = null;
try {
Log.i(TAG, "文件地址: " + mPcmFilePath);
f