我正在三星 Galaxy S i9000 上对此进行测试。
int sampleRate = 44100;
int bufferSize = AudioRecord.getMinBufferSize(sampleRate,
AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_8BIT);
它返回 -2 ERROR_BAD_VALUE
。
native 采样率为 44100Hz,由
返回AudioTrack.getNativeOutputSampleRate(AudioManager.STREAM_SYSTEM).
我尝试将采样率设置为 1000、8000、22100 和 44100。我还尝试将 AudioFormat.CHANNEL_IN_MONO
更改为 AudioFormat.CHANNEL_CONFIGURATION_MONO
。我也尝试过 STEREO
(IN_STEREO
和 CONFIGURATION_STEREO
)。我也尝试过 16 位编码而不是 8 位编码。
更新:我的 list 有AUDIO_RECORD
权限。
结果我一直得到-2。为什么会这样?
最佳答案
来自平台源文件AudioRecord.java :
static public int getMinBufferSize(int sampleRateInHz, int channelConfig, int audioFormat) {
...
// PCM_8BIT is not supported at the moment
if (audioFormat != AudioFormat.ENCODING_PCM_16BIT) {
loge("getMinBufferSize(): Invalid audio format.");
return AudioRecord.ERROR_BAD_VALUE;
}
...
}
看起来您的选择是 16 位或什么都没有。 :\
关于android - 为什么 AudioRecord.getMinBufferSize 会返回 ERROR_BAD_VALUE (-2)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4781781/