2013-12-11 14 views
5

Ho un MediaStreamSource provenienti da navigator.getUserMedia, che è collegato a un GainNode, che a sua volta è collegato ad uno ScriptProcessorNode, in questo modo:Fusione/miscelazione di due flussi audio con WebAudio

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

Nella mia applicazione , è lo ScriptProcessorNode che sta svolgendo il lavoro principale, che è quello di elaborare e trasferire il flusso audio grezzo su un WebSocket a un server remoto (la mia applicazione è fondamentalmente un registratore audio basato sul web) da salvare. Funziona bene

Tuttavia, ora sto cercando di introdurre una seconda MediaStreamSource, questa volta proveniente da una WebRTC PeerConnection. La connessione peer in sé funziona bene, e se instrado l'audio in un elemento, posso sentire l'audio proveniente dal mio peer. Tuttavia, voglio che anche questa seconda MediaStreamSource venga reindirizzata nello ScriptProcessorNode, registrando efficacemente entrambi i flussi audio.

Quello che sto cercando di fare è mescolare i due flussi audio insieme prima che raggiungano ScriptProcessorNode. Ho provato a connettere il secondo MediaStreamSource allo stesso GainNode (e anche allo ScriptProcessorNode direttamente), ma questo non ha funzionato in quanto nessuno di questi nodi accetta più di un nodo di input (anche se non ha mai restituito errori nel tentativo di connettere il nodo superfluo). Io sto cercando di realizzare qualcosa di simile:

Qualcosa di simile a questo:

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

Ho poi guardato nella specifica WebAudio e ha scoperto che l'unico nodo che fa effettivamente prendere più ingressi è il ChannelMergerNode. Tuttavia, la specifica afferma che gli stream sono uniti in canali in base all'ordine in cui sono connessi al nodo, in modo che il primo stream connesso sull'ingresso diventerà il canale sinistro dell'output e il secondo stream diventerà il canale corretto. Da ciò prendo atto che il risultato finirebbe per essere un flusso sul mio orecchio sinistro e l'altro alla mia destra. Voglio solo che entrambi i flussi vengano uniti e mescolati equamente in un singolo canale mono.

Ciò è possibile con l'API WebAudio corrente?

Grazie mille per l'aiuto!

Eirik

+0

Io sono nella stessa esigenza esatto. Come hai risolto questo? – IvRRimUm

risposta