Javascript 指示getUserMedia使用最佳可用相机分辨率
我正在使用getUserMedia功能从网络摄像头录制视频。一切都很好,除了在我刚刚为约束指定video:true时,它仅以640x480分辨率录制 如果我将约束设置如下,我现在可以在笔记本电脑上获得更好的录制质量:Javascript 指示getUserMedia使用最佳可用相机分辨率,javascript,html,video,getusermedia,Javascript,Html,Video,Getusermedia,我正在使用getUserMedia功能从网络摄像头录制视频。一切都很好,除了在我刚刚为约束指定video:true时,它仅以640x480分辨率录制 如果我将约束设置如下,我现在可以在笔记本电脑上获得更好的录制质量: var mediaConstraints = { audio: true, video: { width: { min: 1280 }, height: { min: 720 } } }; 但如果另一台设备的性能优于1280
var mediaConstraints = {
audio: true,
video: {
width: { min: 1280 },
height: { min: 720 }
}
};
但如果另一台设备的性能优于1280x720,或者甚至更低,该怎么办
我试着把最小值设得很低,最大值设得很高;但它只是默认为640x480,或者根本没有给出任何信息。我还尝试设置所需的大小,但正如预期的那样——我最终得到了该值是多少。如果我将desired设置为非常高(因此它会选择最接近的可用值),那么我将一无所获
所以问题是,如何设置约束以获得相机可以提供的最大分辨率?请注意,
min
表示“最小允许值”,并且由于大多数浏览器默认为640x480,低于该值的值不会有多大影响
根据规格,只要要求高分辨率,你就应该得到相机能产生的最接近的分辨率。例如:
var mediaConstraints = {
audio: true,
video: { width: 2880, height: 1800 }
};
这在Firefox中有效,在Edge中也可能有效(我还没有尝试过)
请参阅,以了解有关此功能为何有效的更多信息
不幸的是,Chrome(尽管他们正在开发)仍然依赖于polyfill的标准约束语法,而polyfill也有一些限制,就像您在这里遇到的那样
如果您正在使用,您可以在Chrome的web控制台中查看它本机使用的旧的非标准语法。使用该语法可以构造一系列连续更宽的最小范围,并使算法以这种方式选择更高的值