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 norequire
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()
ymediaDevices.getSupportedConstraints()
.FF46 +: implementa
echoCancellation
.