2015-04-09 13 views
6

I stream audio su rtc e voglio silenziare e riattivare l'audio.Firefox createMediaStreamDestination bug usando rtc?

Questo funziona ... ma non il controllo del guadagno:

function(stream) { /* getUserMedia stream */ 
     console.log("Access granted to audio/video"); 
     peer_connection.addStream(stream); 
} 

Questo funziona su Chrome, ma non su Firefox (con controllo di guadagno)

function(stream) { /* getUserMedia stream */ 
    console.log("Access granted to audio/video"); 
    var microphone = context.createMediaStreamSource(stream); 
    gainNode = context.createGain(); 
    var dest = context.createMediaStreamDestination(); 
    microphone.connect(gainNode); 
    gainNode.connect(dest); 

    local_media_stream = dest.stream; 
    peer_connection.addStream(local_media_stream); 
} 

ricevo alcun errore e ho sentito nessuna voce . Quando invio il gainNode a context.destination posso sentirmi.

Penso che "context.createMediaStreamSource (stream)" non funzioni in alcun modo. Qualcuno può dirmi perché? e come risolvere questo problema.


EDIT: così ho controllato i flussi e:

stream //type: LocalMediaStream  
dest.steam //type: MediaStream 

in Firefox! In Chrome entrambi sono MediaStreams

+0

Cosa FF di ritorno, se si utilizza 'navigator.mediaDevices.getUserMedia' invece di' navigator.getUserMedia'? – K3N

+1

gli stessi tipi di dati e lo stesso risultato: nessuna voce. Ma vale la pena provare :) – Cracker0dks

+0

Sì, probabilmente lo hanno reso disponibile e hanno cablato lo stesso codice con il vecchio metodo. – K3N

risposta

3

Ok grazie a @Ken Fyrstenberg ho appena provato la versione per Firefox di Firefox. Sul Nighly everythink funziona bene (come in Chrome). I tipi di dati sono:

stream //type: LocalMediaStream  
dest.steam //type: MediaStream 

come prima, ma posso sentire l'avversario ed essere in grado di silenziare il microfono.

Quindi devo solo aspettare per il rilascio: P

3

Per disattivare l'audio è possibile attivare/disattivare la pista stessa facendo:

stream.getAudioTracks()[0].enabled = false; // mutes 

Questo non risolverà il problema con il nodo di guadagno, che è più probabile un bug/limitazione in Firefox al momento (nel qual caso possiamo solo aspettare una correzione). Ma se lo scopo è (un) muto, questo dovrebbe funzionare (funziona anche con le tracce video).

+0

Purtroppo questo inst funziona perché il tipo di flusso è: LocalMediaStream e non MediaStream come in chrome. Quindi non ha la funzione getAudioTracks(). In chrome funziona perfettamente! – Cracker0dks

+1

ma modo intelligente per disattivare :) – Cracker0dks

+1

@ Cracker0dks lo rende semplice :) Ogni notte ci vorranno probabilmente alcuni mesi ma almeno è nelle opere – K3N

Problemi correlati