2012-07-02 1 views
9

오디오 파일을 createMediaElementSource을 통해 <audio/>에서로드 한 다음 오디오 데이터를 AudioBufferSourceNode에로드 할 수 있습니까?audioBufferSourceNode에 audiodata를 <audio/> 요소에서 createMediaElementSource를 통해로드 하시겠습니까?

noteOnnoteGrain과 같은 버퍼 메서드를 사용하려는 경우 오디오 요소를 소스 (MediaElementSource)로 사용하는 것은 옵션이 아닙니다. 불행히도 XHR 통해 버퍼에 직접 audiofile로드

는 옵션도 오디오 소자로부터 상기 버퍼 내용을로드

(Open stream_url of a Soundcloud Track via Client-Side XHR? 참조) 아니지만 가능한 것으로 보인다

http://www.w3.org/2011/audio/wiki/Spec_Differences#Reading_Data_from_a_Media_Element

<audio/> -element의 버퍼를 sourceNode로 직접 사용할 수도 있습니까?

답변

5

가능합니다. 내 게시물 http://updates.html5rocks.com/2012/02/HTML5-audio-and-the-Web-Audio-API-are-BFFs을 참조하십시오. 코드 스 니펫과 예제도 있습니다. 몇 가지 뛰어난 버그가 있지만 <audio>을 Web Audio API에로드하면 원하는대로 작동합니다.

+3

그래,하지만 note/note (noteOn, noteOff, noteGrain 등)가있는/bufferSourceNode에서 MediaElementSource에서 ** 버퍼 **를 사용할 수 있는지 알고 싶습니다. –

+0

좋은 예를 들자. :) –

+0

왜 +100을 낭비로 보내겠습니까? –

0

나는 아직 더 나은 솔루션을 발견하고 나는 또한 당신이 게시 W3C 링크를 확인하면 확실하지 않다 : http://www.w3.org/2011/audio/wiki/Spec_Differences#Reading_Data_from_a_Media_Element

하지만 정말 AudioContext.createScriptProcessor()를 사용할 필요가 작동하려면에서 . 나는 아직 시도하지 않았지만 근본적으로 원본 노드 (오디오 요소)를 스크립트 프로세서에 연결하지만, 필요하지 않으면 오디오를 출력하지도 않습니다. onaudioprocess 콜백에서 오디오 버퍼 데이터에 직접 액세스 할 수 있습니다 (물론 지정된 크기의 청크). 위의 링크에는 예제가 있습니다.

또한 재생 속도를 조정하여 버퍼 배열을 더 빠르게 얻을 수 있다고 생각합니다.