我正在使用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元素时,控制台会不断向我显示分析仪的数据(数据正在变化)。为何在声音暂停时继续发送数据?
答案 0 :(得分:1)
我认为这可能是因为smoothingTimeConstant
的{{1}},默认为AnalyserNode
。
我的猜测是,由于这种平均值随着时间的推移,当您暂停0.8
元素时,值会逐渐向<audio>
衰减。
无论如何,这只是一个猜测,但我会说我有95%肯定。您可以轻松验证它是否设置-Infinity
并查看行为是否仍然存在。
哦,这里是指向相关部分的链接:https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html#dfn-smoothingTimeConstant