2016-07-24 3 views
1

를 다시 사용할 수 있습니까 얻을 크롬에서 다음과 같은 오류 : 그래서 웹 오디오를 사용하여 청소하는 적절한 방법은 무엇내가 그러나 오디오 요소를 재사용하기 위해 노력하고있어 오디오 요소

(index):52 Uncaught InvalidStateError: Failed to execute 'createMediaElementSource' on 'AudioContext': HTMLMediaElement already connected previously to a different 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); 

미디어 요소를 다시 사용할 수 있습니까?

답변

0

저는 이것이 Chrome에서 오래 전부터 제기 된 문제라고 생각합니다. 이 문제를 해결할 방법이 있다고 생각하지만 실제로하고 싶은 것을 보여주지 않으므로 적절한 해결 방법이 무엇인지 말하기는 어렵습니다.

+0

크롬이 문제를 해결해야합니다. –

+0

내가하고 싶은 것은이 예에서 내가하는 일이다. :) – ronag

+0

어쩌면 그것을 고치려는 사람을 설득하고 싶다면, 장난감 데모로 당신이 정말로 원하는 응용 프로그램과 잘 어울리지 않을 것입니다. 실제 응용 프로그램에서 미디어 요소를 재사용해야하는 이유를 설명하십시오. –

0

노드 소스를 파괴하지 않습니다. 노드를 연결 해제하는 중입니다. 같은 오디오 노드를 사용하고 있기 때문에 오디오 노드를 다른 오디오 그래프에 연결하거나 지금하려는 작업을 다시 연결하지 않는 이유는 무엇입니까?

그렇지 않으면 HTML 오디오 요소를 삭제하고 다시 만들고 다시 연결할 수 있습니다.

+0

어떻게 노드를 "파괴"합니까? – ronag

+0

간단히 말해서, 당신은 할 수 없습니다. JavaScript는 더 이상 참조가 없다면 파기해야합니다. 그러나 실제 HTML 요소는 여전히 자바 스크립트 노드에 대한 참조를 보유 할 것이므로 그렇게 파괴되지는 않을 것입니다. –

관련 문제