2015-04-09 5 views
6

Ich streame Audio über RTC und möchte das Audio stummschalten und die Stummschaltung aufheben.Firefox createMediaStreamDestination Fehler mit rtc?

Dies funktioniert ... aber keine Verstärkungsregelung:

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

Dieses auf Chrom funktioniert aber nicht auf Firefox (mit Gain-Regler)

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); 
} 

ich keinen Fehler bekommen und ich höre keine Stimme . Wenn ich den gainNode an context.destination sende, kann ich mich hören.

Ich denke, "context.createMediaStreamSource (Stream)" ist in keiner Weise gebrochen. Kann mir jemand sagen warum? und wie man das beheben kann.


EDIT: So überprüfte ich die Bäche und:

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

in Firefox! In Chrom sind beide MediaStreams

+0

Rücksendung FF, wenn Sie 'navigator.mediaDevices.getUserMedia' anstelle von' navigator.getUserMedia'? – K3N

+1

die gleichen Datentypen und das gleiche Ergebnis: keine Stimme. Aber einen Versuch wert :) – Cracker0dks

+0

Ja, wahrscheinlich haben sie nur das zur Verfügung gestellt und verdrahtet den gleichen Code wie mit der alten Art und Weise. – K3N

Antwort

3

Ok danke @Ken Fyrstenberg Ich habe gerade den Firefox Nighly Build probiert. Auf dem Nighly funktioniert alles gut (wie in Chrome). Die Datentypen sind:

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

wie zuvor, aber ich kann den Gegner hören und in der Lage sein, das Mikrofon stumm zu schalten.

Also ich muss nur für die Freigabe warten: P

3

das Audio stumm zu schalten Sie aktivieren/deaktivieren Sie die Strecke selbst, indem Sie:

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

Das wird das Problem mit dem Verstärkungsknoten nicht lösen, die die meisten wahrscheinlich ein Fehler/Einschränkung in Firefox im Moment (in diesem Fall können wir nur auf eine Korrektur warten). Aber wenn der Zweck (un) stumm ist sollte dies funktionieren (es funktioniert auch mit Videospuren).

+0

Leider funktioniert das inst, weil der Typ des Streams: LocalMediaStream und nicht MediaStream wie in Chrome ist. Es hat also nicht die Funktion getAudioTracks(). In Chrom funktioniert das perfekt! – Cracker0dks

+1

aber schlauer Weg zum Stummschalten :) – Cracker0dks

+1

@ Cracker0dks macht es einfach :) Nächtliche wird wahrscheinlich ein paar Monate dauern, aber zumindest ist es in Arbeit – K3N