如何在 macOS 上公开虚拟相机?

use*_*184 17 macos video-capture video-processing video-conversion macos-catalina

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

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

这是我到目前为止所得到的:

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

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

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

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

  • macOS SDK 曾经有一个名为CoreMediaIO的 API ,这可能是暴露虚拟相机的方式,但此 API 也已弃用。目前尚不清楚/什么是现代替代方案。

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

任何对所有这些有所了解的东西都将受到高度赞赏!

Ken*_*ses 0

CamTwist 使用 CoreMedioIO。是什么让您认为它已被弃用?查看 10.15 SDK 中的标头,我没有看到任何迹象表明它已被弃用。最近10.14有更新。