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

2024-04-23

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

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

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

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

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

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


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

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

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

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

See 这个另一个答案 https://stackoverflow.com/questions/28282385/webrtc-firefox-constraints/28911694#28911694了解更多关于为什么它有效的信息。

Chrome(尽管他们正在努力)仍然依赖于适配器.js https://github.com/webrtc/adapter不幸的是,标准约束语法的 polyfill 具有一些限制,就像您在这里遇到的那样。

如果您正在使用适配器.js https://github.com/webrtc/adapter,您可以在 Chrome 的 Web 控制台中查看它本机使用的旧的非标准语法。使用该语法可以构造一系列连续更宽的最小范围,并让算法以这种方式更喜欢更高的值。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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