uni-app navigator.mediaDevices.enumerateDevices获取不到后置摄像头ID

uni-app navigator.mediaDevices.enumerateDevices获取不到后置摄像头ID

| 开发环境 | 版本号 | 项目创建方式 |
|----------|--------|--------------|
| HBuilderX | 4.61   | 离线         |

# bug描述:


let constraints = { video: { facingMode: 'environment' }, audio: false }
const stream = await navigator.mediaDevices.getUserMedia(constraints)  

无法调取正常摄像头,
navigator.mediaDevices.enumerateDevices  
获取不到摄像头ID返回的是一个{}
请问各位应该如何解决

更多关于uni-app navigator.mediaDevices.enumerateDevices获取不到后置摄像头ID的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于uni-app navigator.mediaDevices.enumerateDevices获取不到后置摄像头ID的实战教程也可以访问 https://www.itying.com/category-93-b0.html


uni-app摄像头设备获取问题分析

根据你的描述,在uni-app中使用navigator.mediaDevices.enumerateDevices()获取不到摄像头ID,返回空对象{},这可能是几个原因导致的:

  1. 权限问题:在Android/iOS上需要先获取摄像头权限才能枚举设备
  2. 平台限制:部分平台对Web API的支持不完全
  3. 调用时机问题:需要在用户授权后才能正确枚举设备

解决方案

  1. 先请求权限再枚举设备
// 先请求摄像头权限
const stream = await navigator.mediaDevices.getUserMedia({ video: true })
// 关闭流释放资源
stream.getTracks().forEach(track => track.stop())
// 再枚举设备
const devices = await navigator.mediaDevices.enumerateDevices()
console.log(devices)
  1. uni-app专用API(推荐):
// 获取摄像头列表
const camera = plus.camera.getCamera()
console.log(camera) // 0-后置,1-前置

// 直接使用后置摄像头
const cam = plus.camera.getCamera(0)
  1. 检查manifest.json配置: 确保已添加摄像头权限:
{
  "permissions": {
    "Camera": {}
  }
}
回到顶部