0

我想从我的安卓设备的麦克风中采样大约 3 秒的声音。我必须使用的采样率为 48kHz,采用 16 位 pcm 编码。我使用以下代码:

AudioRecord recorder = new AudioRecord(AudioSource.MIC, 48000, AudioFormat.CHANNEL_IN_MONO,
                    AudioFormat.ENCODING_PCM_16BIT, bufferSize); 

            if (recorder.getRecordingState() == android.media.AudioRecord.RECORDSTATE_STOPPED)
                recorder.startRecording(); 
            recorder.read(dataBuffer, 0, bufferSize); 

现在,我认为在不使用 AudioRecord.getMinBufferSize 的情况下为 AudioRecorder 构造函数提供更大的缓冲区大小可以解决问题。(48000*3=144400 个样本)但是 read() 方法只填充缓冲区直到位置 4096,而不是整个缓冲区。为什么?

我怎样才能做我想做的事?

4

0 回答 0