【发布时间】:2016-03-22 17:46:30
【问题描述】:
我正在尝试使用具有不同采样率和 PCM 编码的 AudioRecord 类录制音频,问题是,在构造 AudioRecord 对象并使用 AudioFormat.ENCODING_PCM_8BIT 或 AudioFormat.ENCODING_PCM_FLOAT 实现 AudioRecorder.getMinBufferSize() 方法时,报告不同的错误,例如:
不支持的样本编码。应该是
ENCODING_PCM_8BIT
或 ENCODING_PCM_16BIT。
或
E/android.media.AudioRecord: getMinBufferSize(): 无效的音频格式。
问题是,我正在使用 Lollipop 在第一代 Moto G 上进行测试,因此根据 Android 开发者文档,AudioFormat.ENCODING_PCM_FLOAT 是受支持的。
显然AudioRecorder.getMinBufferSize() 只适用于AudioFormat.ENCODING_PCM_16BIT。
那么我应该如何知道要在构造函数上实现的 MinBufferSize 呢?
AudioRecord 构造函数:
audioRecorder = new AudioRecord(audioSource, sampleRate, channelConfig, audioFormat, mBufferSize);
录音方法:
mBufferSize = AudioRecord.getMinBufferSize(sampleRate, channelConfig, audioFormat);
【问题讨论】:
标签: android android-5.0-lollipop record audiorecord