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的替代品,用于在本地和互联网上播放音频和视频,非常适用视频直播。