我正在使用 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(使用前将#替换为@)