0

我在使用 QuaggaJS 打开正确的摄像头时遇到问题,在某些设备上,自拍摄像头已打开,但在其他设备上,后置摄像头将被打开。如何设置标准摄像头打开后置摄像头?因为用自拍相机扫描条形码并不是那么容易......

这是我迄今为止尝试过的:

 inputStream: {
                type : "LiveStream",
                constraints: {
                    width: {min: 640},
                    height: {min: 480},
                    facingMode: "environment",
                    aspectRatio: {min: 1, max: 2}
                }
            },

在初始化过程中,我将面向模式设置为环境,但自拍相机仍然打开......

也许chrome中还有一个设置可以更改它?但我可以找到它......

4

2 回答 2

3

我正在做的和在一些智能手机上工作的内容如下:

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 而不是 facesMode

deviceId: backCamID
于 2019-03-23T20:10:35.310 回答
1

由于 QuaggaJS 只允许使用“环境”或“用户”作为 facesMode。您可以制作一个选择元素来选择其中一个。

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);

将 facesMode 替换为select

facingMode: document.getElementById("videoSource").value
于 2019-03-01T13:22:50.257 回答