场景说明:
在现在有安卓手机中AudioRecord录制出的音频是通过扬声器或表克风录制出来的。对于外录即扬声器录制的视频而言,音质十分渣。对于想要录制现场的声音如开会时,两人对话时声音证据保存的声音录制,完全不能满足需求。鉴于此,研究安卓平台下高清音频录制的解决方案。
原理:本人实现原理很简单,分为两部分:1, 原始音频采集,2 音频编码 。
1,原始音频采集:
还是通过安卓的API AudioRecord 去采集声音,这个API录制声音不行,但在安卓上采集音频通常只能通过这个API,因为它直接封装了底层audio_device设备。
想要自己另外实现一套采集手段,不大实现且费力。我们可以通过设定一定的音频采样率,通道类型,码率,缓冲区大小来初始化AudioRecord,让它来为我们
采集原始音频,即 PCM 格式音频。
2 , 音频转码:
采集到PCM音频后,将PCM格式转码为MP3格式音频。这里我用的是LAME编码器,它是一款出色的音频编码器,摘自网上的一段介绍,LAME(mitiok.ma.cx)编码出来的MP3音色纯厚、空间宽广、低音清晰、细节表现良好,它独创的心理音响模型技术保证了CD音频还原的真实性。也不知是真是假。呵呵,反正本人用的还不错,保留了MP3音频的高清质量。
具体实现步骤:
1,音频采集:
这里使用设定的采样率,码率,缓冲区大小初始化AudioRecord
并且设制处理音频的间隔时间及回调监听。
/**
* Initialize audio recorder
*/
private void initAudioRecorder() throws IOException {
int bytesPerFrame = audioFormat.getBytesPerFrame();
/* Get number of samples. Calculate the buffer size (round up to the
factor of given frame size) */
int frameSize =