【问题标题】:Firefox Frame Rate Max ConstraintFirefox 帧率最大约束
【发布时间】:2016-02-19 22:40:07
【问题描述】:

在 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 报告,但它说已实现帧速率限制。这是 Firefox 尚未解决的问题吗?是不是和this的bug有关?

还是我错误地使用了这个约束?

【问题讨论】:

  • 这是在 OSX 上吗?
  • 抱歉漏掉了。发生在 Windows 10 上。
  • 刚刚在 OSX 上进行了测试,并且确实在那里发生了。我刚刚发现了这个问题...bugzilla.mozilla.org/show_bug.cgi?id=1131861我将把它留给专家来解决。就个人而言,我对带宽限制比对帧率限制更感兴趣:)
  • 我在大多数相机的 Firefox 中也遇到了同样的问题。 Chrome 按预期工作。我发现一台摄像头在 Firefox 中按预期工作,罗技高清网络摄像头 C920。在大多数相机中,我收到错误“OverconstrainedError:约束可能不满足”。基于 Firefox (developer.mozilla.org/en-US/docs/Web/API/MediaDevices/…) 上的示例,我希望这能够奏效。这似乎是某些网络摄像头的 Firefox 设备问题。我在 Windows 和 Apple 中都遇到了 Firefox 的这个问题。

标签: javascript firefox webrtc


【解决方案1】:

相机发现

浏览器(甚至操作系统)对于从 getUserMedia 返回的相机模式存在分歧。

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

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

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

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

设置带宽限制

从您的 cmets 看来,您真正关心的是降低对等连接的带宽需求。该规范仍在处理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 应该可以工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-07
    • 1970-01-01
    • 2022-11-27
    • 2011-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多