我想要獲取我的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在查詢驅動程序時會提取這些音頻設備。
我不想列出所有這些名稱供用戶選擇。我想列出類似 -
HDA-Intel
USB-Audio
從哪些用戶,然后選擇自己想要的聲卡..
有什么辦法這可以用Qt做什么?如果不是,我真的很想知道在這里可以使用什么其他替代方案。