指示getUserMedia使用最佳可用的相机分辨率

时间:2016-01-14 12:34:18

标签: javascript html5 video getusermedia

我正在使用getUserMedia函数录制来自网络摄像头的视频。 Everyting工作得很好,除了它只是以640x480分辨率录制,当我刚刚指定视频时:对于约束是真的。

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

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

但是如果另一台设备能够比1280x720更好,或者能力更低呢?

我尝试将min设置为非常低,并且max非常高;但它只是默认为640x480,或者什么都没有。我也试过设置所需的大小,但正如预期的那样 - 我最终得到的是那些价值。如果我希望设置得非常高(所以它会选择最接近的可用),我什么都没有。

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

1 个答案:

答案 0 :(得分:2)

请注意,min表示"最低允许值",并且由于大多数浏览器默认为640x480,因此低于该值的值不会产生太大影响。

根据规格,只要求高分辨率,你应该得到相机可以产生的最接近的分辨率。 E.g:

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

这适用于Firefox,也可以在Edge中使用(我还没有尝试过)。

有关其工作原理的详情,请参阅this other answer

Chrome(虽然他们正在处理它)但遗憾的是仍然依赖于adapter.js polyfill标准约束语法,而且polyfill有一些限制,比如你在这里遇到的那些。

如果您使用的是adapter.js,则可以在Chrome中的Web控制台中查看其原生使用的旧非标准语法。使用该语法,可以构建一系列连续更宽的最小范围,并使算法更倾向于使用更高的值。