J'utilise le HTML5 webkitAudioContext pour obtenir les niveaux en temps réel du microphone d'un utilisateur en utilisant ce code suivant:HTML5 audio se coince
var liveSource;
function getLevel(){
var context = new webkitAudioContext();
navigator.webkitGetUserMedia({audio: true}, function(stream) {
liveSource = context.createMediaStreamSource(stream);
liveSource.connect(context.destination);
var levelChecker = context.createJavaScriptNode(4096, 1 ,1);
liveSource.connect(levelChecker);
levelChecker.connect(context.destination);
levelChecker.onaudioprocess = function(e) {
var buffer = e.inputBuffer.getChannelData(0);
var maxVal = 0;
// Iterate through buffer to check if any of the |values| exceeds 1.
for (var i = 0; i < buffer.length; i++) {
if (maxVal < buffer[i]) {
maxVal = buffer[i];
}
}
if(maxVal <= 0.01){
console.log(0.0);
} else if(maxVal > 1){
console.log(1);
} else if(maxVal > 0.2){
console.log(0.2);
} else if(maxVal > 0.1){
console.log(0.1);
} else if(maxVal > 0.05){
console.log(0.05);
} else if(maxVal > 0.025){
console.log(0.025);
} else if(maxVal > 0.01){
console.log(0.01);
}
};
});
}
getLevel();
Si vous copiez et collez ceci dans votre console et cliquez sur vos doigts près de votre microphone (en supposant que vous avez activé l'entrée microphone), vous verrez que cela fonctionne pendant quelques secondes, puis s'arrête soudainement. Il ne signale aucune erreur. Quelqu'un peut-il expliquer pourquoi cela se passe? Merci
Voir http://labs.dinahmoe.com/dynamicmusicengine/ pour un exemple où les niveaux fonctionnent correctement.
Ce bug ... Je déteste ce bug. https://code.google.com/p/chromium/issues/detail?id=82795 – Brad