Macos 我在Macbook Pro上遇到了过度训练的错误,只有Firefox

Macos 我在Macbook Pro上遇到了过度训练的错误,只有Firefox,macos,firefox,webrtc,Macos,Firefox,Webrtc,这是我的密码 const userVideo=document.getElementById(“用户视频”); 常量约束={ 音频:{ 自动增益控制:错误, 信道数:2, 是的, 噪音抑制:是的, 采样器:48000, 样本:16, }, 视频:{ facingMode:“用户”, 宽度:{最小值:0,理想值:320,最大值:320}, 高度:{最小值:0,理想值:240,最大值:240}, 帧速率:{理想值:15,最大值:30}, }, }; (异步()=>{ const userMedia=

这是我的密码

const userVideo=document.getElementById(“用户视频”);
常量约束={
音频:{
自动增益控制:错误,
信道数:2,
是的,
噪音抑制:是的,
采样器:48000,
样本:16,
},
视频:{
facingMode:“用户”,
宽度:{最小值:0,理想值:320,最大值:320},
高度:{最小值:0,理想值:240,最大值:240},
帧速率:{理想值:15,最大值:30},
},
};
(异步()=>{
const userMedia=await navigator.mediaedevices.getUserMedia(约束);
console.log(userMedia);
userVideo.srcObject=userMedia;
})();
它在Chrome和Safari上运行良好 但是在Firefox中,我得到了一个错误
OverconstrainedError

MediaStreamError
constraint: "width"
message: "Constraints could be not satisfied."​
name: "OverconstrainedError"
stack: ""
因此,我尝试将
宽度
高度
约束更改为

width: { min: 0, ideal: 320, max: 360 },
height: { min: 0, ideal: 240, max: 300 },
它工作得很好

另外,我在这个网站上测试了WebRTC MacBook上的Firefox不支持320x240 但是另一个浏览器和另一个操作系统可以支持它

我想知道为什么。请给我解释一下。

这是。Firefox还不支持将相机分辨率缩小到限制

这意味着Firefox目前只提供本机摄像头模式

变通办法 删除宽度和高度上的
max
约束
min
max
是严格执行的,并导致此处出现过度约束错误

它们也基本上是不必要的,因为
理想值具有重力。因此,除非您准备好处理错误并使用回退重试,否则不要使用它们

浏览器应该已经找到最接近理想分辨率的分辨率

了解有关约束的更多信息