我正在尝试从手机的音频界面录制数据。我用了audiorecord功能。以下是我的代码:
public void Initialize(){
buffersizebytes = AudioRecord.getMinBufferSize(SAMPPERSEC,channelConfiguration, audioEncoding); // 4096 on ion
buffer = new short[buffersizebytes];
buflen = buffersizebytes / 2;
audioRecord = new AudioRecord(
android.media.MediaRecorder.AudioSource.MIC, SAMPPERSEC,
channelConfiguration, audioEncoding, buffersizebytes);
acquire();
for(int i=0; i<4096; i++) buffer[i]=1;
}
public void acquire() {
try {
audioRecord.startRecording();
mSamplesRead = audioRecord.read(buffer, 0, buffersizebytes);
audioRecord.stop();
} catch (Throwable t) {
// Log.e("AudioRecord", "Recording Failed");
}
}
我想将获取的数据放入4096字节的缓冲区中。但我的程序只将数据放入1024个字节。第一个432字节也是零。但我不断发送数据。可能是什么问题?
答案 0 :(得分:1)
getMinBufferSize
,顾名思义为您提供最小缓冲区大小。你可以设置更大的东西,包括4096。
对于初始化后的第一个样本,我的手机会产生两个巨大的峰值,持续约0.5秒,所以我猜这是由录音机启动引起的。在处理实际数据之前,请尝试跳过一些样本(让我们说500)。
此外,buffer
的大小应为buffersizebytes/2
。