拦截 Mac os 中的所有系统级音频

Intercepting all system level audio in Mac os

过去几天我一直在使用 CoreAudio,我能够访问所有 AudioDevices、它们的属性并在发生变化时接收通知。但是,我现在正在努力从 mac 中的任何应用程序“拦截”音频(最好是在播放之前)。我不确定这是否可能,但 this app 确实做到了。 所以我正在寻找一些指导。提前谢谢你。

不幸的是,macOS 没有提供执行此操作的工具。

实现此目的的唯一方法是像 Audio Hijack 那样修补较低级别的框架 and/or 驱动程序。我会是一个凌乱的过程。

然而,根据用例,拥有一个音频环回虚拟音频设备可能就足够了,这样应用程序 A 可以将音频发送到其中,而应用程序 B 可以从中接收音频。这可以通过创建一个核心音频 AudioServerPlugin 来完成,它是一个用户 space 音频驱动机制。有关示例,请查看:

https://github.com/ExistentialAudio/BlackHole
https://github.com/kyleneideck/BackgroundMusic

关于限制,您可以在这里阅读更多相关信息:

从那里您可以通过提供的链接进入很多方向。