在讲述正文以前首先介绍有关音频的一些知识。
1、riff/wav/pcm/raw/aac/mp3
riff其实就是一种文件描述的格式;pcm就是媒体文件数据的元数据,直接记录声音的内容;wav文件就采用了riff的描述,前面44字节就是riff描述内容,wav=riff+pcm;raw=pcm;mp3是一种音频的压缩编码,就是将pcm通过算法进行压缩;aac也是一种高级音频编码,相对于mp3,aac格式的音频更佳,文件更小,不足之处在于它属于有损压缩的格式。
2、MediaRecorder/audioRecord区别
MediaRecorder是系统提供常用的录音类,该类可以实现音频录制生成文件;audioRecord也是系统提供的录音类,但是它可以直接捕获音频流,开发者可以实时随意处理其内容,常见场景比如语音聊天/tom猫/k歌。
介绍完基础知识,下面进入正文,如何实时录制mp3音频,现如今转化音频为MP3的框架使用的最多的是lame框架(利用C语言是实现的),在Android和IOS中均可使用。
我们使用的是lame框架进行mp3的格式转换,由于它是C语言编写的,无法在Android中直接使用,我们必须使用Jni的方法来调用lame,在这里就不介绍Jni的使用方法了,使用Jni的方法我们主要是为了得到一个So文件,得到So文件以后,我们load至系统中就可以调用对应的方法,这里我使用的一个现成的so文件来进行lame框架中格式转化的方法,下面进入详细的代码。
一、引入So文件
使用