Javascript WebRTC firefox约束

Javascript WebRTC firefox约束,javascript,firefox,webrtc,Javascript,Firefox,Webrtc,我目前在个人发展中使用WebRTC,一切正常。我从我的网络摄像头获取流,但现在我想对getUserMedia()使用约束 当我在Firefox中测试时,它似乎忽略了这些约束。当我在Chrome或Opera上测试时,我的约束很好,质量也很好,有人知道为什么吗?问题是Firefox 感谢您的建议编辑维基链接似乎已过时,请参阅 好像 自Chrome 24和Opera 18以来,已经实施了限制。这些可用于设置getUserMedia()和RTPeerConnection addStream()调用的视频

我目前在个人发展中使用WebRTC,一切正常。我从我的网络摄像头获取流,但现在我想对
getUserMedia()
使用约束

当我在Firefox中测试时,它似乎忽略了这些约束。当我在Chrome或Opera上测试时,我的约束很好,质量也很好,有人知道为什么吗?问题是Firefox

感谢您的建议

编辑维基链接似乎已过时,请参阅 好像

自Chrome 24和Opera 18以来,已经实施了限制。这些可用于设置getUserMedia()和RTPeerConnection addStream()调用的视频分辨率值

和来自:

[在Firefox中]捕获分辨率目前固定为640x480,用于视频

它只支持

支持的最小约束:(注意:所有这些布尔值都默认为“false”) 视频:对/错 音频:真/假 假:真/假 图片:对/错

Firefox使用了
getUserMedia()
,但没有使用Chrome和Opera使用的过时语法。
强制
/
可选
语法在几年前就被弃用了,而
minWidth
minHeight
则在前一年被弃用了

MediaCapture规范 ,现在是稳定的,您的示例应该这样编写:

var constraints = {
    audio: false,
    video: {
        width: { min: 1280 },
        height: { min: 720 },
    }
};
这适用于Firefox(以及带有adapter.js的Chrome):

在本规范中,关键字
min
max
exact
(也称为min==max)本质上是强制性的,而普通值和
理想值则不是。下面是一个更完整的例子:

var constraints = {
    audio: false,
    video: {
        width: { min: 1024, ideal: 1280, max: 1920 },
        height: { min: 576, ideal: 720, max: 1080 },
    }
};
这适用于Firefox(在简单的情况下,Chrome和polyfill)

理想值
在使用时具有重力,这意味着浏览器将尝试查找给定理想值中最小的设置(和相机,如果有多个)

普通值本质上是理想的,这意味着:

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支持
宽度
高度
帧速率
和(在手机上)面部模式
。此外,按版本列出了一些注意事项:

  • FF32-37:不支持普通值和
    理想值。但是,除非添加非规范关键字,否则这些值不是必需的

  • FF38+:实现上述约束的规范。改进了对Mac摄像头的处理(尽管帧速率对Mac有限制)

  • FF43+:实现了
    MediaStreamTrack.applyConstraints()
    mediaDevices.getSupportedConstraints()

  • FF46+:实现
    回声消除


可能重复的是,我看到了你的链接,但我还没有找到解决问题的方法,我无法在firefox中更改视频质量,但我不明白为什么我的代码在chrome中运行良好,可能是一个我不知道的编解码器视频…wiki已经过时。Firefox确实支持约束。请参阅我的答案。对于较旧的ff版本(不太清楚是哪一个+我注意到mac和linux版本与win版本之间差异很大)也需要注意的是,他们在about:config中有一个选项手动设置这些约束,请参阅以下答案:Update:now允许您在Chrome和Firefox中使用规范约束!更新:目前所有浏览器都支持规范约束。
var constraints = { video: { width: { exact: 640 }, height: { exact: 480 } } };