Android:在AudioRecord中推荐bufferSizeInBytes值

Ign*_*rre 6 android audiorecord

我正在使用AudioRecord类,其构造函数是:

AudioRecord(
    int audioSource, int sampleRateInHz,
    int channelConfig, int audioFormat, int bufferSizeInBytes)
Run Code Online (Sandbox Code Playgroud)

在我在互联网上找到的所有(或大多数)教程和示例中,建议设置bufferSizeInBytes,如下所示:

bufferSizeInBytes= getMinBufferSize (
    int sampleRateInHz, int channelConfig, int audioFormat) 
Run Code Online (Sandbox Code Playgroud)

谁能告诉我原因?

我需要在记录的值和模式之间建立相关性.此模式比MinBufferSize长.那么,我应该将bufferSizeInBytes增加到我喜欢的值,还是会使AudioRecord的性能恶化.

Mic*_*ael 7

谁能告诉我原因?

因为getMinBufferSize给定配置的返回值是您在创建时允许指定的最小缓冲区大小AudioRecord.

为什么你想要尽可能小的缓冲区大小?获得尽可能低的延迟.
想象一下,你正在做一个类似SPL仪表的事情; 在你的UI对声压的变化作出反应之前,你不希望有一秒钟的延迟.

但是,缓冲区大小并不能确定您可以请求的数据量read().可以请求比AudioRecord's缓冲区大小更多的数据; read()只有在您请求的所有数据都被读取后才会返回.