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,返回空对象{},这可能是几个原因导致的:
- 权限问题:在Android/iOS上需要先获取摄像头权限才能枚举设备
- 平台限制:部分平台对Web API的支持不完全
- 调用时机问题:需要在用户授权后才能正确枚举设备
解决方案
- 先请求权限再枚举设备:
// 先请求摄像头权限
const stream = await navigator.mediaDevices.getUserMedia({ video: true })
// 关闭流释放资源
stream.getTracks().forEach(track => track.stop())
// 再枚举设备
const devices = await navigator.mediaDevices.enumerateDevices()
console.log(devices)
- uni-app专用API(推荐):
// 获取摄像头列表
const camera = plus.camera.getCamera()
console.log(camera) // 0-后置,1-前置
// 直接使用后置摄像头
const cam = plus.camera.getCamera(0)
- 检查manifest.json配置: 确保已添加摄像头权限:
{
"permissions": {
"Camera": {}
}
}