簡體   English   中英

音頻元素暫停時,AnalyserNode繼續發送數據

[英]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元素時,控制台會不斷向我顯示分析儀的數據(並且數據正在更改)。 為什么在聲音暫停時仍繼續發送數據?

我認為這可能是由於AnalyserNodesmoothingTimeConstant (默認為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM