安卓:AudioRecord中推荐的bufferSizeInBytes值是多少?

6

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

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

在我查找的所有教程和示例中,大多数都建议按以下方式设置bufferSizeInBytes:

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

有人能告诉我原因吗?

我需要将我记录的值与一个模式进行关联。这个模式比MinBufferSize还要长。所以,我应该将bufferSizeInBytes增加到我喜欢的值,还是会使AudioRecord的性能变差。

1个回答

7
有人能告诉我原因吗? 因为对于给定配置,getMinBufferSize返回的是创建AudioRecord时允许指定的最小缓冲区大小。 为什么要使用可能的最小缓冲区大小?为了获得最低可能的延迟。假设你正在做类似SPL计量器的东西,你不希望在声压变化之前UI有一秒的延迟。 但是,缓冲区大小并不决定您可以从read()请求多少数据。 请求比AudioRecord缓冲区的大小更多的数据是可以的; read()只是不会返回,直到所有请求的数据都被读取。

从Android AudioRecord文档页面中:应该以小于总录音缓冲区大小的块大小从音频硬件中读取数据。 - Jayz7522

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接