Эй, я использую 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
Вам нужно JavaScriptNode. Посмотрите на это: http://jsbin.com/avasav/7/edit –