2016-10-21 1 views
1

간단한 스튜디오 녹음 응용 프로그램을 만들려고합니다. 여러 개의 사운드 입력 장치가 있고 동시에 모두 녹음하려고합니다.실제 오디오 입력 채널 목록을 찾는 방법은 무엇입니까?

실제 오디오 입력을 모두 검색하려면 어떻게합니까?

>>> 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) 

내가 실제 장치에만 관심, 실제 : 나는 sounddevice.query_devices()를 사용하는 경우

, 나는 가상 장치 많은 및 데이터가없는 가상 입력 채널, 많이 얻을 입력 채널. 에 펄스 오디오, 또는 PortAudio를 쿼리 중 하나 방법이 있나요

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

:

나는 pacmd 마이크 장치를 조회 한 후 list-sources 나는 장치가 모노 경우에도, 가짜 스테레오를 제공하는 두 개의 채널을 얻을 때 입력 채널을 사용 하시겠습니까? 그리고 그들의 매개 변수 (그래서 내가 샘플 속도 등 선택할 수)

+0

PortAudio로는 가능하지 않다고 생각합니다. 장치 이름에'(hw : X, Y)'를 스캔하려고 할 수도 있지만,보고자하는 장치와 정확히 일치하는지 확실하지 않습니다. – Matthias

+0

감사! 쉽게 만들 수있는 다른 API가 있는지 궁금합니다. –

+0

PulseAudio에서 가능하다는 것을 알았습니다. –

답변

1

PulseAudio에서 가능한 더 복잡한 일을하는 것이 가장 좋은 것 같습니다. 여기에 example program에 대한 링크가 있습니다. 불행하게도 그것은 하나하는 데 필요한 복잡한 API입니다 :

  1. 먼저 pa_mainloop_newpa_mainloop_get_api와 이벤트 루프를 초기화가.
  2. pa_context_new, pa_context_connectpa_context_set_state_callback으로 새 컨텍스트를 만듭니다.
  3. 컨텍스트 콜백에서 컨텍스트 초기화를 인식하고 열거 (pa_context_get_source_info_list 또는 pa_context_get_sink_info_list)를 시작합니다.
  4. 열거 자체는 콜백으로 수행됩니다.

운 좋게도 모든 주요 플랫폼 (Linux 및 MacOS X 사용)에서 지원되는 것 같습니다. 인터페이스의 범위가 주어지면 필자는 향후 모든 오디오 프로젝트에 PulseAudio를 계속 사용할 것입니다.

관련 문제