我们希望使用后置相机进行扫描,并选择正确的后置相机-主相机,而不是广角相机。
较新的移动设备(例如三星galaxy s10)有几个前置和后置摄像头。当调用enumerateDevices()时,我们会得到一个正面和背面的相机列表。我们要从后置相机列表中选择主相机。我们可以使用约束来选择后置相机(面向“环境”),但我们不知道如何区分每个设备的相机是主相机还是广角相机。
navigator.mediaDevices.enumerateDevices().then(function (devices) {
for(var i = 0; i < devices.length; i ++){
var device = devices[i];
if (device.kind === 'videoinput') {
//any useful device info here?
}
}
});
发布于 2019-06-27 04:42:57
device
对象通常有描述它们的device.label
文本。但是,此文本是特定于设备的。
如果您将https://webrtc.github.io/samples/src/content/devices/input-output/加载到浏览器中,它将为您提供可用媒体源(摄像机、麦克风)的下拉列表。标签标识了每台摄像机。它们在不同设备之间略有不同。
在iPhones上,它是“前置摄像头”和“后置摄像头”。
这是该页面的二维码。
发布于 2019-09-21 03:36:11
这取决于你所说的“主”后置相机是什么意思。我们的用例需要一个支持自动对焦的后置摄像头(并不是所有的都支持)。查看可以查询here的约束,并正确调用navigator.mediaDevices.getUserMedia()。
例如:
cam = await navigator.mediaDevices.getUserMedia({video: {facingMode: {exact: "environment"}, focusMode: {ideal: "continuous"}}}});
你提到了长焦,所以也许你想要的是变焦级别。这也是一种选择,但我自己还没有玩过那么多。
对约束API的支持因设备而异,并且非常挑剔。我建议建立后备选项,针对特定的操作系统版本/设备进行自定义查询,并做大量的实验,以确保你得到的相机将尽可能多地为你工作。
https://stackoverflow.com/questions/56768386
复制相似问题