在Android中录制音频有两种方式,MediaRecorder和AudioRecorder。
- MediaRecorder相对比较简单,不需要关心中间录制过程,录制成功后可以直接得到音频文件,用音频播放器就可以直接播放。录制的音频文件是经过压缩的,需要设置编码器。
- AudioRecorder在声音录制过程中,可以处理采集的声音数据,如降噪、合成等。过程为一段一段进行录制然后得到数据分别进行处理。录制的是PCM格式的音频文件,需要用AudioTrack来播放,AudioTrack更接近底层。
本文主要讲解的是MediaRecorder来录制。
使用MediaRecorder录制音频的常见情况如下:
- 通过
new MediaRecorder()
创建MediaRecorder实例 - 调用
setAudioSource()
设定音频的录入源 - 调用
setOutputFormat()
设置输出格式 - 调用
setAudioEncoder()
设定音频的编码方式。 - 调用
setOutputFile()
设置输出文件路径 - 调用
prepare()
准备录制 - 调用
start()
开始录制 - 调用
stop()
停止录制
MediaRecorder recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.setOutputFile(PATH_NAME);
recorder.prepare();
recorder.start(); // Recording is now started
...
recorder.stop();
recorder.reset();
recorder.release(); // Now the object cannot be reused
附一张Android官网的流程图: