para moviles mediadevices google javascript google-chrome firefox webrtc getusermedia

javascript - moviles - ¿Cómo puedo deshabilitar el control automático de ganancia(AGC) en las aplicaciones web de WebRTC, como Google Hangouts u OpenTokRTC?



mediastream javascript (2)

En los días previos a la aplicación WebRTC de los enchufes de conexión, uno podría deshabilitar AGC (control automático de ganancia para el micrófono) agregando marcas de audio-flags: 1 al archivo de configuración. Sin embargo, dado que Google Hangouts ahora usa WebRTC, a menudo sucede que mientras converso con alguien, mi nivel de micrófono se dispara por completo, de modo que estoy más o menos silencioso en el otro lado. También he tenido corresponsales cuyo volumen de micrófono se ha aumentado completamente, repetidamente.

He reproducido este comportamiento en http://opentokrtc.com/ que también utiliza WebRTC. Al hacer sonidos fuertes en mi micrófono, puedo lograr que el nivel baje completamente en unos pocos pasos. Puedo hacer esto tanto en Chrome 38 como en FireFox 34 beta.

Sin embargo, cuando uso una aplicación local, como Audacity, en mi máquina Ubuntu 14.04.1, no puedo afectar el nivel del micrófono haciendo ruidos fuertes. En otras palabras, realmente parece que WebRTC es el culpable aquí.

Parece que en la implementación de Chrome, uno puede configurar AGC WebRTC pasando el googAutoGainControl a la llamada getUserMedia() . En FireFox no he podido encontrar el equivalente.

Mi pregunta es: como usuario final de WebRTC, ¿cómo puedo configurar mi navegador (Chrome o FireFox) para deshabilitar AGC, ya que AGC no funciona correctamente en mi configuración?


El googAutoGainControl como MediaTrackConstraints es específico de Chrome (WebKit).

La Carta del Grupo de Trabajo de WebRTC sigue redactando el estándar y finalizarán el próximo 30 de junio de 2015.

Firefox no soporta ahora mismo.

Nota: No se recomienda usar AGC para que especifique ninguna restricción específica del navegador como obligatoria, ya que su llamada fallará en un navegador que no admita la restricción. En su lugar, especifique sus restricciones como opcional. Su navegador hará todo lo posible para satisfacer tantas restricciones opcionales como sea posible.

Por cierto, puedes jugar con la interfaz GainNode en Firefox: https://developer.mozilla.org/en-US/docs/Web/API/GainNode

Ejemplo para deshabilitar el 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 });

El usuario final no puede deshabilitar en el navegador esta funcionalidad en este momento. El usuario avanzado puede editar las preferencias en about: config en Firefox pero en Chrome no existe.