我如何在Java或C中监控/采样输出音频
How can I monitor/sample output audio in Java or C?
最近我一直在尝试对我在电脑上播放的音频进行实时可视化(通过任何任意程序,如Spotify),但我一直在使用SoundFlower将输出音频输入到假行中。
我想知道的是,如果有一种方法是原生的C/c++或Java,这将允许我捕捉任何音频发送到我的计算机(我使用Mac)行在一个类似的方式,我如何捕获一行(即一个样本缓冲区,不断充满PCM数据)。
我不想模仿SoundFlower的其他功能,除了读取行输出数据。
我建议看一下WavTap的源代码,它是SoundFlower的一个分支,它只专注于捕获系统的默认音频输出。
SoundFlower和WavTap都是通过安装一个内核扩展来工作的,它增加了一个额外的音频设备,音频可以路由到这个设备。然后他们从这个设备上捕捉音频。当它启动时,WavTap将此设置为默认设备,以便自动捕获系统的整体输出,而无需用户显式设置路由。
我相信WavTap代码是麻省理工学院许可的,系统扩展代码是很好的抽象,所以你应该能够适应它为你自己的项目。
为了更好地理解它是如何工作的,OS X和iOS内核编程书中有对第12章中一些技术的解释,以及一个示例音频设备和引擎的可下载代码。
相关文章:
- 如何监控QThread
- 如何用RISC-V GD32VF103CBT6开发板卸载精确的ADC过采样
- 如何使用采样器立方体作为数组
- 多重采样背景不显示
- 如何从wav文件中获取采样率?
- 如何对0,1,..中的k个随机数进行采样..,n-1,而不缓存到数组
- 如何监控ZeroMQ服务器是否存在
- 如何在直接 x12 上使用多重采样
- 为什么当我选择>250000个采样点时,程序不起作用?
- 点云下采样和使用 PCL 进行正态估计
- 片段着色器中的"错误:在 GLSL 1.30 及更高版本中禁止使用非常量表达式索引的采样器数组"
- 在glTexImage2D中,当我选择与在着色器中采样不同的内部格式时,情况如何?
- 如何监控Android和iOS上的所有击键操作,如Windows键盘记录器
- open62541:同时获取订阅的所有已更改监控项
- 使用哪个 pcl 滤波器对点云进行下采样
- 使用膨胀卷积的语义分割中的上采样
- 为什么找不到这个统一采样器2D?
- 如何监控Qt信号事件队列深度
- 如何在保持最小距离的同时沿有限线随机采样
- 我如何在Java或C中监控/采样输出音频