【问题标题】:How to expose a virtual camera on macOS?如何在 macOS 上暴露虚拟相机?
【发布时间】:2020-07-21 14:22:46
【问题描述】:

我想为视频聊天编写自己的相机过滤器,并理想地将它们应用于任何/所有流行的视频聊天应用程序(Zoom、Hangouts、Skype 等)。我想象这个工作的方式是编写一个 macOS 应用程序来读取相机源,应用我的过滤器,并公开一个额外的虚拟相机。然后可以在任何视频聊天应用程序中选择此虚拟相机。

我花了很多时间研究如何做到这一点,但我仍然不清楚现代 macOS API 是否可以做到这一点。 StackOverflow 上有一些类似的问题(例如herehere),但它们要么没有答案,要么很老。我希望这个问题能收集到正确方向的建议/链接/想法,以便在 2020 年之前做到这一点。

这是我目前得到的:

  • 直播社区中有一个流行的工具,叫做 OBS Studio。它捕获来自不同来源(相机、桌面等)的输入,具有用于应用效果的插件系统,然后将输出流式传输到流行的服务(例如 Twitch)。但是,在 macOS 上没有将流公开为虚拟相机的功能。在讨论这个问题时(threadthread),人们谈到了一个叫做 Siphon 的工具和一个叫做 CamTwist 的工具。

  • 不幸的是,Siphon 没有公开虚拟摄像头 anymore:“SyphonInject 在 macOS 10.14 (Mojave) 中不再起作用。Apple 关闭了允许在全局目录中添加脚本以加载到任何进程中的漏洞。尝试注入任何进程都会静默失败。如果禁用 SIP,它将起作用,但这是一个糟糕的主意,我不会建议或帮助任何人这样做。”

  • 幸运的是,CamTwist 有效。我让它在我的 macOS Catalina 上运行,在我的相机流上应用了它的一些内置效果,并看到它在我的环聊设置中显示为一个新相机(在restarting Chrome 之后)。这令人鼓舞。

  • 不幸的是,CamTwist 相当陈旧且维护不善。它使用 Quartz Composer 来实现效果,但 Quartz Composer 是 Apple 的 deprecated,它可能在 Catalina 中过着最后的日子。

  • macOS SDK 曾经有一个名为 CoreMediaIO 的 API,这可能是公开虚拟相机的方式,但该 API 也已被弃用。这是not clear 如果/什么是现代替代品。

  • 我想问这个问题的另一种方式是:CamTwist 是如何实现的,它为什么在 macOS Catalina 中仍然有效,以及您将如何在 2020 年实现同样的东西?

任何对这一切有所启发的东西都将受到高度赞赏!

【问题讨论】:

  • fwiw 在过去一周左右我一直在使用 OBS + CamTwist,因为我得到了一个 mac。它适用于缩放/等。直到今天(几个小时前)我安装了一个新的 osx 更新并且它坏了:|编辑:实际上,它似乎只在缩放时破裂。一定是今天的新缩放更新。其他都很好:)
  • edit:看起来它适用于 google meet 并返回 OBS,但它没有出现在 photobooth 中。可能是 osx api 问题

标签: macos video-processing video-capture macos-catalina video-conversion


【解决方案1】:

我还想创建自己的相机滤镜,例如 Snap Camera。 所以我围绕 CoreMediaIO 和 Syphon 进行了研究。 你检查过这个 Github 项目吗? https://github.com/lvsti/CoreMediaIO-DAL-Example

此存储库最初是 Apple 官方 CoreMediaIO 示例代码的一个分支。 你知道,自 2012 年上次更新以来,原始代码并没有很好地老化。 因此,存储库的所有者进行了更改,使其可以在现代系统上编译。

并且您可以知道代码在 macOS 10.14 (Mojave) 中运行以查看以下问题。 https://github.com/lvsti/CoreMediaIO-DAL-Example/issues/4

实际上我还没有创建相机滤镜,因为我不知道如何将图像发送到由 CoreMediaIO 构建的虚拟相机。 我想了解更多信息。如果你知道请告诉我。

【讨论】:

【解决方案2】:

CamTwist 使用 CoreMedioIO。是什么让您认为它已被弃用?查看 10.15 SDK 中的标头,我看不到它已被弃用的迹象。直到 10.14 才有更新。

【讨论】:

  • 这个developer page 说“这个文档不再被更新”,我在最新的文档中找不到对应的。此外,谷歌搜索“CoreMediaIO”显示了关于示例代码被破坏和其他混乱的讨论(来自 SO 和其他论坛)。如果CoreMediaIO是要走的路,有没有学习如何使用它的好地方?谢谢!
  • 文档归档令人困惑。 Apple 改变了他们的文档样式,并使用旧样式归档了所有文档,无论其内容是否仍然相关。标题是确定的。我不确定示例代码不起作用。 [您链接到的问题](stackoverflow.com/questions/56157333/…) 已经自我回答,发帖人发现了问题并让事情正常进行,所以就是这样。此外,正如我所说,您报告的 CamTwist 使用 CoreMediaIO。
猜你喜欢
  • 1970-01-01
  • 2011-09-13
  • 2021-02-26
  • 1970-01-01
  • 2018-03-23
  • 1970-01-01
  • 2020-11-09
  • 2020-02-11
  • 2020-05-18
相关资源
最近更新 更多