列出所有 ALSA 设备

列出所有 ALSA 设备

我在系统上使用 PulseAudio,并按照说明添加了监控设备根据 PulseAudio wiki。监视器设备本身可以在 Audacity 等应用程序中正常工作和注册/运行,但我无法通过任何命令行工具让设备显示自己。aplay -L返回的列表与 Audacity 大致相同,但恰好缺少监视器设备。

我的最终目标是在 Java 应用程序中解析输出并最终将其传递给 FFmpeg。我能够通过 Java 音频 API 判断该设备的存在,因为出现了 2 个通用的“捕获源端口”,但它没有提供该设备的名称,目标是让用户以某种友好的方式进行选择。

有什么方法可以让监视器设备显示在命令行应用程序或通过 Java API/库中?

提前致谢!

答案1

使用pacmd list-sourcespactl list命令显示 PulseAudio 设备。要仅显示名称,您可以在其输出中进行 grep。这是来自PulseAudio 常见问题解答

$ LANG=C pactl list | grep -A2 'Source #' | grep 'Name: ' | cut -d" " -f2

通过在“ .monitor”上添加 grep 您只能获得监视设备。

答案2

简而言之,问题似乎出在 alsa 级别,而不是 pulseaudio 级别?如果您想查看 alsa 设备,请尝试一下。

aplay -l

(但您已经提到的 aplay -L 是类似的)。

pulseaudio 位于 alsa 之上。因此,查看 pactl 会带来另一层软件……请参阅此处 troubleshooters.com/linux/sound/sound_troubleshooting.htm。如果 alsa 看不到声音设备,那么 pulseaudio 肯定也看不到?

答案3

它非常简单:

这将向您显示接收器/输出端口:

aplay -L

由于“监视器”是源/输入端口,因此您需要以下内容:

arecord -L

更新:aplay 和 arecord 位于 'alsa-utils' 包中。安装方法:

sudo apt install alsa-utils

相关内容