【问题标题】:Instruct getUserMedia to use best available camera resolution指示 getUserMedia 使用最佳可用相机分辨率
【发布时间】:2016-01-14 12:34:17
【问题描述】:

我正在使用 getUserMedia 函数从网络摄像头录制视频。 Everyting 工作正常,除了它仅以 640x480 分辨率录制,当我刚刚指定 video: true 为约束。

如果我将约束设置如下,我现在可以在我的笔记本电脑上获得更好的录音质量:

var mediaConstraints = {
    audio: true,
    video: {
        width: { min: 1280 },
        height: { min: 720 }
    }
};

但是,如果另一台设备的分辨率高于 1280x720,或者性能更低,该怎么办?

我尝试将最小值设置为非常低,将最大值设置为非常高;但它只是默认为 640x480,或者根本没有给出任何内容。我也尝试设置所需的大小,但正如预期的那样 - 我最终得到了那个值。如果我将希望设置为非常高(所以它会选择最接近的可用),我最终什么都没有。

所以问题是,如何设置约束以获得相机可以提供的最大分辨率?

【问题讨论】:

    标签: javascript html video getusermedia


    【解决方案1】:

    请注意,min 表示“允许的最小值”,由于大多数浏览器默认为 640x480,低于该值的值不会有太大影响。

    根据规范,只要求高分辨率,您应该获得相机可以产生的最接近的分辨率。例如:

    var mediaConstraints = {
        audio: true,
        video: { width: 2880, height: 1800 }
    };
    

    这适用于 Firefox,也可能适用于 Edge(我还没有尝试过)。

    请参阅this other answer 了解更多关于为什么这样做。

    不幸的是,Chrome(尽管他们正在开发它)仍然依赖 adapter.js polyfill 来实现标准约束语法,并且该 polyfill 有一些限制,就像您在这里遇到的那样。

    如果您使用的是adapter.js,您可以在 Chrome 的 Web 控制台中查看它本机使用的旧的非标准语法。使用该语法可以构建一系列连续更宽的最小范围,并通过这种方式让算法更喜欢更高的值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多