程序化ALSA环回

时间:2018-03-28 23:15:04

标签: c audio loopback libalsa

我需要一些指示从哪里开始:

从使用ALSA播放音频的任何应用程序到连接的扬声器我都想抓取样本并进行一些音频处理。 我无法控制播放器,我希望能够处理来自任何来源的音频。基本上它将是一个紫外线仪表,可能稍后使用FFT(所有这些都在命令行上)。另外,我希望我的应用程序是自包含的。

在我的研究中,我发现:

  • 有一个环回内核模块。
  • 您可以使用配置文件做一些奇特的事情。
  • 可以创建插件。

使用内核模块并更改配置文件会将我的应用程序的某些依赖关系引入系统配置中 并创建一个插件我放弃了对应用程序的控制,并且无论何时我都无法启动/终止它。

这对我来说并不令人满意,所以我想知道是否有办法:

  • 以编程方式创建环回设备
  • 还是有其他方法可以从其他应用程序正在写入的pcm播放设备中读取。

1 个答案:

答案 0 :(得分:1)

您可以在Linux上使用pulseaudio,在其中可以非常容易地创建回送设备。有一个pactl命令-它可以帮助您创建一个空接收器,并且可以从中回送。

像这样的东西 //这将创建一个具有指定通道conf的空接收器

pactl load-module module-null-sink sink_name=sink6ch format=s16le rate=48000 channels=6 channel_map=front-left,front-right,front-center,lfe,rear-left,rear-right

//设为默认

pactl set-default-sink sink6ch

您可以使用其监视设备来阅读有关脉冲音频的监视设备