为OS X构建虚拟摄像头

时间:2013-12-20 09:12:38

标签: c++ objective-c macos

我需要在像Skype这样的程序中获取合成生成的视频流。音频部分很简单。有一个名为Soundflower的项目是一个适配器。它在一侧呈现虚拟音频目标设备,在另一侧呈现视频源。我正在为OSX寻找相同的解决方案。除了我只需要部分如何将其呈现为虚拟相机。不要误解,我不需要“随时可用”的工具,我需要如何开发它的方式。因此,随时可用的工具仅对源代码有帮助。

在我来自的Windows世界中,我已经使用DirectShow对这样的虚拟相机进行了编程。现在我在OSX世界中寻找类似的解决方案。

1 个答案:

答案 0 :(得分:8)

这在某种程度上取决于您希望与之接口的应用程序。如果它是一个老式的QuickTime应用程序(32位,10.8或更早版本),则需要编写QuickTime vdig(视频数字转换器)组件。这基本上是一个插件,它提供了一个可以由任何QT兼容的应用程序动态枚举和调用的特定接口。但是,这一切现已全部弃用(截至10.9)!

现代方法是使用Core Media I / O Framework。不幸的是,它没有像大多数其他框架那样完整记录,因为只有一小部分开发人员使用(需要创建硬件接口)。

有一个可用的SDK项目,其中包含CoreMedia框架和一些示例代码:

专门查看IOVideoSampleDevice

您可能不需要kext(内核扩展),因为您不会与真实硬件连接。所以希望您能够实现所需的CMIO接口并注册您的设备类型。

有一本很棒的书,涵盖OS X和iOS的驱动程序开发:

(免责声明:作者是我的学院和朋友。)

QuickTime曾经是DirectShow的等价物。现在,CoreMedia和朋友已经取代它,拥有更加现代化和灵活的API。