Android录音控件

来源:互联网 发布:手机淘宝历史价格查询 编辑:程序博客网 时间:2024/05/16 10:46

        做项目一直不得空,好不容易腾出时间,赶紧把过往的知识整理一下,以下是做项目时用到的录音控件,在同事写的基础上修改改成,支持后台录音,页面比较简单。写这个组件之前做了简单的调研,如果有不当之处,还请大家指正,谢谢!


【Android】【录音】Android录音--AudioRecord、MediaRecorder


    Android提供了两个API用于实现录音功能:android.media.AudioRecordandroid.media.MediaRecorder


   网上有很多谈论这两个类的资料。现在大致总结下:


1AudioRecord


主要是实现边录边播(AudioRecord+AudioTrack)以及对音频的实时处理(如会说话的汤姆猫、语音)


优点:语音的实时处理,可以用代码实现各种音频的封装


缺点:输出是PCM语音数据,如果保存成音频文件,是不能够被播放器播放的,所以必须先写代码实现数据编码以及压缩 (pcm是一种数据编码格式,CD唱盘上刻录的就直接用pcm格式编码的数据文件;
wav
是一种声音文件格式,wav里面包含的声音数据可以是采用pcm格式编码的声音数据,也可以是采用其它格式编码的声音数据,但目前一般采用pcm编码的声音数据


示例:


使用AudioRecord类录音,并实现WAV格式封装。录音20s,输出的音频文件大概为3.5M左右(已写测试代码)


2MediaRecorder


已经集成了录音、编码、压缩等,支持少量的录音音频格式,大概有.aacAPI = 16 .amr .3gpAACaac其实是高级音频编码(advanced audiocoding的缩写,它是被设计用来取代MP3格式的。你可能会想,它压缩了原始的声音,导致容量占用少但是质量肯定会有所下降。不过这些质量的损失取决于声音比特率的大小,当比特率合适的时候,这些损失人耳是很难听出来的。事实上,aacmp3有更好的压缩率,特别是在比特率低于128bit/s的时候。)


优点:大部分以及集成,直接调用相关接口即可,代码量小


缺点:无法实时处理音频;输出的音频格式不是很多,例如没有输出mp3格式文件


示例:


使用MediaRecorder类录音,输出amr格式文件。录音20s,输出的音频文件大概为33K(已写测试代码);


3、音频格式比较


WAV格式:录音质量高,但是压缩率小,文件大


AAC格式:相对于mp3AAC格式的音质更佳,文件更小;有损压缩;一般苹果或者Android SDK4.1.2API 16)及以上版本支持播放


AMR格式:压缩比比较大,但相对其他的压缩格式质量比较差,多用于人声,通话录音


至于常用的mp3格式,使用MediaRecorder没有该视频格式输出。一些人的做法是使用AudioRecord录音,然后编码成wav格式,再转换成mp3格式


解决办法:第一种:利用AudioRecord可以录制成WAV格式的再用libmp3lame转换mp3,或者可以AudioRecord加上libmp3lame直接出来mp3(耗时比较长)


根据以上的比较:我们的软件的录音要实现的功能,录音,暂停,停止、播放、暂停、拖动进度条快进和快退,要求,没有实施性,而且在音质清晰的情况下,音频文件越小越好。


 


播放:


1.SoundPool----适合短促且对反应速度比较高的情况(游戏音效或按键声等)


  2.MediaPlayer ----适合比较长且时间要求不高的情况


  3.AudioTrack ----播放解码后的PCM码流



0 0
原创粉丝点击