Android 录音与播放

2017-05-24  本文已影响2834人  适量哥

网上查了下,Android 用 MediaRecorder 和 AudioRecord 实现录音。这里主要是用 MediaRecorder 实现录音,至于 AudioRecord 有空再研究下。

MediaRecorder

已集成了录音、编码、压缩等,支持少量的录音音频格式(aac/amr/3gp)

优点:代码量少
缺点:无法实时处理音频,输出的音频格式少

AudioRecord

实现边录边播以及对音频的实时处理

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

AudioRecord 构造函数

public AudioRecord(int audioSource, int sampleRateInHz, int channelConfig, int audioFormat, int bufferSizeInBytes)

audioSource : 声音来源,一般使用 MediaRecorder.AudioSource.MIC(麦克风)

sampleRateInHz :官方明确说到只有 44100Hz 是所有设备都支持的。其他 22050、16000 和 11025 只能在某些设备上使用

channelConfig :有立体声(CHANNEL_IN_STEREO)和单声道(CHANNEL_IN_MONO)两种。但只有单声道(CHANNEL_IN_MONO)是所有设备都支持的

audioFormat :有 ENCODING_PCM_16BIT 和 ENCODING_PCM_8BIT 两种音频编码格式。同样的,官方声明只有 ENCODING_PCM_16BIT 是所有设备都支持的

bufferSizeInBytes :录音期间声音数据的写入缓冲区大小(单位是字节)

setAudioSource() 声音来源,一般使用 MediaRecorder.AudioSource.MIC(麦克风)

这里不详细讲 AudioRecord ,有兴趣可以看以下博文:

Android使用录音(WAV格式)

Android MP3录音实现

Android录音--AudioRecord、MediaRecorder

常用音频格式

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

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

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

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

MediaPlayer

MediaPlayer 生命周期

Andriod 使用MediaPlayer播放音频文件

上一篇下一篇

猜你喜欢

热点阅读