6

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

AudioRecord(
    int audioSource, int sampleRateInHz,
    int channelConfig, int audioFormat, int bufferSizeInBytes)

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

bufferSizeInBytes= getMinBufferSize (
    int sampleRateInHz, int channelConfig, int audioFormat) 

谁能告诉我原因?

我需要在我记录的值和模式之间建立关联。此模式比 MinBufferSize 长。所以,我应该将 bufferSizeInBytes 增加到我喜欢的值,还是会降低 AudioRecord 的性能。

4

1 回答 1

7

谁能告诉我原因?

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

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

但是,缓冲区大小并不能确定您可以从中请求多少数据read()。请求超过AudioRecord's缓冲区大小的数据是可以的;read()在您请求的所有数据都被读取之前不会返回。

于 2013-09-16T13:12:35.847 回答