MAC OS上的摄像头设备

时间:2015-11-06 17:36:57

标签: avfoundation iokit core-media

插入网络摄像头后,我可以在MAC OS应用中操作视频/音频流。 现在我想把它作为一个新的虚拟视频/音频设备输出,我可以在像" Skype"等应用中选择作为相机输入。或QuickTime。

我已查看了i / o工具包框架,参考网页上写道:

  

"要为您的软件添加数字视频功能,请使用QuickTime   API和#34;

我认为这需要更新,因为QuickTime API已被CoreMedia IO取代。

所以我查看了CoreMediaIO,发现了一个来自Apple开发网站的示例代码,该代码也已经过时,并且不能在XCode 7.x上使用OS Yosemite +运行。

我也看过AVFoundation,但这似乎是一个死胡同。

我此时已经迷路了。我知道,因为CamTwist软件正在这样做,所以它是可行的。

任何人都知道如何处理这个问题?

2 个答案:

答案 0 :(得分:1)

CoreMediaIO绝对是最佳选择,因为苹果目前在其硬件中使用的是这样。在我的系统(2015 rMBP)上,/Library/CoreMediaIO/Plug-Ins/DAL/包含AppleCamera.pluginiOSScreenCapture.plugin,用于网络摄像头和从iDevice捕获。

我认为你引用的例子是this one

它没有完全开箱即用的编译,但我最终使用OSX 10.11 SDK进行构建。你需要Apple的Core Audio Utility Classes,指出来源/额外/ CoreAudio / PublicUtility'在那些Xcode项目中组,然后修复变量初始化(删除它抱怨私有构造函数的= NULL)并在SamplePrefix.h中注释掉几行。我没有经营它,但我认为没有理由不这样做。如果您没有kext签名证书,则可能需要采取措施加载未签名的kexts以运行该示例。

答案 1 :(得分:1)

您的网络摄像头是否使用旧的视频数字转换器驱动程序(驱动程序.component文件位于/ Library / QuickTime中)?我能够在QuickTime播放器中看到我的UVC相机和DAL相机。我的理解是,用AVFoundation编写的应用程序不会重新识别旧的vdig驱动程序。相反,使用Sequence Grabber(非常旧)/ QTCapture(旧)编写的应用程序将识别您的设备。

希望这有帮助。