最近公司有个项目,需要用到音频录制,就研究了一下这部分。
android的音频录制有2种方式,对应的是两个不同的类:AudioRecord和MediaRecord。
MediaRecord的特点是相对来说比较简单,它输出的是一个可播放的音频文件,但是对应的,它缺少对音频的控制(比如要对音频进行改变,变声,混音等)。
AudioRecord的使用相对复杂(其实基本功能的时候还是挺简单的),它输出的是一个音频流,通过这个流文件我们可以做很多事,比如实时的语音聊天,变声(汤姆猫),混音(唱吧)。我们也可以把流写入到文件中,格式一般为raw或者pcm,但是并不能直接播放(因为它是一个裸音频),如果要实现播放,我们还需要给文件加个编码头,这也是汤姆猫变声的原理。
在这篇里,我们主要讲一下AudioRecord的基本使用。
在使用AudioRecord录音之前,需要对它进行初始化,指定一系列的参数:
// 音频获取源,通常我们采集的是麦克风的音频,所以使用mic
private int audioSource = MediaRecorder.AudioSource.MIC;
// 设置音频采样率,44100是目前