列出所有 ALSA 设备

tim*_*b89 6 linux java pulse-audio alsa

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

我的最终目标是解析 Java 应用程序中的输出并最终将其传递给 FFmpeg。当出现 2 个通用的“捕获源端口”时,我能够通过 Java 音频 API 告诉设备存在,但它没有提供设备的名称,目标是让用户可以在有点友好的态度。

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

提前致谢!

Nik*_*nko 7

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

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

通过在“.monitor”上附加 grep,您只能获取监视设备。


dem*_*hog 5

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

aplay -l
Run Code Online (Sandbox Code Playgroud)

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

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


Hen*_*aak 5

这非常简单:

这显示了接收器/输出端口:

aplay -L
Run Code Online (Sandbox Code Playgroud)

由于“监视器”是源/输入端口,因此您需要这样:

arecord -L
Run Code Online (Sandbox Code Playgroud)

更新:aplay 和 arecord 位于“alsa-utils”包中。安装:

sudo apt install alsa-utils
Run Code Online (Sandbox Code Playgroud)