Firefox 帧速率最大限制

Mic*_*ham 5 javascript firefox webrtc

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

Firefox 帧速率限制

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

我找到了这个bugzilla 报告,但它说已实施帧速率限制。这是 Firefox 尚未解决的问题吗?和这个bug有关系吗?

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

jib*_*jib 5

相机发现

浏览器(甚至操作系统)对于从getUserMedia.

Chrome 会根据您的要求重新缩放和裁剪,而 Firefox 仅返回特定相机的本机模式。两者均在规格范围内。

两种方法都有优点,但不幸的是它们是相互排斥的,因为如果你总是得到你想要的,那么你就对相机一无所知。

至于为什么您没有低于 30 fps 的模式,可能是因为您的相机没有任何模式。无论如何,在 Windows 7 上使用 Firefox,我可以从 Logitech C920 获得各种模式,但当我限制帧速率时,我往往只能返回相当高分辨率的模式(例如 2592 x 1944 x 10fps),这可能是我的特定模型的一个特征。

在 OSX 上,您还发现了错误 1131861。OSX 很棘手,因为它在操作系统级别透露的摄像头信息非常少。目前 30 fps 是人为限制。

设置带宽限制

从您的评论来看,您真正关心的是减少对等连接的带宽要求。该规范仍在研究如何直接指定比特率、分辨率和帧率等编码参数,目前看起来像这样:

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

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

您可以指定多个encoding进行联播。

此功能在 Firefox 47(Beta)中可用,这个小提琴应该可以工作。