test servidor example javascript firefox webrtc

javascript - servidor - Restricciones de WebRTC Firefox



webrtc stream (2)

Actualmente uso WebRTC en mi desarrollo personal, todo funciona bien. Obtengo la transmisión desde mi cámara web, pero ahora quiero usar restricciones para getUserMedia() .

var constraints = { audio: false, video: { mandatory : { minWidth: 1280, minHeight: 720 } } };

Cuando pruebo esto en Firefox, parece ignorar las restricciones. Cuando pruebo en Chrome u Opera mis restricciones funcionan bien y mi calidad es buena, ¿alguien sabe por qué? El problema es Firefox?

Gracias por sus sugerencias


Edite el enlace de la wiki que parece estar desactualizado, consulte la respuesta de jib a continuación.

Parece que Firefox aún no ha implementado restricciones.

Se implementaron restricciones desde Chrome 24 y Opera 18. Estas se pueden usar para establecer valores de resolución de video para getUserMedia () y RTCPeerConnection addStream () llamadas.

y de: https://wiki.mozilla.org/Media/getUserMedia

La resolución de captura [en Firefox] actualmente está fijada a 640x480 para video;

Solo soporta

Restricciones mínimas soportadas: (Nota: todos estos booleanos son por defecto ''falso'') video: audio verdadero / falso: falso / verdadero falso: verdadero / falso cuadro: verdadero / falso


Firefox admite un subconjunto de restricciones con getUserMedia() , pero no la sintaxis obsoleta que utilizan Chrome y Opera. La sintaxis mandatory / optional fue desaprobada hace años, y minWidth y minWidth el año anterior.

La especificación MediaCapture

De acuerdo con la especificación , que ahora es estable, su ejemplo debe escribirse así:

var constraints = { audio: false, video: { width: { min: 1280 }, height: { min: 720 }, } };

Esto funciona en Firefox (y Chrome con adapter.js): https://jsfiddle.net/34qxx5w1

En la especificación, las palabras clave min , max y exact (aka min == max) son intrínsecamente obligatorias, mientras que los plain values ​​y los ideal no. Aquí hay un ejemplo más completo:

var constraints = { audio: false, video: { width: { min: 1024, ideal: 1280, max: 1920 }, height: { min: 576, ideal: 720, max: 1080 }, } };

Esto funciona en Firefox (y Chrome con el polyfill adapter.js en casos simples).

Un valor ideal , cuando se utiliza, tiene gravedad, lo que significa que el navegador intentará encontrar la configuración (y la cámara, si tiene más de una), con la distancia de aptitud física más pequeña de los valores ideales dados.

Los valores simples son intrínsecamente ideales, lo que significa que:

var constraints = { video: { width: 640, height: 480 } };

es lo mismo que:

var constraints = { video: { width: { ideal: 640 }, height: { ideal: 480 } } };

En otras palabras, una preferencia que getUserMedia() intentará honrar, pero nunca fallar.

Si debe tener una resolución específica, use esta abreviatura:

var constraints = { video: { width: { exact: 640 }, height: { exact: 480 } } };

Firefox

A partir de ahora, width , height , frameRate y (en el móvil) facingMode son compatibles con Firefox. Además, algunas advertencias por versión:

  • FF32-37: Los valores normales y los ideal no son compatibles. Sin embargo, los valores no son obligatorios a menos que agregue una palabra clave que no require especificación.

  • FF38 +: implementa la especificación para las restricciones anteriores. Manejo mejorado de las cámaras Mac (aunque frameRate tiene limitaciones en Mac).

  • FF43 +: implementa MediaStreamTrack.applyConstraints() y mediaDevices.getSupportedConstraints() .

  • FF46 +: implementa echoCancellation .