You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何创建可被kCMIOHardwarePropertyDevices识别的macOS虚拟摄像头?

解决Core Media IO API无法识别虚拟摄像头的问题

你的问题核心在于:WWDC2022的Camera Extension是面向AVFoundation框架的虚拟摄像头实现,而kCMIOHardwarePropertyDevices属于**Core Media IO(CMIO)**框架,两者的设备注册机制不兼容,所以自定义Extension不会被CMIO枚举到。以下是可行的解决方式:

一、开发符合CMIO规范的虚拟摄像头驱动

如果需要自定义虚拟摄像头逻辑,必须基于CMIO框架开发设备插件:

  • 参考Apple官方的CMIOCameraSample示例代码,实现CMIO设备的核心回调:包括设备属性查询、流格式配置、视频帧推送等。
  • 关键步骤是将虚拟设备注册到CMIO系统对象(kCMIOObjectSystemObject),确保kCMIOHardwarePropertyDevices属性能枚举到该设备。
  • 注意签名与权限:虚拟机中需要关闭系统完整性保护(SIP),或者用开发者ID签名插件并在系统偏好设置中授权加载。

二、使用现成工具快速生成可被CMIO识别的虚拟摄像头(适合测试场景)

对于自动化测试场景,无需自行开发,直接用成熟工具即可:

  • OBS Virtual Camera:安装OBS Studio后,在「工具」菜单启用虚拟摄像头功能,它会通过CMIO插件注册虚拟设备,你的kCMIOHardwarePropertyDevices API可以直接检测到。
  • Syphon框架:利用Syphon的CMIO插件创建虚拟视频流设备,同样能被Core Media IO枚举。

三、调试验证技巧

  • 用命令行枚举CMIO设备:执行ioreg -c CMIOObject查看所有已注册的CMIO设备,确认虚拟设备是否存在。
  • 优化检测代码:可以为kCMIOHardwarePropertyDevices添加kCMIOPropertyScopeInput限定符,只枚举输入类摄像头,避免无关设备干扰:
    CMIOObjectPropertyAddress address = {
        kCMIOHardwarePropertyDevices,
        kCMIOPropertyScopeInput,
        kCMIOPropertyElementMaster
    };
    

内容的提问来源于stack exchange,提问作者thorax

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 08:35:21