Я хочу получить список всех аудиоустройств, которые доступны в моей системе Linux. Затем я покажу этот список в поле со списком, из которого пользователь выберет устройство для записи / воспроизведения. Основываясь на выборе пользователя, я построю QAudioInput и QAudioOutput для записи / воспроизведения.
В соответствии с документацией 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 , который используется в серверной части. Согласно этой статье ALSA логически разбивает звуковую карту на несколько логических аудиоустройств, которые выбираются Qt API при запросе драйвера.
Я не хочу перечислять все эти имена для выбора пользователем. Я хочу перечислить что-то вроде -
HDA-Intel
USB-Audio
, из которого пользователи затем выбирают желаемую звуковую карту.
Есть ли способ сделать это с помощью Qt? Если это не так, я действительно хотел бы знать, какие другие альтернативы могут быть использованы здесь.