HoloLens2运行Unity项目调用PhotoCapture提示无可用捕获设备如何解决
解决方案
- 处理Unity版本兼容问题:Unity 2020.3.2f1内置的
UnityEngine.Windows.WebCam.PhotoCapture存在已知的HoloLens2适配bug,会直接触发流编号无效、找不到设备的报错。可升级到2020.3.40f1以上的LTS版本修复该原生接口问题,也可以改用MRTK封装的WebCamTexture接口、微软Windows Media Capture原生API实现拍照功能。 - 补充运行时权限申请:仅在Package.appxmanifest中静态声明权限不够,需要在调用拍照逻辑前主动触发UWP运行时权限请求。可以在应用启动后先执行一次
WebCamDevice[] devices = WebCamTexture.devices;触发系统权限弹窗,用户确认授权后再执行拍照逻辑,避免权限未激活导致的设备识别失败。 - 修正分辨率获取逻辑:不要直接取
SupportedResolutions排序后的第一个值,HoloLens2前置摄像头仅支持固定的拍照分辨率,建议先遍历打印所有支持的分辨率,手动指定兼容的分辨率(比如1280720、896504等HoloLens2官方适配的拍照分辨率),避免请求不支持的分辨率导致流编号错误。 - 移除冗余的Media API引用:你代码中声明了未初始化使用的
VideoCapture、HoloLensCameraStream变量,部分Unity版本中多个Media相关类的引用会触发底层设备占用冲突,删除这两个未使用的变量声明,避免抢占摄像头硬件资源。 - 校验项目打包配置:确认Player Settings中Publishing Settings的Capabilities里除了WebCam、Microphone,还勾选了Pictures Library权限(本地存储照片需要),同时确认XR插件管理中OpenXR的HoloLens特征组已正确启用,没有禁用摄像头相关的适配选项。
内容的提问来源于stack exchange,提问作者Xiink
相关产品推荐
相关产品推荐

