【发布时间】:2021-06-03 14:40:57
【问题描述】:
过去几天我一直在使用 CoreAudio,我能够访问所有 AudioDevices、它们的属性并在发生变化时接收通知。但是,我现在正在努力从 mac 中的任何应用程序“拦截”音频(最好是在播放之前)。我不确定这是否可能,但this app 确实做到了。 所以我正在寻找一些指导。提前谢谢你。
【问题讨论】:
标签: macos core-audio
过去几天我一直在使用 CoreAudio,我能够访问所有 AudioDevices、它们的属性并在发生变化时接收通知。但是,我现在正在努力从 mac 中的任何应用程序“拦截”音频(最好是在播放之前)。我不确定这是否可能,但this app 确实做到了。 所以我正在寻找一些指导。提前谢谢你。
【问题讨论】:
标签: macos core-audio
不幸的是,macOS 没有提供执行此操作的功能。
实现这一点的唯一方法是修补较低级别的框架和/或驱动程序,例如 Audio Hijack。我将是一个混乱的过程。
但根据使用情况,拥有一个音频环回虚拟音频设备可能就足够了,这样应用程序 A 可以将音频发送到其中,而应用程序 B 可以从中接收音频。这可以通过创建 Core Audio AudioServerPlugin 来完成,它是一种用户空间音频驱动机制。例如,请查看:
https://github.com/ExistentialAudio/BlackHole
https://github.com/kyleneideck/BackgroundMusic
关于限制,您可以在此处阅读更多信息:
https://stackoverflow.com/a/18595698/2576876
您可以从那里通过提供的链接前往很多方向。
【讨论】: