我想要获取我的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做什么?如果不是,我真的很想知道在这里可以使用什么其他替代方案。