如何设置AudioRecord的正确缓冲区

时间:2013-10-14 09:06:17

标签: android buffer record audiorecord

我使用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();

0 个答案:

没有答案