在浏览器中获取用户媒体的权限可以使用 getUserMedia
方法。不同摄像头设备的浏览权限获取方法如下所示:
navigator.mediaDevices.enumerateDevices
方法获取所有可用的媒体设备信息。navigator.mediaDevices.enumerateDevices()
.then(function(devices) {
devices.forEach(function(device) {
console.log(device.kind + ": " + device.label +
" id = " + device.deviceId);
});
})
.catch(function(err) {
console.log(err.name + ": " + err.message);
});
device.kind
属性判断设备类型,通常摄像头设备的 kind
值为 "videoinput"
。navigator.mediaDevices.enumerateDevices()
.then(function(devices) {
devices.forEach(function(device) {
if (device.kind === 'videoinput') {
console.log(device.label + ": " + device.deviceId);
}
});
})
.catch(function(err) {
console.log(err.name + ": " + err.message);
});
getUserMedia
方法获取指定摄像头设备的媒体流。传递摄像头设备的 deviceId
或者使用 facingMode
属性来指定前置或后置摄像头。navigator.mediaDevices.getUserMedia({ video: { deviceId: deviceId } })
.then(function(stream) {
// 处理媒体流
})
.catch(function(err) {
console.log(err.name + ": " + err.message);
});
完整示例代码如下:
navigator.mediaDevices.enumerateDevices()
.then(function(devices) {
devices.forEach(function(device) {
if (device.kind === 'videoinput') {
console.log(device.label + ": " + device.deviceId);
navigator.mediaDevices.getUserMedia({ video: { deviceId: device.deviceId } })
.then(function(stream) {
// 处理媒体流
})
.catch(function(err) {
console.log(err.name + ": " + err.message);
});
}
});
})
.catch(function(err) {
console.log(err.name + ": " + err.message);
});
请注意,获取用户媒体的权限通常需要在安全的上下文中进行,例如在使用 HTTPS 或者本地开发环境中。否则,浏览器可能会阻止获取媒体权限。
上一篇:不同摄像机视角之间的映射
下一篇:不同设置状态变量的方式