Firefox帧速率最大约束

时间:2016-02-19 22:40:08

标签: javascript firefox webrtc

在Firefox中,当调用getUserMedia()时,我添加了一个约束来限制帧速率。但是,任何低于30fps的值都不允许在GUM权限对话框中选择网络摄像头。

Firefox frame rate constraint

例如,我已在https://mikeg0.github.io/samples/src/content/peerconnection/constraints/克隆并更改了github.com/webrtc/samples的约束示例。我将frameRate.min变量重命名为frameRate.max。这在Chrome中可以正常使用,但在Firefox中无效。

我发现了this bugzilla报告,但它表示实施了帧速率限制。这是Firefox尚未解决的问题吗?它与this bug有关吗?

或者我错误地使用了这个约束?

1 个答案:

答案 0 :(得分:2)

相机发现

浏览器(甚至是OS')不同意从getUserMedia返回哪些相机模式。

Chrome会根据您的要求重新调整和裁剪,但Firefox仅返回您特定摄像机的原生模式。两者都在规范范围内。

这两种方法都有优势,但遗憾的是它们是相互排斥的,因为如果你总是得到你想要的东西,那么你就没有发现相机。

至于为什么你没有低于30 fps的模式,可能是因为你的相机没有任何模式。对于它的价值,使用Windows 7上的Firefox,我可以从我的Logitech C920获得各种模式,但是当我限制帧速率时,我倾向于只返回相当高分辨率的模式(如2592 x 1944 x 10fps),这可能是是我特定模特的特征。

在OSX上,您还找到了bug 1131861。 OSX很棘手,因为它在操作系统级别上显示的相机有多少。 30 fps是目前的人为限制。

设置带宽限制

从您的评论中可以看出,您真正关心的是减少对等连接的带宽需求。该规范仍然适用于how to specify encoding parameters like bitrate, resolution and framerate directly,目前看起来像这样:

var encoding = { maxBitrate: 60000, maxFramerate: 5, scaleResolutionDownBy: 2 };

var sender = pc.addTrack(stream.getVideoTracks()[0], stream);
sender.setParameters({ encodings: [encoding] });

您可以为同时广播指定多个encoding

此功能在Firefox 47(Beta)中可用,其中this fiddle应该可用。