无法重用音频元素

时间:2016-07-24 21:23:15

标签: javascript html web-audio

我尝试重新使用音频元素但是我在Chrome中遇到以下错误:

  

(index):52 Uncaught InvalidStateError:无法执行   ' createMediaElementSource' on' AudioContext':HTMLMediaElement已经   先前连接到不同的MediaElementSourceNode。

window.audioContext = new(window.AudioContext || window.webkitAudioContext)();

var sourceNode
var scripNode

function create() {
  scriptNode = window.audioContext.createScriptProcessor(4096);
  sourceNode = window.audioContext.createMediaElementSource(document.getElementById('audio'));

  sourceNode.connect(scriptNode);
  scriptNode.connect(window.audioContext.destination);
}

function destroy() {
  sourceNode.disconnect();
  scriptNode.disconnect();
}

create();

setTimeout(function() {
  destroy();
  create();
}, 200);

使用网络音频清理的正确方法是什么,以便可以重复使用媒体元素?

2 个答案:

答案 0 :(得分:0)

我认为这是Chrome中长期存在的问题。我认为有很多方法,但你没有表明你真正想做的事情,所以很难说出适当的解决方法是什么。

答案 1 :(得分:0)

您没有破坏节点sourceNode,只是将它们断开连接。为什么不重新连接音频节点,因为你使用的是同一个音频节点,另一个音频图或者你正在尝试做什么?

否则,您可以删除HTML音频元素,重新创建它,然后以这种方式重新连接。