2
下面是一個簡單的jsfiddle其測量使用網絡的音頻(其輸出值,以百分比給控制檯)活輸入的響度的鏈接。WebAudio scriptProcessorNodes *要求*要連接的輸出嗎?
我打算有一個輸入,沒有輸出,因爲沒有必要耽誤我的音頻信號,等待我的自定義節點完成工作了音量。
然而,它很明顯的是,腳本處理器只有記錄值,如果它連接到context.destination
。難道我做錯了什麼?或者這是一個錯誤?或者這是預期的行爲?
function gotStream(stream) {
var mediaStreamSource = context.createMediaStreamSource(stream);
var gainNode = context.createGain();
gainNode.gain.value = 3;
var levelChecker = context.createScriptProcessor(2048);
mediaStreamSource.connect(gainNode);
gainNode.connect(levelChecker);
//Commenting out the line directly below stops the script processor from working!
levelChecker.connect(context.destination);
levelChecker.onaudioprocess = process;
}
function process(e) {
var buffer = e.inputBuffer.getChannelData(0);
var maxVal = 0;
for (var i = 0; i < buffer.length; i++) {
if (maxVal < buffer[i]) {
maxVal = buffer[i];
}
}
console.log(Math.round(maxVal * 100) + "%");
}
參考:https://crbug.com/327649 – pwnall
或者將其添加到AnalyserNode,其可以消耗輸入而不被連接到輸出! – markmarijnissen
是的,雖然AnalyserNode會做工作。零增益GainNode不會。 – cwilso