为OS X构建虚拟摄像头

Mar*_*ott 6 c++ macos objective-c

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

在Windows世界中,我来自哪里,我已经使用DirectShow编写了这样的虚拟相机.现在我在OSX世界中寻找类似的解决方案.

gav*_*inb 9

这在某种程度上取决于您希望与之接口的应用程序.如果它是一个老式的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.