我使用AudioRecord
在Android设备上录制音频。要创建AudioRecord
的实例,您应该设置固定大小buffer
来存储音频数据。然后,我们需要连续从此buffer
提取数据。如果buffer
的尺寸太小而且抓取数据太慢,buffer
将会溢出!
为避免此异常,我希望尽可能将buffer
的大小设置得更大并及时获取数据。
AudioRecord
提供了getMinBufferSize(int,int,int)
方法,以获得音频硬件可支持的最小buffer
大小。但这是最小尺寸而不是buffer
的适当尺寸。
我的问题是如何计算和设置buffer
的适当大小?
以下是我使用AudioRecord
:
audioRecord = new AudioRecord(audio_source, sampleRate, audio_channel, audio_encoding, buffer_size);
new Thread(new Runnable{
while(true){ //Loop start
readSize = audioRecorder.read(readBuffer, 0, useReadBufferSize); // fetch data from buffer to readbuffer
// throw readbuffer data out, do this operation as qucik as possible, Avoid to block thread
// check if the AudioRecord stopped and break if true
}
}).start();