iPad iOS Safari getUserMedia访问特定相机(正面或背面)

时间:2018-06-12 15:15:32

标签: ios ipad safari getusermedia

访问前置或后置摄像头的正确方法是什么。

目前我只能访问“用户”相机(正面)。

我无法使用任何约束切换到后置摄像头。

使用特定设备ID也无效:

var constraints = {
    video: {
        facingMode: "environment",
        deviceId: "E858F78F6026428D45DD669617B4A881409AA4DA"
    }
};

navigator.mediaDevices.getUserMedia(constraints).
有人请帮帮我吗?

始终可以访问前置摄像头。

2 个答案:

答案 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'
        }
    }
})