如何在Xcode中识别OBS虚拟摄像头?(M1 Mac环境)
针对你在M1 Mac上使用Xcode 15/16 Beta,以“My Mac (Designed for iPhone)”模式运行App时无法识别OBS虚拟摄像头的问题,可尝试以下解决方案:
补充Info.plist权限声明
Mac Catalyst环境下,App必须明确声明摄像头权限才能访问视频设备。在Info.plist中添加NSCameraUsageDescription键,值为权限申请说明文本(比如“需要访问摄像头进行视频采集”)。同时确保NSMicrophoneUsageDescription已正确配置,避免权限链缺失。改用AVCaptureDeviceDiscoverySession枚举设备
旧的[AVCaptureDevice devices]API在Mac Catalyst环境下可能无法完整枚举虚拟摄像头,建议使用AVCaptureDeviceDiscoverySession精准获取视频设备:// 创建视频设备发现会话,包含内置与外接/虚拟设备类型 AVCaptureDeviceDiscoverySession *session = [AVCaptureDeviceDiscoverySession discoverySessionWithDeviceTypes:@[AVCaptureDeviceTypeBuiltInWideAngleCamera, AVCaptureDeviceTypeExternalUnknown] mediaType:AVMediaTypeVideo position:AVCaptureDevicePositionUnspecified]; NSArray *videoDevices = session.devices; for (AVCaptureDevice *device in videoDevices) { NSLog(@"视频设备名称: %@", device.localizedName); // 按需区分设备类型 if (device.position == AVCaptureDevicePositionBack) { NSLog(@"设备位置: 后置"); } else if (device.position == AVCaptureDevicePositionFront) { NSLog(@"设备位置: 前置"); } else { NSLog(@"设备位置: 外接/虚拟"); } }其中
AVCaptureDeviceTypeExternalUnknown类型可确保识别外接及虚拟摄像头。验证OBS虚拟摄像头配置
确认OBS已启用虚拟摄像头功能(OBS设置>视频>虚拟摄像头),且插件为Arm架构适配版本(OBS v30+默认支持M1);同时在系统隐私设置(系统设置>隐私与安全性>摄像头)中,确保你的App和Xcode已获得摄像头访问权限。检查Xcode运行配置
在Xcode的Signing & Capabilities页面,确认已添加Camera权限;同时验证App签名状态,避免因签名问题导致权限验证失败。
内容的提问来源于stack exchange,提问作者Alexufo

