【问题标题】:getMinBufferSize() when recording more than 1 sec with AudioRecord使用 AudioRecord 录制超过 1 秒时的 getMinBufferSize()
【发布时间】:2016-01-25 21:09:10
【问题描述】:

从手机的 MIC 录制时,我对使用 getMinBufferSize() 和 AudioRecord.read() 有点困惑。 我知道 getMinBufferSize() 为您提供了创建音频记录对象所需的最小字节数(在 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 秒怎么办?我应该将此值乘以秒数吗?

【问题讨论】:

    标签: android buffer audio-recording


    【解决方案1】:

    我猜你的数组大小为 8192 由于您以 16 位 PCM 编码文件,因此数组大小将为 16 位 * 8192,大约为 130000 一秒产生的数据容量为128000(= 8000 * 1 * 16) 所以它成为你的最小缓冲区大小

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-02
      • 1970-01-01
      • 2016-02-24
      • 1970-01-01
      • 2017-08-14
      • 1970-01-01
      • 2023-03-23
      • 1970-01-01
      相关资源
      最近更新 更多