我想建立我的第一个音频项目。我想用 OpenGL 创建一个可视化工具。相信我,我已经做出了许多独特的设计,看起来很棒。
我想从pulseaudio获取输出,然后对其进行FFT,然后根据它绘制模式。但是我不明白第一点,如何抓取pulseaudio输出?
像 simplescreenrecorder 和 cli-visualizer 程序员这样的程序是完美运行的两个实例。
谁能建议我如何从pulseaudio获取原始输出来做FFT?
我想建立我的第一个音频项目。我想用 OpenGL 创建一个可视化工具。相信我,我已经做出了许多独特的设计,看起来很棒。
我想从pulseaudio获取输出,然后对其进行FFT,然后根据它绘制模式。但是我不明白第一点,如何抓取pulseaudio输出?
像 simplescreenrecorder 和 cli-visualizer 程序员这样的程序是完美运行的两个实例。
谁能建议我如何从pulseaudio获取原始输出来做FFT?
您不会“获取” Pulseaudio 输出。
pavucontrol
对标签功率电平表做同样的事情output
:连接到接收.monitor
器的输入,从中读取声音数据,以任何你喜欢的方式可视化。根据需要做尽可能多的水槽。的源代码
pavucontrol
应该足以让您入门。在 dirkt 的回答之上,我编写了一个小程序,它抓取 PulseAudio 的默认接收器并将原始 PCM 数据写入文件。假设您有一个 PulseAudio 客户端启动并运行,您需要先请求 PA 服务器信息:
服务器信息结构保存默认接收器名称。那是通往声卡的“音频去处”。正如 dirkt 所说,我们可以连接
sink_name.monitor
到收听所述接收器。为此,首先创建一个新流,然后设置回调,最后连接它进行录制。
在读取回调中,数据可通过
pa_stream_peek()
. 请务必参考pa_stream_peek() 文档以了解何时进行pa_stream_drop()
偷看!在编写这个程序时,我发现PulseAudio API 文档非常有用并且写得很好。