2013-08-01 80 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,第二個?