我同样的代码在安卓的浏览器,和插了两个摄像头的PC上测试,都可以自由切换两个摄像头。
就是safari不行。求解,代码是经过安卓和PC测试的,确实没有问题。就是github上的代码
这个是列出所有摄像头的代码
this.listCamera = function(videoDevice) {
videoDeviceElement = videoDevice;
return new Promise((resolve, reject) => {
navigator.mediaDevices.enumerateDevices()
.then((devices) => {
devices.find((device) => {
if (device.kind === 'videoinput') {
const option = document.createElement('option');
option.text = device.label || 'camera '+ (videoDeviceElement.length + 1).toString();
option.value = device.deviceId;
videoDeviceElement.appendChild(option);
console.log(device);
}
});
if (videoDeviceElement.length === 0) {
reject('没有摄像头');
} else {
videoDeviceElement.style.display = 'inline-block';
// 创建canvas,截取摄像头图片时使用
canvasElement = document.createElement('canvas');
canvasContext = canvasElement.getContext('2d');
resolve(true);
}
})
.catch((err) => {
reject(err);
});
});
};