Android,最大缓冲区大小

Android,最大缓冲区大小,android,audio-recording,Android,Audio Recording,我将声音实时捕捉到缓冲区,然后处理这些数据。但有时我会收到警告:缓冲区溢出是什么导致了处理中的问题 我制作了录音带: bufferSize = ???; recorder = new AudioRecord(MediaRecorder.AudioSource.MIC, RECORDER_SAMPLERATE, RECORDER_CHANNELS, RECORDER_AUDIO_ENCODING, **

我将声音实时捕捉到缓冲区,然后处理这些数据。但有时我会收到警告:缓冲区溢出是什么导致了处理中的问题

我制作了录音带:

    bufferSize = ???;
    recorder = new AudioRecord(MediaRecorder.AudioSource.MIC,
                    RECORDER_SAMPLERATE, RECORDER_CHANNELS,
                    RECORDER_AUDIO_ENCODING, **bufferSize**);
但并没有用于getMaximumBufferSize或类似的方法(只有getMinBufferSize-但这里是BufferOwerFlow)。我认为设置自己的缓冲区大小不是一个好的解决方案。

根据:

创建时,AudioRecord对象初始化其关联的音频缓冲区,它将用新的音频数据填充该缓冲区。此缓冲区的大小(在构造期间指定)决定了音频记录在“过度运行”尚未读取的数据之前可以录制多长时间。从音频硬件读取数据时,数据块的大小应低于总记录缓冲区的大小

您的缓冲区应该足够大,以满足您想要支持的缓冲数据量,即比特率*时间,并且您需要确保您从
音频记录
中持续读取数据,以便它不会填满缓冲区,您读取的块的大小小于
录音机中的缓冲区大小。我喜欢读/写8k块,但也看到了其他值