2012-07-02 38 views
9

是否有可能通過<audio/> -element通過createMediaElementSource加載音頻文件,然後將音頻數據加載到AudioBufferSourceNode通過createMediaElementSource將音頻數據從<audio/>元素加載到AudioBufferSourceNode中?

使用音頻元素源(MediaElementSource)似乎不是一種選擇,因爲我想用緩衝方法,如noteOnnoteGrain

經由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

是的,但我很想知道是否有可能從MediaElementSource獲取**緩衝區**以將其用作/在bufferSourceNode(它有noteOn,noteOff,noteGrain等)。 –

+0

不錯的例子,但:) –

+0

爲什麼讓+100去浪費......所以你去:) –

0

我不知道,如果你找到一個更好的解決方案還沒有,我還檢查您發佈的W3C鏈接: http://www.w3.org/2011/audio/wiki/Spec_Differences#Reading_Data_from_a_Media_Element

但是爲了它真正的工作,你必須使用AudioContext.createScriptProcessor()。我還沒有嘗試過,但基本上你將源節點(一個音頻元素)連接到腳本處理器,但如果你不需要的話,甚至不會輸出音頻。在onaudioprocess回調中,您可以直接訪問音頻緩衝區數據(當然是指定大小的塊)。上面的鏈接中有一些示例。

此外,我認爲你可以以某種方式調整回放的速度,以便更快地獲得更多的緩衝區陣列。

相關問題