Quiero grabar sonido de 2 dispositivos simultáneamente:
- micrófono interno
- micrófono de cámara web usb externo
Usando pulseaudio
el controlador de sonido, configuré cualquiera de estos dispositivos como predeterminado y pude grabar sonido con snd_pcm_open(&handle, "default", SND_PCM_STREAM_CAPTURE, 0)
.
Pero ahora quiero grabar el sonido de ambos dispositivos simultáneamente, así que tengo que optar por el esquema de nombres mencionado aquí . Sin embargo, no tengo éxito con algunos de ellos.
Pensé que esto resolvería mi problema, pero front:CARD=U0x46d0x825,DEV=0
no ayudó como nombre del dispositivo.
Recibo estos errores:
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
me da
# 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
y # arecord -L
da:
# 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
Entonces, ¿cuáles son los nombres correctos que debo dar a los dispositivos anteriores para registrarlos simultáneamente según la especificación ALSA?
Yo no quiero utilizar pulseaudio
la API.
default:0
ydefault:1
.ALSA lib conf.c:4694:(snd_config_expand) Unknown parameters 1 ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM default:1
plughw:0
yplughw:1
.Respuestas:
Si ejecuta Pulseaudio y ALSA, lo que sucede es que Pulseaudio proporciona una capa de compatibilidad de forma predeterminada, utilizando una configuración similar a
Eso significa que si usted es
snd_pcm_open
eldefault
dispositivo, habla con Pulseaudio, que luego lo enruta según la preferencia almacenada para el nombre de la aplicación.Pulseaudio también abre dispositivos ALSA cuando los usa. Los
hw
dispositivos ALSA solo se pueden abrir una vez, por lo que tan pronto como Pulseaudio los haya abierto, obtendrá un error de "ocupado" si intenta acceder a ellos a través de la API de ALSA. Eso también se aplica a los complementos proporcionados automáticamente, comofront
,plughw
etc. Teplughw
saliste usando porque Pulseaudio no los había abierto cuando lo intentaste, esto no funcionará en general.Las opciones que tienes son:
(1) Detenga Pulseaudio por completo, luego puede abrir dispositivos ALSA de la
snd_pcm_open
forma que desee, utilizandoCARD
etc. para identificar el dispositivo.(2) Use la API Pulseaudio.
(3) Cree un dispositivo combinado para sus dos tarjetas de sonido, ya sea en ALSA o en Pulseaudio, y configúrelo manualmente como el receptor preferido para su aplicación, luego use la capa de compatibilidad de Pulseaudio a través de
default
.fuente
intenta correr
use el primer dispositivo de audio que tenga un número de dispositivo distinto de cero
fuente
Creo que el problema es que
front:
, desde la otra pregunta , no habría funcionado, ya que sefront:
refiere a un conjunto de altavoces, en lugar de un micrófono o dispositivo de grabación. Puede usar elhw:CARD=X,Y
formato, pero obtendrá un poco más de flexibilidad si usa, como sugiere @CL, elplughw:CARD=X,Y
. Plughw puede encargarse automáticamente del remuestreo o conversión de valor versushw:CARD=X,Y
.Según su salida de
arecord -l
yarecord -L
:plughw:DEV=0,CARD=PCH
o simplementeplughw:PCH,0
plughw:DEV=0,CARD=U0x46d0x825
o simplementeplughw:U0x46d0x825,0
fuente