我想为视频聊天编写自己的相机过滤器,并理想地将它们应用于任何/所有流行的视频聊天应用程序(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 中仍然有效,以及您将如何在 …
macos video-capture video-processing video-conversion macos-catalina
在 Google Colab 笔记本中,我正在构建一个 matplotlib 动画并将其显示为 HTML5 视频。我的脚本的最后几行是:
# ...
anim = animation.ArtistAnimation(plt.gcf(), frames,
interval=250, blit=True, repeat=False)
HTML(anim.to_html5_video())
Run Code Online (Sandbox Code Playgroud)
视频看起来不错,但随后我得到了视频下方显示的另一幅绘图图像(显示与视频最后一帧相同的内容)。如果我plt.close()最后调用,则情节和视频都不会显示。如何在不显示剧情的情况下显示视频?