我正在 Samsung Galaxy S i9000 上对此进行测试。
int sampleRate = 44100;
int bufferSize = AudioRecord.getMinBufferSize(sampleRate,
AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_8BIT);
它返回-2ERROR_BAD_VALUE
.
原生采样率为 44100Hz,由
AudioTrack.getNativeOutputSampleRate(AudioManager.STREAM_SYSTEM)。
我尝试过将 SampleRate 设置为 1000、8000、22100 和 44100。我也尝试过更改AudioFormat.CHANNEL_IN_MONO
to AudioFormat.CHANNEL_CONFIGURATION_MONO
。我也尝试过STEREO
(both IN_STEREO
and CONFIGURATION_STEREO
)。我也尝试过 16 位编码而不是 8 位。
更新:我的清单有AUDIO_RECORD
作为许可。
结果我一直得到-2。为什么会发生这种情况?
来自平台源文件音频记录.java http://google.com/codesearch/p?hl=en#uX1GffpyOZk/media/java/android/media/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 位或什么都没有。 :\
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)