2013-12-11 55 views
5

我已經從navigator.getUserMedia來源一個媒體流,其被連接到一個GainNode,其又連接到ScriptProcessorNode,像這樣:合併/混合兩個音頻流與WebAudio

[getUserMediaStream] -> [MediaStreamSource] -> [GainNode] -> ScriptProcessorNode -> (destination) 

在我的申請,正在執行主要工作的是ScriptProcessorNode,它是通過WebSocket處理和傳輸原始音頻流到遠程服務器(我的應用程序基本上是一個基於Web的錄音機)以進行保存。這工作正常。

但是,現在我正試圖引入第二個MediaStreamSource,這次來自WebRTC PeerConnection。對等連接本身工作正常,如果將音頻路由到一個元素,我可以聽到來自對等點的音頻。但是,我希望將此第二個MediaStreamSource也傳送到ScriptProcessorNode中,從而有效地錄製兩個音頻流。

我正在做的是在兩個音頻流到達ScriptProcessorNode之前混合在一起。我嘗試將第二個MediaStreamSource連接到相同的GainNode(也直接連接到ScriptProcessorNode),但這不起作用,因爲這兩個節點都不能接受多個輸入節點(即使它在嘗試連接多餘節點時從未返回任何錯誤)。我想實現這樣的事情:

事情是這樣的:

[MediaStreamSource] -> [Intermediary Node(s)?] -> [GainNode] -> [ScriptProcessorNode] -> [Server] 
        /
[MediaStreamSource]/

我再擡頭到WebAudio規範,發現實際上確實需要多個輸入的唯一節點是ChannelMergerNode。但是,規範規定,根據流連接到節點的順序,將流合併爲通道,以便連接到輸入的第一個流將成爲輸出的左側通道,第二個流將成爲正確的通道。由此我認爲,結果最終會成爲我左耳上的一股流,而另一股流在我的右邊。我只是希望將兩個數據流合併並混合成一個單聲道。

目前的WebAudio API有可能嗎?

非常感謝您的幫助!

Eirik

+0

我在完全相同的需要。你是如何解決這個問題的? – IvRRimUm

回答