有没有办法知道在DOM中打开了多少音频上下文?

时间:2018-03-14 13:47:12

标签: javascript web-audio web-audio-api

我使用的是Web Audio API,出于不同的原因,我必须创建多个音频上下文。这不是Firefox或Edge的问题,但Chrome不允许超过6个上下文。由于当代上下文的数量为3(其他内容使用close()关闭)可能仍会计算Chrome中的某些引用。 有没有办法知道有多少音频上下文与DOM元素相关联?

3 个答案:

答案 0 :(得分:0)

创建包装函数 -

function createAudioContext () {
    if ( createAudioContext.count++ >= 6 ) throw new Error('uh oh')
    return new AudioContext();
}
createAudioContext.count = 0;

并使用它代替new AudioContext()

答案 1 :(得分:0)

更新到更新版本的Chrome。该限制已被删除。

答案 2 :(得分:0)

我似乎注意到2020年Chrome的限制,因此我可能会考虑以下内容。

类属性

audioContextCount = 6;
audioContexts = new Array<AudioContext>();

在初始化时创建上下文

for (let i = 0; i < this.audioContextCount; i++) {
  let context = new AudioContext();
  this.audioContexts.push(context);
}

使用前的旋转背景

let context = this.audioContexts.shift();
this.audioContexts.push(context);

一种改进可能是先检查支持的上下文的数量,然后以它为基础,但是上面概述了这个想法。

Sound Box Demo

相关问题