2014-10-21 11 views
15

In giorni di googletalkplugin pre-WebRTC, è possibile disabilitare AGC (controllo automatico del guadagno per il microfono) aggiungendo audio-flags: 1 al file di configurazione . Tuttavia, dato che Google Hangouts ora usa WebRTC, accade spesso che mentre sto chattando con qualcuno, il mio livello del microfono scatta fino in fondo in modo da essere più o meno silenzioso dall'altra parte. Ho anche avuto corrispondenti il ​​cui volume del microfono è stato potenziato fino in fondo, ripetutamente.Come disattivare il controllo automatico del guadagno (AGC) in web-app WebRTC come Hangouts di Google o OpenTokRTC

Ho riprodotto questo comportamento su http://opentokrtc.com/ che utilizza anche WebRTC. Creando suoni rumorosi nel mio microfono, riesco a far scendere il livello in pochi passaggi. Posso farlo sia su Chrome 38 e FireFox 34 beta.

Tuttavia, quando utilizzo un'applicazione locale, ad esempio Audacity, sulla mia macchina Ubuntu 14.04.1, sono non in grado di influire sul livello del microfono emettendo rumori forti. In altre parole, sembra proprio che WebRTC sia il colpevole qui.

Sembra che nell'implementazione di Chrome, uno possa configurare WebRTC AGC passando lo googAutoGainControl alla chiamata getUserMedia(). Su FireFox non sono stato in grado di trovare l'equivalente.

La mia domanda è: come WebRTC utente finale, come posso configurare il mio browser (Chrome o FireFox) per disabilitare AGC, come AGC non funziona correttamente sul mio setup?

+0

Speriamo [@jesup] (http://stackoverflow.com/users/105687/jesup) vede questa domanda e può rispondere per FireFox :) –

+0

Avete fatto qualche progresso qui? Ho smesso di usare Chrome come risultato di questo. –

+0

Temo di no, sono ancora bloccato con lo stesso problema.:( –

risposta

5

googAutoGainControl come MediaTrackConstraints è specifico di Chrome (WebKit).

Carta Gruppo di lavoro Il WebRTC ancora scrivendo lo standard e si concluderà il prossimo 30 giugno 2015

Firefox non supporta al momento.

Nota: l'uso di AGC non è consigliabile per specificare un vincolo specifico del browser come obbligatorio, poiché la chiamata non funzionerà in un browser che non supporta il vincolo. Invece, specifica i tuoi vincoli come facoltativi. Il tuo browser farà del suo meglio per soddisfare quanti più vincoli opzionali possibile.

BTW si può giocare con l'interfaccia GainNode in Firefox: https://developer.mozilla.org/en-US/docs/Web/API/GainNode

Esempio per disabilitare il googAutoGainControl:

var webrtc = new SimpleWebRTC({ 
    localVideoEl: 'localVideo', 
    remoteVideosEl: '', 
    autoRequestMedia: true, 
    //detectSpeakingEvents: true, 
    adjustPeerVolume: false, 
    peerVolumeWhenSpeaking: 1, 
    media: { 
     audio: { 
     optional: [ 
      //{sourceId: audio_source}, 
      {googAutoGainControl: false}, 
      {googAutoGainControl2: false}, 
      {googEchoCancellation: false}, 
      {googEchoCancellation2: false}, 
      {googNoiseSuppression: false}, 
      {googNoiseSuppression2: false}, 
      {googHighpassFilter: false}, 
      {googTypingNoiseDetection: false}, 
      {googAudioMirroring: false} 
     ] 
    }, 
    video: { 
     optional: [ 
      //{sourceId: video_source} 
     ] 
     } 
    } 
    //autoAdjustMic: false   
    }); 

L'utente finale non può disabilitare nel browser questa funzionalità al momento. L'utente avanzato può modificare le preferenze in about: config in Firefox ma in Chrome non esiste.