WebRTC 火狐约束
WebRTC firefox constraints
我目前在个人开发中使用WebRTC,一切正常。我从网络摄像头获取流,但现在我想对getUserMedia()
使用约束。
var constraints = {
audio: false,
video: {
mandatory : {
minWidth: 1280,
minHeight: 720
}
}
};
当我在 Firefox 中对此进行测试时,它似乎忽略了约束。当我在Chrome或Opera上测试时,我的约束工作得很好,我的质量也很好,有人知道为什么吗?问题是火狐?
感谢您的建议
Firefox确实支持getUserMedia()
约束的子集,但不支持Chrome和Opera使用的过时语法。mandatory
/optional
语法在几年前就被弃用了,minWidth
和minHeight
在前一年被弃用。
媒体捕获规范
根据现在稳定的规范,您的示例应编写如下:
var constraints = {
audio: false,
video: {
width: { min: 1280 },
height: { min: 720 },
}
};
这适用于Firefox(和带适配器的Chrome.js):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(以及带有适配器的Chrome.js在简单的情况下填充)。
使用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
.
编辑 维基链接似乎已经过时了,请参考下面 Jib 的回答。
似乎Firefox尚未实现约束。
自 Chrome 24 和 Opera 18 以来,已实施约束。这些可用于设置 getUserMedia() 和 RTCPeerConnection addStream() 调用的视频分辨率值。
和来自: https://wiki.mozilla.org/Media/getUserMedia
视频的捕获分辨率[在Firefox中]目前固定为640x480;
它只支持
支持的最小约束:(注意:所有这些布尔值都默认为"false") 视频:对/错 音频:对/错 假:真/假 图片:对/假
- 如何在火狐浏览器中禁用F5和刷新
- 在火狐浏览器卸载之前
- AngularJS指令范围约束问题重复出现
- 在Matter.js中隐藏绿色约束拖动轨迹
- 为什么火狐在我更改 innerHTML 时会选择文本
- 如何使用RaphaelJS将文本元素约束在正方形中
- 如何在火狐浏览器上增加 IndexedDB 的配额
- gzip 字符串在火狐扩展中
- 从火狐中的 blob 下载图像
- 使用选择约束限制全日历中的可选框
- 火狐中的多个问题,但在 chrome 中工作正常,没有一个问题
- 如何在火狐扩展的新选项卡中打开网址
- 在某些URL上显示火狐插件工具栏
- 多个 socket.io 客户端连接不起作用(谷歌浏览器,火狐浏览器)
- 在火狐中检测“图像损坏或截断”
- 火狐刷新
- 如何在火狐中使用 iframe execCommand 时启用复制/剪切/粘贴功能
- 是否有一个 API 来控制火狐附加组件 SDK 中的下载
- 火狐浏览器不会在前进时触发流行状态事件
- WebRTC 火狐约束