我使用的是HTML5 webkitAudioContext使用這個下面的代碼獲取一個用戶的麥克風的實時等級:HTML5音頻緩衝區陷入
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();
如果您複製並粘貼到您的控制檯,然後單擊你的手指靠近你的麥克風(假設你已經啓用麥克風輸入),你會看到它工作幾秒鐘,然後突然停止。它不報告任何錯誤。有人可以解釋爲什麼會發生這種情況嗎?謝謝
查看http://labs.dinahmoe.com/dynamicmusicengine/爲一個例子,其中的水平正常工作。
這個bug ...我討厭這個bug。 https://code.google.com/p/chromium/issues/detail?id=82795 – Brad 2014-01-19 17:45:03