2013-08-01 42 views
1

Im试图通过手动建立麦克风音轨并查看其波形。Android audioRecord.read缓冲区连接在一起以产生波形

我读缓冲区这样的:

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

在所有前面的第二我怎么读缓冲区正确,所以当我与以前的缓冲区串连它,它使得在时间顺序连续波形它被带入?

回答

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

难道你不想第一个j=0,第二个?