Je veux enregistrer le son de 2 appareils simultanément:
- micro interne
- micro webcam usb externe
À pulseaudio
l' aide du contrôleur de son, j'ai défini l'un de ces appareils par défaut et j'ai pu enregistrer du son avec snd_pcm_open(&handle, "default", SND_PCM_STREAM_CAPTURE, 0)
.
Mais maintenant, je veux enregistrer le son des deux appareils simultanément, je dois donc opter pour le schéma de dénomination mentionné ici . Cependant, je n'ai aucun succès avec deux d'entre eux.
Je pensais que cela résoudrait mon problème, mais cela front:CARD=U0x46d0x825,DEV=0
n'a pas aidé en tant que nom de l'appareil.
Je reçois ces erreurs:
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
Donne moi:
# 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
et # arecord -L
donne:
# 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
Alors, quels sont les noms corrects que je devrais donner aux appareils ci-dessus pour les enregistrer simultanément selon la spécification ALSA?
Je ne veux pas utiliser d' pulseaudio
API.
default:0
etdefault: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
etplughw:1
.Réponses:
Si vous exécutez à la fois Pulseaudio et ALSA, ce qui se passe est que Pulseaudio propose une couche de compatibilité par défaut, en utilisant une configuration similaire à
Cela signifie que si vous
snd_pcm_open
l'default
appareil, vous parlez à Pulseaudio, qui vous achemine ensuite selon la préférence enregistrée pour le nom de l'application.Pulseaudio ouvre également les appareils ALSA lorsqu'il les utilise. Les
hw
appareils ALSA ne peuvent être ouverts qu'une seule fois, donc dès que Pulseaudio les a ouverts, vous obtiendrez une erreur "occupé" si vous essayez d'y accéder via l'API ALSA. Cela s'applique également aux plugins fournis automatiquement, commefront
,plughw
etc. Vous vous êtes éloigné de l'utilisationplughw
parce que Pulseaudio ne les avait pas déjà ouverts lorsque vous avez essayé, cela ne fonctionnera pas en général.Les options dont vous disposez sont les suivantes:
(1) Arrêtez complètement Pulseaudio, puis vous pouvez ouvrir les appareils ALSA avec
snd_pcm_open
comme vous le souhaitez, en utilisantCARD
etc. pour identifier l'appareil.(2) Utilisez l'API Pulseaudio.
(3) Créez un appareil combiné pour vos deux cartes son, soit dans ALSA ou dans Pulseaudio, et définissez-le manuellement comme récepteur préféré pour votre application, puis utilisez la couche de compatibilité Pulseaudio via
default
.la source
essayez de courir
utiliser le premier périphérique audio dont le numéro de périphérique est différent de zéro
la source
Je pense que le problème est que
front:
, d'après l'autre question , cela n'aurait pas fonctionné, car ilfront:
s'agit d'un ensemble de haut-parleurs plutôt que d'un microphone ou d'un appareil d'enregistrement. Vous pouvez utiliser lehw:CARD=X,Y
format, mais vous obtiendrez un peu plus de flexibilité si vous utilisez, comme le suggère @CL, leplughw:CARD=X,Y
. Plughw peut automatiquement prendre en charge le rééchantillonnage ou la conversion de valeur par rapport àhw:CARD=X,Y
.Sur la base de votre sortie de
arecord -l
etarecord -L
:plughw:DEV=0,CARD=PCH
ou justeplughw:PCH,0
plughw:DEV=0,CARD=U0x46d0x825
ou tout simplementplughw:U0x46d0x825,0
la source