Quero gravar som de 2 dispositivos simultaneamente:
- microfone interno
- microfone externo da webcam usb
Usando pulseaudio
o controlador de som, defino um desses dispositivos como padrão e poderia gravar o som snd_pcm_open(&handle, "default", SND_PCM_STREAM_CAPTURE, 0)
.
Mas agora eu quero gravar som de ambos os dispositivos simultaneamente, então eu tenho que optar pelo esquema de nomeação mencionado aqui . No entanto, não tenho sucesso com alguns deles.
Eu pensei que isso resolveria o meu problema, mas front:CARD=U0x46d0x825,DEV=0
não ajudou como o nome do dispositivo.
Eu recebo estes erros:
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 dá:
# 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
e # arecord -L
dá:
# 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
Então, quais são os nomes corretos que devo ceder aos dispositivos acima para gravá-los simultaneamente, conforme a especificação ALSA?
Eu não quero usar pulseaudio
API.
default:0
edefault: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
eplughw:1
.Respostas:
Se você executa o Pulseaudio e o ALSA, o que acontece é que o Pulseaudio fornece uma camada de compatibilidade como padrão, usando uma configuração semelhante a
Isso significa que, se você usar
snd_pcm_open
odefault
dispositivo, conversará com o Pulseaudio, que o encaminhará de acordo com a preferência armazenada para o nome do aplicativo.O Pulseaudio também abre dispositivos ALSA quando os utiliza. Os
hw
dispositivos ALSA podem ser abertos apenas uma vez; assim que o Pulseaudio os abrir, você receberá um erro "ocupado" se tentar acessá-los por meio da API do ALSA. Isso também se aplica aos plugins fornecidos automaticamente, comofront
,plughw
etc. você fugiu usandoplughw
porque Pulseaudio já não tivesse a abri-los quando você tentou, isso não vai funcionar em geral.As opções que você tem são:
(1) Interrompa o Pulseaudio completamente e, em seguida, você pode abrir os dispositivos ALSA
snd_pcm_open
da maneira que desejar, usandoCARD
etc. para identificar o dispositivo.(2) Use a API Pulseaudio.
(3) Crie um dispositivo combinado para suas duas placas de som, no ALSA ou no Pulseaudio, e defina-o manualmente como o coletor preferido para o seu aplicativo, depois use a camada de compatibilidade do Pulseaudio via
default
.fonte
tente correr
use o primeiro dispositivo de áudio que tenha um número de dispositivo diferente de zero
fonte
Penso que a questão é que
front:
, a partir da outra pergunta , não teria funcionado desdefront:
se refere a um conjunto de alto-falantes, ao invés de um microfone ou dispositivo de gravação. Você pode usar ohw:CARD=X,Y
formato, mas terá um pouco mais de flexibilidade se usar, como sugere o @CL, oplughw:CARD=X,Y
. O Plughw pode cuidar automaticamente de reamostragem ou conversão de valor versushw:CARD=X,Y
.Com base na sua saída de
arecord -l
earecord -L
:plughw:DEV=0,CARD=PCH
ou apenasplughw:PCH,0
plughw:DEV=0,CARD=U0x46d0x825
ou apenasplughw:U0x46d0x825,0
fonte