我在使用手机的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秒怎么办?我应该将此值乘以秒数吗?
答案 0 :(得分:0)
我猜你有一个数组8192的大小 由于您使用16bit-PCM对文件进行编码,因此阵列大小为16bit * 8192,大约为130000 一秒钟内的数据容量是128000(= 8000 * 1 * 16) 所以它成为你的最小缓冲区大小