使用AudioRecord录制超过1秒时的getMinBufferSize()

时间:2014-06-18 10:08:48

标签: android buffer audio-recording

我在使用手机的MIC录音时使用getMinBufferSize()和AudioRecord.read()感到有些困惑。 我知道getMinBufferSize()为您提供了创建audiorecord对象所需的最小字节数(1秒内?)。

bufferSize= AudioRecord.getMinBufferSize(RECORDER_SAMPLERATE,
            RECORDER_CHANNELS,
            RECORDER_AUDIO_ENCODING);

然后,当他们调用AudioRecord.read()时,他们将读取“bufferSize”的字节大小作为参数。

read = recorder.read(data, 0, bufferSize);

以下是我的问题:

1-为什么bufferSize会给我8192?我猜它是8 * 1024,但我想确切知道它的计算是什么(我使用8000 Hz采样率,通道MONO和16位PCM)

2-我认为bufferSize是我可以在1秒内存储的数据量但是,如果我想读取超过1秒怎么办?我应该将此值乘以秒数吗?

1 个答案:

答案 0 :(得分:0)

我猜你有一个数组8192的大小 由于您使用16bit-PCM对文件进行编码,因此阵列大小为16bit * 8192,大约为130000 一秒钟内的数据容量是128000(= 8000 * 1 * 16) 所以它成为你的最小缓冲区大小