我的Chrome扩展程序有问题。该扩展使用以下代码创建一个audioContext,该音频上下文连接到背景页面上的<audio>标记。在音频端onClick()上,调用kill函数。

播放时,在Windows系统上执行[DRIVER] High Definition Audio Device (HDAUDIO\FUNC_01&VEN_111D&DEV_76D5&SUBSYS_1028040A&REV_1001\4&143c5ca7&0&0001)An audio stream is currently in use.时,我看到(预期)powercfg -requests。但是,当调用kill函数时,我仍然看到正在使用同一驱动程序的消息,并且计算机将不会挂起/休眠/休眠。

检查背景页面时,列出的变量(与音频有关的所有变量)都是未定义的。到目前为止,我发现的唯一解决方法是重新加载背景页面-一个超级黑客,我鄙视它所代表的一切。

任何有类似经验或了解chrome webaudio API内部恶魔的人吗?

注意事项:
在演示代码的上下文中,变量是全局变量。在实时代码中,这些是本地范围。

干杯,
菲尔

function kill_audio_context(){
    capAudio.remove();
    capAudio = undefined;
    try{
        analyser.disconnect();
        source.disconnect();
        audioContext = undefined;
        source=undefined;
        analyser=undefined;
    }catch(e){console.log(e)}
    // No errors, except expected when no audio element exists (first load)

    // KILL IT WITH FIRE!!
    //chrome.runtime.reload();
}
function load_audio_context(){
    audioContext = new AudioContext();
    analyser = audioContext.createAnalyser();
    analyser.fftSize = 2048;
    source = audioContext.createMediaElementSource(capAudio);
    source.connect(analyser);
    analyser.connect(audioContext.destination);
}

最佳答案

要释放audioContext.close()时,请调用AudioContext

08-06 03:10
查看更多