如何在 QuaggaJS 中使用后置摄像头而不是自拍相机
How to use back camera instead of selfie camera in QuaggaJS
我在使用 QuaggaJS 打开正确的相机时遇到问题,在某些设备上,自拍相机会打开,但在其他设备上,后置相机会打开。如何将标准摄像头设置为打开后置摄像头?因为用自拍相机扫描条形码不是那么容易......
这是我迄今为止尝试过的方法:
inputStream: {
type : "LiveStream",
constraints: {
width: {min: 640},
height: {min: 480},
facingMode: "environment",
aspectRatio: {min: 1, max: 2}
}
},
在初始化的时候,我已经设置了人脸模式为环境,但是自拍相机还是打开了.....
也许 chrome 中还有一个设置,您可以在其中更改它?但是我找到了......
因为 QuaggaJS 只允许使用 "environment" 或 "user" 作为 facingMode。您可以制作一个 select 元素来选择其中之一。
HTML:
<select id="videoSource">
<option value="enviroment" selected>Back</option>
<option value="user">Front</option>
</select>
JS:
var _scannerIsRunning = false; // set to true at the end of startScanner()
document.getElementById("videoSource").addEventListener("change", function () {
if (_scannerIsRunning) {
Quagga.stop();
}
startScanner(); // put your init function here
}, false);
将 facingMode 替换为 select
的值
facingMode: document.getElementById("videoSource").value
我在某些智能手机上所做的工作如下:
var backCamID = null;
var last_camera = null;
navigator.mediaDevices.enumerateDevices()
.then(function(devices) {
devices.forEach(function(device) {
if( device.kind == "videoinput" && device.label.match(/back/) !== null ){
backCamID = device.deviceId;
}
if( device.kind === "videoinput"){
last_camera = device.deviceId;
}
});
if( backCamID === null){
backCamID = last_camera;
}
})
.catch(function(err) { });
并在约束中放置相机 ID 而不是 facingMode
deviceId: backCamID
我在使用 QuaggaJS 打开正确的相机时遇到问题,在某些设备上,自拍相机会打开,但在其他设备上,后置相机会打开。如何将标准摄像头设置为打开后置摄像头?因为用自拍相机扫描条形码不是那么容易......
这是我迄今为止尝试过的方法:
inputStream: {
type : "LiveStream",
constraints: {
width: {min: 640},
height: {min: 480},
facingMode: "environment",
aspectRatio: {min: 1, max: 2}
}
},
在初始化的时候,我已经设置了人脸模式为环境,但是自拍相机还是打开了.....
也许 chrome 中还有一个设置,您可以在其中更改它?但是我找到了......
因为 QuaggaJS 只允许使用 "environment" 或 "user" 作为 facingMode。您可以制作一个 select 元素来选择其中之一。
HTML:
<select id="videoSource">
<option value="enviroment" selected>Back</option>
<option value="user">Front</option>
</select>
JS:
var _scannerIsRunning = false; // set to true at the end of startScanner()
document.getElementById("videoSource").addEventListener("change", function () {
if (_scannerIsRunning) {
Quagga.stop();
}
startScanner(); // put your init function here
}, false);
将 facingMode 替换为 select
facingMode: document.getElementById("videoSource").value
我在某些智能手机上所做的工作如下:
var backCamID = null;
var last_camera = null;
navigator.mediaDevices.enumerateDevices()
.then(function(devices) {
devices.forEach(function(device) {
if( device.kind == "videoinput" && device.label.match(/back/) !== null ){
backCamID = device.deviceId;
}
if( device.kind === "videoinput"){
last_camera = device.deviceId;
}
});
if( backCamID === null){
backCamID = last_camera;
}
})
.catch(function(err) { });
并在约束中放置相机 ID 而不是 facingMode
deviceId: backCamID