Firefox确实支持使用 的约束子集getUserMedia()
,但不支持Chrome 和 Opera 使用的过时语法。该mandatory
/optional
语法年前弃用,minWidth
并minHeight
在一年之前。
MediaCapture 规范
根据现在稳定的规范,您的示例应该这样编写:
var constraints = {
audio: false,
video: {
width: { min: 1280 },
height: { min: 720 },
}
};
这适用于 Firefox(和带有 adapter.js 的 Chrome):https ://jsfiddle.net/34qxx5w1
在规范中,关键字min
,max
和exact
(aka min == max) 本质上是强制性的,而普通值ideal
则不是。这是一个更完整的示例:
var constraints = {
audio: false,
video: {
width: { min: 1024, ideal: 1280, max: 1920 },
height: { min: 576, ideal: 720, max: 1080 },
}
};
这适用于 Firefox(以及 Chrome 和适配器在简单情况下的polyfill)。
一个ideal
值在使用时具有重力,这意味着浏览器将尝试找到与给定的理想值的最小适应距离的设置(和相机,如果您有多个)。
普通值本质上是理想的,这意味着:
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 相机的处理(尽管帧速率在 Mac 上有限制)。
FF43+:实现MediaStreamTrack.applyConstraints()
和mediaDevices.getSupportedConstraints()
。
FF46+:实现echoCancellation
.