嘿,我正在使用GetUserMedia()從用戶的麥克風捕獲音頻輸入。同時我想把捕獲的值放入一個數組中,這樣我就可以操縱它們。我正在使用下面的代碼,但問題是我的數組始終被賦值爲128(我現在在控制檯中打印結果),並且我找不到我的錯誤。有人能幫我找到我的錯誤嗎?把現場音頻輸入數據放入陣列
//create a new context for audio input
context = new webkitAudioContext();
var analyser = null;
var dataarray = [];
getLiveInput = function() {
navigator.webkitGetUserMedia({audio: true},onStream,onStreamError);
};
function onStream(stream)
{
var input = context.createMediaStreamSource(stream);
analyser = context.createAnalyser();
var str = new Uint8Array(analyser.frequencyBinCount);
analyser.getByteTimeDomainData(str);
for (var i = 0; i < str.length; i++) {
var value = str[i];
dataarray.push(value);
console.log(dataarray)
}//end for loop
}//end function
function onStreamError(e) {
console.error('Streaming failed: ', e);
};
嘿感謝您的答覆。是的,我忘了將輸入連接到分析器:(。問題是當我使用你的代碼時,有一段時間數組停止填充,我怎樣才能讓它始終收集我的值? – user2039789 2013-04-04 07:33:47
你需要一個JavaScriptNode。看看這個:http://jsbin.com/avasav/7/edit – 2013-04-04 12:39:51