Android Studio 支持的 PCM 编码格式

Android Studio Supported PCM Encoding Formats

我正在尝试使用具有不同采样率和 PCM 编码的 AudioRecord class 来录制音频,问题是,在构造 AudioRecord 对象并实现 AudioRecorder.getMinBufferSize()方法使用AudioFormat.ENCODING_PCM_8BITAudioFormat.ENCODING_PCM_FLOAT,会报不同的错误如:

Unsupported sample encoding. Should be
ENCODING_PCM_8BIT
or ENCODING_PCM_16BIT.

E/android.media.AudioRecord: getMinBufferSize(): Invalid audio format.

事实是,我正在 Moto G 第一代 Lollipop 上进行测试,因此根据 Android 开发者文档 AudioFormat.ENCODING_PCM_FLOAT 是受支持的。 显然 AudioRecorder.getMinBufferSize() 只适用于 AudioFormat.ENCODING_PCM_16BIT.

那么我应该如何知道要在构造函数上实现的 MinBufferSize?

AudioRecord 构造函数:

audioRecorder = new AudioRecord(audioSource, sampleRate, channelConfig, audioFormat, mBufferSize);

AudioRecord 方法:

mBufferSize = AudioRecord.getMinBufferSize(sampleRate, channelConfig, audioFormat);

AudioRecordAudioTrack 是两个不同的东西。

AudioFormat.ENCODING_PCM_FLOATAudioTrack 支持,因为 Lollipop

但是 AudioRecord 仅从 Marshmallow 开始支持 AudioFormat.ENCODING_PCM_FLOAT

检查http://developer.android.com/reference/android/media/AudioFormat.html