如何在 WebAudioApi 中配置 MediaElementAudioSourceNode?

How do I dispose a MediaElementAudioSourceNode in WebAudioApi?

我正在使用 MediaElementAudioSourceNode 播放音频文件 (),它按预期工作,但我对如何在断开连接后处理节点有疑问。

目前我有这个代码:

//Do we have already an MediaElementSourceNode ?
if (this._sourceNode) {
    console.warn("THERE IS AUDIO PLAYING!");
    //this._audioContainer.addTextTrack
    // disconnect and remove all references.
    this._audioContainer.pause();
    this._audioContainer = undefined;
    this._sourceNode.disconnect();
    this._sourceNode = undefined;
    console.warn("The _audioContainer was paused and the _sourceNode disconnected");
}

this._audioContainer = new Audio(filePath);

this._audioContainer.oncanplaythrough = () => {
    clearTimeout(securityTimeout);
    console.log(this._audioContainer.readyState);
    console.dir(this._audioContainer);
    this.audioPlayerActive = true;
    // MediaElementSource are ONE TIME ONLY use kind of Node
    this._sourceNode = this._AudioContext.createMediaElementSource(this._audioContainer);
    this._sourceNode.connect(this._EqNode);
    this._audioContainer.play();
    console.log("playAudioFile() END");
};

this._audioContainer.onended = () => {
    console.log("__audioContainer.onended()");
    this._audioContainer = undefined;
    this._sourceNode.disconnect();
    this._sourceNode = undefined;
};

使用 Web Audio inspector on firefox 我可以看到,每次我 运行 这段代码(点击按钮时)都会创建一个新的 MediaElementAudioSourceNode 断开之前创建的代码(如果检测到)。此外,当音频结束时,它会断开连接。但是几分钟后节点仍然存在:

我想防止内存泄漏。我该如何处置它们? 编辑: 没有可用的功能(我认为)

目前没有办法做到这一点:https://github.com/WebAudio/web-audio-api/issues/1202