[英]AnalyserNode keeps sending data when Audio element is paused
我在玩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元素時,控制台會不斷向我顯示分析儀的數據(並且數據正在更改)。 為什么在聲音暫停時仍繼續發送數據?
我認為這可能是由於AnalyserNode
的smoothingTimeConstant
(默認為0.8
AnalyserNode
。
我的猜測是,由於隨着時間的推移平均時間,當您暫停<audio>
元素時,這些值將逐漸向-Infinity
衰減。
無論如何,這只是一個猜測,但我要說我有95%的把握。 您可以很容易地通過設置analyser.smoothingTimeConstant = 0
並查看行為是否仍然存在來驗證它。
哦,這是該規范相關部分的鏈接: https : //dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html#dfn-smoothingTimeConstant
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.