Android音频框架:

 

        

 

        录音方式及比较:

       1、AudioRecord:主要是实现边录边播(AudioRecord+AudioTrack)以及对音频的实时处理

  • 优点:语音的实时处理,可以用代码实现各种音频的封装;
  • 缺点:输出是PCM语音数据,如果保存成音频文件,是不能够被播放器播放的,所以必须先写代码实现数据编码以及压缩。

       2、MediaRecorder(暂不考虑):已经集成了录音、编码、压缩等,支持少量的录音音频格式,大概有.aac(API = 16) .amr .3gp

  • 优点:直接调用相关接口即可,代码量小;
  • 缺点:无法实时处理音频;输出的音频格式不是很多,例如没有输出mp3格式文件。

        音频播放比较:

       1、SoundPool:支持多个音频文件同时播放(组合音频也是有上限的),延时短,比较适合短促、密集的场景,是游戏开发中音效播放的福音。原则上SoundPool播放的音效的长度不应该超过7s.

       2、MediaPlayer:源占用量较高、延迟时间较长、不支持多个音频同时播放。对于延迟度要求不高,并且希望能够更全面的控制音乐的播放,MediaPlayer比较适合。

       3、AudioTrack:用于实时播放PCM音频流。如果需要播放其它格式音频,需要相应的解码器。

       4、ExoPlayer(暂不考虑):google开源的应用级媒体播放器,提供了MediaPlayer API的替代品,用于在本地和互联网上播放音频和视频,非常适用视频直播。