1

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

我像这样读取缓冲区:

 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];
}

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

缓冲区是否有特定的填充顺序?它是从 0 (最早的时刻到最后一个单位(最晚的时间))还是相反?

所以音频波形看起来像这样(2秒)。您可以在中间清楚地看到波形突然发生变化,因此它没有连接到前一秒的数据

在此处输入图像描述

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

4

1 回答 1

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

你不想要j=0第一秒,第二秒j=1吗?

于 2013-08-02T08:39:32.173 回答