我在系统上使用 PulseAudio,并按照说明添加了监控设备根据 PulseAudio wiki。监视器设备本身可以在 Audacity 等应用程序中正常工作和注册/运行,但我无法通过任何命令行工具让设备显示自己。aplay -L
返回的列表与 Audacity 大致相同,但恰好缺少监视器设备。
我的最终目标是在 Java 应用程序中解析输出并最终将其传递给 FFmpeg。我能够通过 Java 音频 API 判断该设备的存在,因为出现了 2 个通用的“捕获源端口”,但它没有提供该设备的名称,目标是让用户以某种友好的方式进行选择。
有什么方法可以让监视器设备显示在命令行应用程序或通过 Java API/库中?
提前致谢!
答案1
使用pacmd list-sources
或pactl 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