2015-04-09 2 views
6

Я передаю аудио через rtc и хочу отключить звук и включить звук.Firefox createMediaStreamDestination ошибка с использованием rtc?

Это не работает ... но нет регулировки усиления:

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

Это работает на хроме, но не на Firefox (с регулировкой усиления)

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

я не получаю сообщение об ошибке, и я не слышу голос , Когда я посылаю gainNode в context.destination, я слышу сам.

Я думаю, что «context.createMediaStreamSource (stream)» нарушен любым способом. Может ли кто-нибудь сказать мне, почему? и как это исправить.


EDIT: Так что я проверил потоки и:

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

в Firefox! В хроме оба MediaStreams

+0

Что FF вернуться, если вы используете 'navigator.mediaDevices.getUserMedia' вместо' navigator.getUserMedia'? – K3N

+1

те же типы данных и тот же результат: нет голоса. Но стоит попробовать :) – Cracker0dks

+0

Да, они, вероятно, просто сделали это доступным и подключили тот же код, что и к старому. – K3N

ответ

3

Ok благодаря @Ken Fyrstenberg Я просто попробовал сборку Firefox Nighly. На Nighly everythink работает отлично (как в Chrome). Типы данных:

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

как и прежде, но я слышу противника и могу отключить микрофон.

Так что я только ждать выхода: P

3

Чтобы отключить звук можно включить/отключить саму дорожку, выполнив:

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

Это не решит проблему с узлом усиления, который, скорее всего, ошибка/ограничение в Firefox на данный момент (в этом случае мы можем только ждать исправления). Но если цель состоит в том, чтобы (un) отключить звук, это должно работать (оно также работает с видеодорожками).

+0

К сожалению, этот inst работает, потому что тип потока: LocalMediaStream, а не MediaStream, как в хром. Так что у него нет функции getAudioTracks(). В хром это отлично работает! – Cracker0dks

+1

, но умный способ заглушить :) – Cracker0dks

+1

@ Cracker0dks это делает его простым :) Ночью, вероятно, потребуется несколько месяцев, но, по крайней мере, это в работе – K3N