繁体   English   中英

如何在Java或C中监视/采样输出音频?

[英]How can I monitor/sample output audio in Java or C?

最近我一直在试验我在计算机上播放的音频的实时可视化(通过任何任意程序,如Spotify),但我一直在使用SoundFlower将输出音频输入到假行中。

我想知道的是,如果有一种C / C ++或Java原生的方式,它将允许我捕获发送到我的计算机的任何音频(我正在使用Mac),以类似于我的方式可以捕获一行(IE是一个连续填充PCM数据的样本缓冲区)。

除了读取输出数据外,我不想模仿SoundFlower的其他功能。

我建议看看WavTap的源代码,它是SoundFlower的一个分支,它只关注捕获系统的默认音频输出。

SoundFlower和WavTap都通过安装内核扩展来工作 ,该扩展添加了一个可以路由音频的附加音频设备。 然后,他们从此设备捕获音频。 WavTap在启动时将其设置默认设备,以便自动捕获系统的整体输出,而无需用户明确设置路由。

我相信WavTap代码是MIT许可的,系统扩展代码很好地抽象,所以你应该能够适应你自己的项目。

为了更多地了解它是如何工作的, OS X和iOS内核编程手册对第12章中的一些技术以及示例音频设备和引擎的可下载代码进行了解释。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM