我想从我的安卓设备的麦克风中采样大约 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,而不是整个缓冲区。为什么?
我怎样才能做我想做的事?