snd_pcm_open에 "default" 외에 어떤 장치 이름을 제공해야 합니까?

snd_pcm_open에 "default" 외에 어떤 장치 이름을 제공해야 합니까?

두 장치의 사운드를 동시에 녹음하고 싶습니다.

  • 내장 마이크
  • 외부 USB 웹캠 마이크

사운드 컨트롤러를 사용하여 pulseaudio이러한 장치를 기본값으로 설정하고 사운드를 녹음할 수 있는 기능을 갖게 되었습니다 snd_pcm_open(&handle, "default", SND_PCM_STREAM_CAPTURE, 0).

하지만 이제 두 장치의 사운드를 동시에 녹음하고 싶기 때문에 언급된 이름 지정 구성표를 선택해야 합니다.여기. 그러나 나는 그들 중 몇몇에서는 성공하지 못했습니다.

제 생각에는이것그러면 내 문제가 해결되지만 front:CARD=U0x46d0x825,DEV=0장치 이름으로는 도움이 되지 않습니다.

다음과 같은 오류가 발생합니다.

ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM
ALSA lib pcm_hw.c:1667:(_snd_pcm_hw_open) Invalid value for card

arecord -l나에게주세요:

# arecord -l
**** List of CAPTURE Hardware Devices ****
Home directory not accessible: Permission denied
card 0: PCH [HDA Intel PCH], device 0: ALC662 rev1 Analog [ALC662 rev1 Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 2: ALC662 rev1 Alt Analog [ALC662 rev1 Alt Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: U0x46d0x825 [USB Device 0x46d:0x825], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

그리고 # arecord -L다음을 제공합니다:

# arecord -L
null
    Discard all samples (playback) or generate zero samples (capture)
pulse
    PulseAudio Sound Server
default:CARD=PCH
    HDA Intel PCH, ALC662 rev1 Analog
    Default Audio Device
sysdefault:CARD=PCH
    HDA Intel PCH, ALC662 rev1 Analog
    Default Audio Device
front:CARD=PCH,DEV=0
    HDA Intel PCH, ALC662 rev1 Analog
    Front speakers
surround40:CARD=PCH,DEV=0
    HDA Intel PCH, ALC662 rev1 Analog
    4.0 Surround output to Front and Rear speakers
surround41:CARD=PCH,DEV=0
    HDA Intel PCH, ALC662 rev1 Analog
    4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=PCH,DEV=0
    HDA Intel PCH, ALC662 rev1 Analog
    5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=PCH,DEV=0
    HDA Intel PCH, ALC662 rev1 Analog
    5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=PCH,DEV=0
    HDA Intel PCH, ALC662 rev1 Analog
    7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
dmix:CARD=PCH,DEV=0
    HDA Intel PCH, ALC662 rev1 Analog
    Direct sample mixing device
dmix:CARD=PCH,DEV=2
    HDA Intel PCH, ALC662 rev1 Alt Analog
    Direct sample mixing device
dsnoop:CARD=PCH,DEV=0
    HDA Intel PCH, ALC662 rev1 Analog
    Direct sample snooping device
dsnoop:CARD=PCH,DEV=2
    HDA Intel PCH, ALC662 rev1 Alt Analog
    Direct sample snooping device
hw:CARD=PCH,DEV=0
    HDA Intel PCH, ALC662 rev1 Analog
    Direct hardware device without any conversions
hw:CARD=PCH,DEV=2
    HDA Intel PCH, ALC662 rev1 Alt Analog
    Direct hardware device without any conversions
plughw:CARD=PCH,DEV=0
    HDA Intel PCH, ALC662 rev1 Analog
    Hardware device with all software conversions
plughw:CARD=PCH,DEV=2
    HDA Intel PCH, ALC662 rev1 Alt Analog
    Hardware device with all software conversions
default:CARD=U0x46d0x825
    USB Device 0x46d:0x825, USB Audio
    Default Audio Device
sysdefault:CARD=U0x46d0x825
    USB Device 0x46d:0x825, USB Audio
    Default Audio Device
front:CARD=U0x46d0x825,DEV=0
    USB Device 0x46d:0x825, USB Audio
    Front speakers
surround40:CARD=U0x46d0x825,DEV=0
    USB Device 0x46d:0x825, USB Audio
    4.0 Surround output to Front and Rear speakers
surround41:CARD=U0x46d0x825,DEV=0
    USB Device 0x46d:0x825, USB Audio
    4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=U0x46d0x825,DEV=0
    USB Device 0x46d:0x825, USB Audio
    5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=U0x46d0x825,DEV=0
    USB Device 0x46d:0x825, USB Audio
    5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=U0x46d0x825,DEV=0
    USB Device 0x46d:0x825, USB Audio
    7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
iec958:CARD=U0x46d0x825,DEV=0
    USB Device 0x46d:0x825, USB Audio
    IEC958 (S/PDIF) Digital Audio Output
dmix:CARD=U0x46d0x825,DEV=0
    USB Device 0x46d:0x825, USB Audio
    Direct sample mixing device
dsnoop:CARD=U0x46d0x825,DEV=0
    USB Device 0x46d:0x825, USB Audio
    Direct sample snooping device
hw:CARD=U0x46d0x825,DEV=0
    USB Device 0x46d:0x825, USB Audio
    Direct hardware device without any conversions
plughw:CARD=U0x46d0x825,DEV=0
    USB Device 0x46d:0x825, USB Audio
    Hardware device with all software conversions

그러면 ALSA 사양에 따라 동시에 문서화할 수 있도록 위 장치에 올바른 이름을 지정해야 합니까?

아니요API를 사용하고 싶습니다 pulseaudio.

답변1

내 생각에 문제는 front:에서또 다른 문제front:는 마이크나 녹음 장치가 아닌 스피커 세트를 나타내기 때문에 작동하지 않습니다 . 해당 형식을 사용할 수 있지만 hw:CARD=X,Y제안된 대로 @CL을 사용하면 plughw:CARD=X,YPlughw가 자동으로 리샘플링 또는 값 변환을 처리할 수 있습니다 hw:CARD=X,Y.

귀하의 결과를 바탕으로 다음을 수행 arecord -l합니다 arecord -L.

  • 내부 마이크는 plughw:DEV=0,CARD=PCH다음과 같아야 합니다. 또는plughw:PCH,0
  • USB 웹캠은 plughw:DEV=0,CARD=U0x46d0x825다음과 같아야 합니다.plughw:U0x46d0x825,0

답변2

Pulseaudio와 ALSA를 동시에 실행하면 Pulseaudio는 다음과 유사한 구성을 사용하여 기본적으로 호환성 레이어를 제공합니다.

pcm.!default pulse
ctl.!default pulse

즉, 장치를 사용하는 경우 snd_pcm_openPulseaudio default와 대화하면 애플리케이션 이름에 대해 저장된 기본 설정에 따라 경로가 지정됩니다.

Pulseaudio는 ALSA 장치를 사용할 때에도 열립니다. ALSA hw장치는 한 번만 열 수 있으므로 Pulseaudio가 장치를 열면 ALSA API를 통해 해당 장치에 액세스하려고 하면 "사용 중" 오류가 발생합니다. 이는 front등 자동으로 제공되는 플러그인에도 적용됩니다 . 일반적으로 작동하지 않는 시도 시 Pulseaudio가 아직 열지 않았기 때문에 plughw사용하지 않는 것입니다 .plughw

다음과 같은 옵션이 있습니다.

(1) Pulseaudio를 완전히 중지한 다음 snd_pcm_open원하는 방식으로 ALSA 장치를 열고 CARD장치를 식별하는 등의 방법을 사용할 수 있습니다.

(2) Pulseaudio API를 사용하십시오.

(3) ALSA 또는 Pulseaudio에서 두 개의 사운드 카드에 대한 콤보 장치를 만들고 이를 응용 프로그램의 기본 수신기로 수동으로 설정한 다음 Pulseaudio 호환성 레이어를 사용하십시오 default.

답변3

달리기를 해보세요

$ cat /proc/asound/devices
  1:        : sequencer
  2: [ 0- 3]: digital audio playback
  3: [ 0- 0]: digital audio playback
  4: [ 0- 0]: digital audio capture
  5: [ 0- 3]: hardware dependent
  6: [ 0- 0]: hardware dependent
  7: [ 0]   : control
 33:        : timer

장치 번호가 0이 아닌 첫 번째 오디오 장치 사용

관련 정보