【问题标题】:AudioRecord read() returns strange valuesAudioRecord read() 返回奇怪的值
【发布时间】:2013-02-07 01:08:27
【问题描述】:

我正在尝试通过以下代码从 mic 读取原始数据:

            short buffer[] = new short[AudioRecord.getMinBufferSize(8000,
                    AudioFormat.CHANNEL_IN_MONO,
                    AudioFormat.ENCODING_PCM_16BIT)];
            Log.d("O_o",""+buffer.length);
            AudioRecord rec = new AudioRecord(
                    MediaRecorder.AudioSource.MIC, 8000,
                    AudioFormat.CHANNEL_IN_MONO,
                    AudioFormat.ENCODING_PCM_16BIT, buffer.length);

            rec.startRecording();
            int read = rec.read(buffer, 0, buffer.length);
            for (int i = 0; i < read; i++) {
                Log.d("O_o",i+" "+buffer[i]);
            }
            rec.stop();
            rec.release();

但缓冲区总是充满 257 个值。 怎么了?

UDP: 看起来像我的初始值。循环调用 read() 会导致正常值。

【问题讨论】:

  • 你在模拟器上测试吗?
  • 大声笑..很好的调试标签:)

标签: android audio-capture


【解决方案1】:

您绝对应该看看this question + answer。它显示了一些可以大大改进您的代码的代码。

基本上,您的问题是您尝试同步读取它。音频过程通常必须异步实现,并且您将在任何时候获得 256 字节大小的音频块。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-12
    • 2013-04-26
    • 2012-06-21
    相关资源
    最近更新 更多