Linux获取音频设备列表

我想要获取我的Linux系统上可用的所有音频设备的列表。然后我会将这个列表显示在一个组合框中,用户将从中选择用于录制/播放的设备。根据用户的选择,我将构建QAudioInput和QAudioOutput进行录制/播放。Qt:获取Linux中可用音频设备的列表

根据Qt文档,这可以通过使用QAudioDeviceInfo::availableDevices静态方法来完成。此方法返回我系统中所有可用音频设备的列表。

我已经使用这种方法来列出音频设备的数量。这个方法应该返回一个只包含两个元素的列表,因为我的系统中安装了两个声卡(一个在主板上,另一个是USB设备)。但它返回了一个包含23个项目的列表。当我访问他们的名字,我得到了类似下面 -

default

pulse

front:CARD=Intel,DEV=0

surround40:CARD=Intel,DEV=0

surround41:CARD=Intel,DEV=0

surround50:CARD=Intel,DEV=0

surround51:CARD=Intel,DEV=0

surround71:CARD=Intel,DEV=0

dmix:CARD=Intel,DEV=0

dsnoop:CARD=Intel,DEV=0

hw:CARD=Intel,DEV=0

plughw:CARD=Intel,DEV=0

front:CARD=default,DEV=0

surround40:CARD=default,DEV=0

surround41:CARD=default,DEV=0

surround50:CARD=default,DEV=0

surround51:CARD=default,DEV=0

surround71:CARD=default,DEV=0

iec958:CARD=default,DEV=0

dmix:CARD=default,DEV=0

dsnoop:CARD=default,DEV=0

hw:CARD=default,DEV=0

plughw:CARD=default,DEV=0

这背后的原因可能是在后端使用的ALSA API。根据this article ALSA逻辑上将声卡划分为多个逻辑音频设备,Qt API在查询驱动程序时会提取这些音频设备,对应的aplay -L的指令。而aplay -l对应的指令会列出声卡及其对应的设备,这应该是我理想的结果。

我不想列出所有这些名称供用户选择。我想列出类似 -

HDA-Intel

USB-Audio

选择自己想要的声卡..

有什么办法这可以用Qt做什么?如果不是,我真的很想知道在这里可以使用什么其他替代方案。

可以使用命令或代码,获取音频设备,参考以下文章
linux 查看声卡设备并测试录音 (ALSA 音频工具)_小飞要加油啊的博客-CSDN博客_linux查看声卡
Linux下使用alsa-lib库完成音频开发: 实现放音和录音(从声卡获取PCM数据保存、向声卡写PCM数据输出)_DS小龙哥的博客-CSDN博客_linux播放pcm

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^