Как узнать список физических входных аудиоканалов?

Я пытаюсь сделать простое приложение для студийной записи. У меня есть несколько устройств ввода звука, и я хочу записывать их все одновременно.

Как мне обнаружить все физические аудиовходы?

Когда я использую sounddevice.query_devices(), я получаю много виртуальных устройств и много виртуальных входных каналов, которые не содержат данных:

>>> sd.query_devices()

  0 HDA Intel PCH: HDMI 0 (hw:0,3), ALSA (0 in, 8 out)
  1 HDA Intel PCH: HDMI 1 (hw:0,7), ALSA (0 in, 8 out)
  2 HDA Intel PCH: HDMI 2 (hw:0,8), ALSA (0 in, 8 out)
  3 hdmi, ALSA (0 in, 8 out)
  4 pulse, ALSA (32 in, 32 out)
* 5 default, ALSA (32 in, 32 out)
  6 /dev/dsp, OSS (16 in, 16 out)

Меня интересуют только реальные устройства и реальные каналы ввода.

Когда я запрашиваю микрофонные устройства с помощью pacmd, а затем list-sources, я получаю два канала, дающие поддельное стерео, даже если устройство моно:

$ pacmd
>>> list-sources
...
    channel map: front-left,front-right
                 Stereo

Есть ли способ запросить PulseAudio или PortAudio для получения физических входных каналов? И их параметры (чтобы я мог выбрать частоту дискретизации и т. Д.)


person Michal Gajda    schedule 21.10.2016    source источник
comment
Я не думаю, что это возможно с PortAudio. Вы можете попытаться найти (hw:X,Y) в имени устройства, но я не уверен, что это точно соответствует устройствам, которые вы хотели бы видеть.   -  person Matthias    schedule 21.10.2016
comment
Спасибо! Интересно, есть ли какой-нибудь другой API, который упростил бы это?   -  person Michal Gajda    schedule 26.11.2016
comment
Я обнаружил, что это возможно в PulseAudio.   -  person Michal Gajda    schedule 07.11.2017


Ответы (1)