1

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 要素を一時停止すると、コンソールにはアナライザーからのデータが表示され続けます (データは変化しています)。サウンドが一時停止しているときにデータを送信し続けるのはなぜですか?

4

1 に答える 1

1

これはおそらくsmoothingTimeConstantあなたの が原因だと思います。AnalyserNodeデフォルトは0.8です。

私の推測では、時間の経過とともにこの平均化が行われるため、<audio>要素を一時停止すると、値は に向かって徐々に減衰し-Infinityます。

とにかく、それは単なる推測ですが、私は約95%確信していると思います. analyser.smoothingTimeConstant = 0動作が持続するかどうかを設定して確認することで、非常に簡単に確認できます。

ああ、ここに仕様の関連部分へのリンクがあります。

于 2013-11-09T06:48:57.473 に答える