Firefox does support getUserMedia() 的约束子集,但不是 Chrome 和 Opera 使用的过时语法。 mandatory / optional 语法在几年前就被弃用了,minWidth 和 minHeight 在此之前的一年。
MediaCapture 规范
According to the specification,现在已经稳定了,你的例子应该这样写:
var constraints = {
audio: false,
video: {
width: { min: 1280 },
height: { min: 720 },
}
};
这适用于 Firefox(和带有 adapter.js 的 Chrome):https://jsfiddle.net/34qxx5w1
在规范中,关键字 min、max 和 exact(又名 min == max)本质上是强制性的,而普通值和 ideal 不是。这是一个更完整的例子:
var constraints = {
audio: false,
video: {
width: { min: 1024, ideal: 1280, max: 1920 },
height: { min: 576, ideal: 720, max: 1080 },
}
};
这适用于 Firefox(在简单的情况下也适用于带有 adapter.js polyfill 的 Chrome)。
ideal 值在使用时具有重力,这意味着浏览器将尝试从给定的理想值中找到具有最小 fitness distance 的设置(和相机,如果您有多个)。
简单的值本质上是理想的,这意味着:
var constraints = { video: { width: 640, height: 480 } };
等同于:
var constraints = { video: { width: { ideal: 640 }, height: { ideal: 480 } } };
换句话说,getUserMedia() 将尝试遵守但绝不会故障转移的首选项。
如果您必须有一个特定的分辨率,请使用以下速记:
var constraints = { video: { width: { exact: 640 }, height: { exact: 480 } } };
火狐
截至目前,Firefox 支持width、height、frameRate 和(在移动设备上)facingMode。另外,按版本分类的一些注意事项:
FF32-37:不支持纯值和ideal。但是,除非您添加非规范的 require 关键字,否则值不是强制性的。
FF38+: 实现上述约束的规范。改进了对 Mac 相机的处理(尽管 frameRate 在 Mac 上有限制)。
FF43+:实现MediaStreamTrack.applyConstraints()和mediaDevices.getSupportedConstraints()。
FF46+:实现echoCancellation。