iPad iOS Safari getUserMedia 访问特定摄像头(前置或后置)

iPad iOS Safari getUserMedia acces specific camera ( front or back )

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

目前我只能使用 "user" 摄像头(前置)。

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

使用特定的设备 ID 也不起作用:

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

navigator.mediaDevices.getUserMedia(constraints).

有人能帮帮我吗?

一直在访问前置摄像头。

根据您的问题,我认为您已经成功调用 getUserMedia() 以获得用户访问摄像头的权限(否则您将无法使用前置摄像头)。这是必需的,因为以下 JSON 中的 label 值只有在用户已经授予访问权限时才会被填充。

在 iOS 你现在必须调用 navigator.mediaDevices.enumerateDevices() 并且会得到一个 "response 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 或让用户使用基本 UI 选择它将使您可以使用后置摄像头。

注意: deviceId 值将在每次调用 enumerateDevices()!

时更改

您也可以在调用 getUserMedia 时将其作为参数传入。

video: {
    facingMode: {
        exact: 'environment'
    }
}

这将return后置摄像头的视频:

navigator.mediaDevices.getUserMedia({
    video: {
        facingMode: {
            exact: 'environment'
        }
    }
})