【问题标题】:Camera device on MAC OSMAC OS 上的摄像头设备
【发布时间】:2015-11-06 17:36:57
【问题描述】:

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

我研究了 i/o kit 框架,参考网页是这样说的:

“要为您的软件添加数字视频功能,请使用 QuickTime API。”

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

所以我查看了 CoreMediaIO 并从 Apple 开发网站上找到了一个示例代码,该代码也已过时,无法在带有 OS Yosemite+ 的 XCode 7.x 上运行。

我也查看了 AVFoundation,但它似乎是一个死胡同。

我现在迷路了。我知道这是可行的,因为 CamTwist 软件正在这样做。

有人知道如何解决这个问题吗?

【问题讨论】:

    标签: macos avfoundation iokit core-media


    【解决方案1】:

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

    我假设你提到的例子是this one?

    它并不能完全开箱即用,但我最终还是用 OSX 10.11 SDK 构建了它。您需要 Apple 的 Core Audio Utility Classes,将 Xcode 项目中的“Sources/Extras/CoreAudio/PublicUtility”组指向那些,然后修复变量初始化(删除抱怨私有构造函数的 = NULL)并注释掉SamplePrefix.h 中的几行。我没有运行它,但我看不出它为什么不运行的原因。如果您没有 kext 签名证书,您可能需要采取措施加载未签名的 kext 以运行示例。

    【讨论】:

      【解决方案2】:

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

      希望这会有所帮助。

      【讨论】:

      • 我正在使用内置的 iMac 2015 摄像头。不确定它是否使用旧驱动程序。我什至不知道如何检查 tbh。
      猜你喜欢
      • 2011-05-30
      • 2011-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-14
      • 2015-03-10
      • 1970-01-01
      相关资源
      最近更新 更多