Firefox 帧率最大限制

Firefox Frame Rate Max Constraint

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

例如,我在 https://mikeg0.github.io/samples/src/content/peerconnection/constraints/ 克隆并更改了 github.com/webrtc/samples 的约束示例。我将 frameRate.min 变量重命名为 frameRate.max。这在 Chrome 中按预期工作,但在 Firefox 中没有。

我发现了 this bugzilla report, but it says frame rate constraints are implemented. Is this something Firefox has yet to sort out? Is it related to this 个错误?

或者我是否错误地使用了这个约束条件?

相机发现

浏览器(甚至 OSes)对于从 getUserMedia 到 return 的相机模式存在分歧。

而 Chrome 可以根据您的要求重新缩放和裁剪,而 Firefox returns 模式仅适用于您的特定相机。两者都在规格范围内。

这两种方法各有优势,但不幸的是,它们相互排斥,因为如果你总是得到你想要的,那么你就没有发现任何关于相机的东西。

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

在 OSX 上还有您找到的 bug 1131861。 OSX 很棘手,因为它在 OS 级别揭示的相机信息非常少。 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(测试版)中可用,this fiddle 应该可以使用。