问题描述: 在使用android.media.AudioRecord类进行音频录制时,可能会遇到“音频缓冲区大小无效”的问题。
解决方法:
int sampleRateInHz = 44100; // 采样率
int channelConfig = AudioFormat.CHANNEL_IN_MONO; // 单声道
int audioFormat = AudioFormat.ENCODING_PCM_16BIT; // 16位PCM编码
int bufferSize = AudioRecord.getMinBufferSize(sampleRateInHz, channelConfig, audioFormat);
if (bufferSize == AudioRecord.ERROR || bufferSize == AudioRecord.ERROR_BAD_VALUE) {
// 获取音频缓冲区大小失败,进行错误处理
// ...
} else {
// 使用获取到的有效音频缓冲区大小进行录制操作
AudioRecord audioRecord = new AudioRecord(MediaRecorder.AudioSource.MIC, sampleRateInHz, channelConfig, audioFormat, bufferSize);
// ...
}
int bufferSizeFactor = 2; // 缓冲区大小因子
int bufferSize = sampleRateInHz * channelCount * bytesPerSample * bufferSizeFactor;
AudioRecord audioRecord = new AudioRecord(MediaRecorder.AudioSource.MIC, sampleRateInHz, channelConfig, audioFormat, bufferSize);
希望以上解决方法对您有帮助!