当Audio元素暂停时,AnalyserNode会继续发送数据

时间:2013-11-09 01:23:56

标签: javascript audio html5-audio web-audio

我正在使用Web Audio API,有一些我无法理解的行为。

var audio = document.querySelector('audio');
var context = new AudioContext();
var source = context.createMediaElementSource(audio);
var analyser = context.createAnalyser();
source.connect(analyser);
source.connect(context.destination);

setInterval(function() {
    var freqDomain = new Float32Array(analyser.frequencyBinCount);
    analyser.getFloatFrequencyData(freqDomain);
    console.log(freqDomain);
},1000);

当我暂停Audio元素时,控制台会不断向我显示分析仪的数据(数据正在变化)。为何在声音暂停时继续发送数据?

1 个答案:

答案 0 :(得分:1)

我认为这可能是因为smoothingTimeConstant的{​​{1}},默认为AnalyserNode

我的猜测是,由于这种平均值随着时间的推移,当您暂停0.8元素时,值会逐渐向<audio>衰减。

无论如何,这只是一个猜测,但我会说我有95%肯定。您可以轻松验证它是否设置-Infinity并查看行为是否仍然存在。

哦,这里是指向相关部分的链接:https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html#dfn-smoothingTimeConstant