您的位置:首页 > 移动开发 > Android开发

Android录音控件

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

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

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

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

1、AudioRecord

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

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

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

示例:

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

2、MediaRecorder

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

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

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

示例:

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

3、音频格式比较

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

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

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

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

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

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

 

播放:

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

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

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


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: