Android audioRecord.read缓冲区连接以生成波形

时间:2013-08-01 19:16:38

标签: java android audiorecord

我试图手动从麦克风构建音轨并查看其波形。

我像这样阅读缓冲区:

 double[] bufferSet = new double[blockSize*2]

 //in a while loop
 int bufferReadResult = audioRecord.read(buffer, 0, blockSize);

然后从读取结果中建立我自己的缓冲区。

所以bufferSet看起来有点像这样

//First second
j=1;

for(i=0; i<blockSize; i++) {
    bufferSet[j*blockSize+i] = buffer[i];
}

//Second Second
j=2;

for(i=0; i<blockSize; i++) {
    bufferSet[j*blockSize+i] = buffer[i];
}

所以在这一点上,我希望有一个bufferSet,音频长达2秒。问题是当我绘制它时,我可以清楚地看到连接波形的3个缓冲区中的每一个突然发生变化的部分。

缓冲区必须填写特定顺序吗?从0开始(从最早的时刻到最后一个单位(最新时间)还是相反的方式,它是时间明智的吗?

因此音频波形看起来像这样(2秒)。您可以清楚地看到中间突然波形移动,因此它不会连接到前一秒的数据

enter image description here

总之,我如何正确地读取缓冲区,所以当我将它与先前的缓冲区连接起来时,它会按照接收时间的顺序产生一个连续的波形?

1 个答案:

答案 0 :(得分:0)

double[] bufferSet = new double[blockSize*2]
//First second
j=1;
...
bufferSet[j*blockSize+i] = buffer[i];
...
//Second Second
j=2;

第1秒你不想j=0,第2秒你想j=1吗?

相关问题