macos - 我在 Macbook Pro 上只有 Firefox OverconstrainedError
问题描述
这是我的代码
const userVideo = document.getElementById("user-video");
const CONSTRAINTS = {
audio: {
autoGainControl: false,
channelCount: 2,
echoCancellation: true,
noiseSuppression: true,
sampleRate: 48000,
sampleSize: 16,
},
video: {
facingMode: "user",
width: { min: 0, ideal: 320, max: 320 },
height: { min: 0, ideal: 240, max: 240 },
frameRate: { ideal: 15, max: 30 },
},
};
(async () => {
const userMedia = await navigator.mediaDevices.getUserMedia(CONSTRAINTS);
console.log(userMedia);
userVideo.srcObject = userMedia;
})();
它在 Chrome 和 Safari 上运行良好,但在 Firefox 中出现错误OverconstrainedError
MediaStreamError
constraint: "width"
message: "Constraints could be not satisfied."
name: "OverconstrainedError"
stack: ""
所以我尝试改变width
和height
限制
width: { min: 0, ideal: 320, max: 360 },
height: { min: 0, ideal: 240, max: 300 },
它工作正常!!!!
附言。我在这个网站https://test.webrtc.org/上测试了 WebRTC MacBook 上的 Firefox 不支持 320x240 但另一个浏览器和另一个操作系统可以支持它。
我想知道为什么。请给我解释一下。
解决方案
这是错误 1286945。Firefox 还不支持将相机分辨率缩小到约束。
这意味着 Firefox 目前仅提供原生相机模式。
解决方法
删除max
对宽度和高度的约束。min
并被max
严格执行,并在此处导致OverconstrainedError。
它们在很大程度上也是不必要的,因为ideal
值具有重力。所以不要使用它们,除非您准备好处理错误并使用后备重试。
浏览器应该已经找到最接近理想的分辨率。
在此处阅读有关约束的更多信息。
推荐阅读
- elasticsearch - 将 Elasticsearch Watcher 限制为一个警报
- vba - VBA为“行列表”中的文本着色
- c# - 如何在 xaml 中集成一个简单的 ContentDialog?(C#)
- javascript - 如何使用 Javascript 获得刷新和新的 DOM 元素?
- c# - 我无法通过 C# 在 Outlook 约会中插入超链接
- react-admin - React Admin - 获取表单中的当前值
- postgresql - 使用 postgresQL 选择具有首先出现的 id 的行
- regex - 使用 Groovy 脚本从日志文件中复制特定的 XML 块
- java - 访问 REST API 时完全忽略 WAR 名称
- plugins - 自定义注释和标记工具栏以在 acrobat 2017 中添加一些按钮