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

如何在不使用已弃用的CoreMediaIO的前提下在MacOS上创建虚拟摄像头

macOS 无CoreMediaIO依赖的虚拟摄像头开发方案

苹果从 macOS 12.3 开始正式标记旧版CoreMediaIO DAL插件接口为弃用状态,目前官方提供了更安全的替代方案,可根据你需要兼容的系统版本选择:

  • macOS 13.0 (Ventura) 及以上版本(推荐方案)
    用苹果官方主推的Camera Extension(摄像头系统扩展)开发,这是完全替代旧CoreMediaIO的原生方案,不需要依赖任何已弃用接口。开发流程如下:

    1. 在Xcode中新建Camera Extension类型的扩展目标,自动关联所需的CoreMediaIOExtension框架
    2. 配置com.apple.developer.camera-extension权限 entitlement,需要开发者账号开启对应权限
    3. 实现CMIOExtensionProvider、CMIOExtensionDevice、CMIOExtensionStream三个核心协议,分别对应扩展服务、虚拟摄像头设备、视频流实例
    4. 生成自定义视频帧后(可以是屏幕采集、文件读取、实时滤镜处理后的内容),通过CMIOExtensionStream的接口将帧数据上报给系统,系统会自动将这个设备暴露给所有调用摄像头的应用
  • 需要兼容 macOS 10.15 ~ 12.x 旧版本
    可以基于IOUserClient框架实现虚拟媒体设备,搭配VideoToolbox完成视频帧的编解码处理:

    1. 实现IOUserClient子类注册虚拟视频设备,注意该方案需要额外配置驱动相关权限,分发时需要经过苹果公证
    2. 用VideoToolbox处理不同格式的视频帧转换,统一输出系统可识别的NV12/BGRA格式帧
    3. 通过IOKit接口将帧数据同步给虚拟设备,完成视频流输出

开发注意事项

  • 所有虚拟摄像头方案都需要开启对应的权限,非App Store分发的版本需要用户手动在「系统设置-隐私与安全性」中允许扩展运行
  • 视频帧输出建议保持固定帧率,避免出现识别异常、画面卡顿的问题
  • 实时帧处理建议搭配Metal或Core Image实现,比CPU处理效率高3~5倍,适合高分辨率高帧率的场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 18:36:03