访问前置或后置摄像头的正确方法是什么。
目前我只能访问“用户”相机(正面)。
我无法使用任何约束切换到后置摄像头。
使用特定设备ID也无效:
var constraints = {
video: {
facingMode: "environment",
deviceId: "E858F78F6026428D45DD669617B4A881409AA4DA"
}
};
navigator.mediaDevices.getUserMedia(constraints).
有人请帮帮我吗?
始终可以访问前置摄像头。
答案 0 :(得分:2)
根据您的问题,我认为您已经成功调用getUserMedia()
以获得用户访问摄像头的权限(否则您将无法使前置摄像头工作)。这是必需的,因为只有当用户已授予访问权限时,才会填充以下JSON中的label
值。
在iOS上,您现在必须致电navigator.mediaDevices.enumerateDevices()
并获得“响应JSON”,如下所示:
[
{
"deviceId":"<firstID>",
"kind":"audioinput",
"label":"iPhone Microphone",
"groupId":""
},
{
"deviceId":"<secondID>",
"kind":"videoinput",
"label":"Back Camera",
"groupId":""
},
{
"deviceId":"<thirdID>",
"kind":"videoinput",
"label":"Front Camera",
"groupId":""
}
]
使用您想要的设备的deviceId
或让用户使用基本用户界面选择它可以让您访问后置摄像头。
警告:每次调用deviceId
时,enumerateDevices()
值都会发生变化!
答案 1 :(得分:0)
您也可以在调用 getUserMedia 时将其作为参数传递。
video: {
facingMode: {
exact: 'environment'
}
}
这将返回后置摄像头的视频:
navigator.mediaDevices.getUserMedia({
video: {
facingMode: {
exact: 'environment'
}
}
})