我想为视频聊天编写自己的相机滤镜,并在任何/所有流行的视频聊天应用程序(Zoom,Hangouts,Skype等)中应用它们。我想象中的工作方式是编写一个 macOS 应用程序,读取相机源,应用我的滤镜,并公开一个额外的虚拟相机。然后,在任何视频聊天应用程序中都可以选择这个虚拟相机。
我已经花费了很多时间研究如何做到这一点,但我仍然不清楚是否可以使用现代 macOS API 实现。StackOverflow 上有一些类似的问题(例如 here,here),但它们要么没有答案,要么非常古老。我希望这个问题能够收集到2020年如何实现这一点的建议/链接/想法。
以下是我目前的进展:
在直播流社区中有一个受欢迎的工具叫做OBS Studio。它可以捕获来自不同来源(相机、桌面等)的输入,有一个插件系统用于应用效果,然后将输出流传输到流行的服务(例如Twitch)。但是,在macOS上没有将流作为虚拟相机公开的功能。在讨论(线程,线程)中,人们谈论了一个名为Syphon和一个名为CamTwist的工具。
不幸的是,Syphon不再公开虚拟相机: “SyphonInject在macOS 10.14(Mojave)中不再起作用。苹果关闭了允许全局目录中的脚本添加加载到任何进程中的漏洞。尝试注入任何进程将默默失败。如果禁用SIP,则会起作用,但这是一个可怕的想法,我不会建议或帮助任何人这样做。”
幸运的是,CamTwist可以使用。我在我的macOS Catalina上运行它,在我的相机流上应用了一些内置效果,并在我的Hangouts设置中看到它显示为一个新的相机(在重新启动Chrome之后)。这很令人鼓舞。
不幸的是,CamTwist相当老旧且未得到良好维护。它使用Quartz Composer实现效果,但是Quartz Composer已被苹果弃用,在Catalina中可能是它的最后时刻。
macOS SDK曾经有一个名为CoreMediaIO的API,这可能是公开虚拟相机的方法,但是该API也已被弃用。目前不清楚是否存在现代替代方案。
我想问这个问题的另一种方式是:CamTwist是如何实现的,它为什么仍然可以在macOS Catalina中工作,以及您将如何在2020年实现相同的功能?
我已经花费了很多时间研究如何做到这一点,但我仍然不清楚是否可以使用现代 macOS API 实现。StackOverflow 上有一些类似的问题(例如 here,here),但它们要么没有答案,要么非常古老。我希望这个问题能够收集到2020年如何实现这一点的建议/链接/想法。
以下是我目前的进展:
在直播流社区中有一个受欢迎的工具叫做OBS Studio。它可以捕获来自不同来源(相机、桌面等)的输入,有一个插件系统用于应用效果,然后将输出流传输到流行的服务(例如Twitch)。但是,在macOS上没有将流作为虚拟相机公开的功能。在讨论(线程,线程)中,人们谈论了一个名为Syphon和一个名为CamTwist的工具。
不幸的是,Syphon不再公开虚拟相机: “SyphonInject在macOS 10.14(Mojave)中不再起作用。苹果关闭了允许全局目录中的脚本添加加载到任何进程中的漏洞。尝试注入任何进程将默默失败。如果禁用SIP,则会起作用,但这是一个可怕的想法,我不会建议或帮助任何人这样做。”
幸运的是,CamTwist可以使用。我在我的macOS Catalina上运行它,在我的相机流上应用了一些内置效果,并在我的Hangouts设置中看到它显示为一个新的相机(在重新启动Chrome之后)。这很令人鼓舞。
不幸的是,CamTwist相当老旧且未得到良好维护。它使用Quartz Composer实现效果,但是Quartz Composer已被苹果弃用,在Catalina中可能是它的最后时刻。
macOS SDK曾经有一个名为CoreMediaIO的API,这可能是公开虚拟相机的方法,但是该API也已被弃用。目前不清楚是否存在现代替代方案。
我想问这个问题的另一种方式是:CamTwist是如何实现的,它为什么仍然可以在macOS Catalina中工作,以及您将如何在2020年实现相同的功能?
任何能够解释这一切的信息都将不胜感激!
/Library/CoreMediaIO/Plug-Ins/DAL/
,其中包含虚拟相机的.plugin
文件,例如SnapCamera.plugin
。 - twe4ked