Ich möchte Ton von 2 Geräten gleichzeitig aufnehmen:
- internes Mikrofon
- externes USB-Webcam-Mikrofon
Mit dem pulseaudio
Soundcontroller habe ich eines dieser Geräte als Standard festgelegt und konnte Sound mit aufnehmen snd_pcm_open(&handle, "default", SND_PCM_STREAM_CAPTURE, 0)
.
Aber jetzt möchte ich Ton von beiden Geräten gleichzeitig aufnehmen, also muss ich mich für das hier erwähnte Namensschema entscheiden . Mit einigen habe ich jedoch keinen Erfolg.
Ich dachte, dies würde mein Problem lösen, front:CARD=U0x46d0x825,DEV=0
half aber nicht als Name des Geräts.
Ich bekomme folgende Fehler:
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
gibt mir:
# 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
und # arecord -L
gibt:
# 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
Wie lauten also die richtigen Namen, die ich den oben genannten Geräten geben sollte, um sie gemäß der ALSA-Spezifikation gleichzeitig aufzuzeichnen?
Ich nicht verwenden möchten pulseaudio
API.
default:0
unddefault: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
undplughw:1
.Antworten:
Wenn Sie sowohl Pulseaudio als auch ALSA ausführen, stellt Pulseaudio standardmäßig eine Kompatibilitätsebene mit einer ähnlichen Konfiguration bereit
Das heißt, wenn Sie
snd_pcm_open
dasdefault
Gerät verwenden, sprechen Sie mit Pulseaudio, das Sie dann gemäß den für den Anwendungsnamen gespeicherten Einstellungen weiterleitet.Pulseaudio öffnet auch ALSA-Geräte, wenn es sie verwendet. ALSA-
hw
Geräte können nur einmal geöffnet werden. Sobald Pulseaudio sie geöffnet hat, wird ein "Besetzt" -Fehler angezeigt, wenn Sie versuchen, über die ALSA-API auf sie zuzugreifen. Das gilt auch für Plugins automatisch zur Verfügung gestellt, wiefront
,plughw
etc. Sie wurde mit weg ,plughw
weil sie nicht Pulseaudio hatte bereits geöffnet , wenn Sie versucht haben, das wird nicht funktionieren im Allgemeinen.Sie haben folgende Möglichkeiten:
(1) Stoppen Sie Pulseaudio vollständig. Anschließend können Sie ALSA-Geräte nach Belieben öffnen
snd_pcm_open
,CARD
usw. verwenden, um das Gerät zu identifizieren.(2) Verwenden Sie die Pulseaudio-API.
(3) Erstellen Sie ein kombiniertes Gerät für Ihre beiden Soundkarten, entweder in ALSA oder in Pulseaudio, und legen Sie dieses manuell als bevorzugte Senke für Ihre Anwendung fest. Verwenden Sie dann die Pulseaudio-Kompatibilitätsebene über
default
.quelle
versuche zu rennen
Verwenden Sie das erste Audiogerät mit einer anderen Gerätenummer als Null
quelle
Ich denke, das Problem ist, dass
front:
von der anderen Frage nicht funktioniert hätte, da esfront:
sich eher um einen Satz Lautsprecher als um ein Mikrofon oder ein Aufnahmegerät handelt. Sie könnten dashw:CARD=X,Y
Format verwenden, aber Sie erhalten ein wenig mehr Flexibilität, wenn Sie, wie @CL vorschlägt, das verwendenplughw:CARD=X,Y
. Plughw kann sich automatisch um Resampling oder Wertumwandlung kümmernhw:CARD=X,Y
.Basierend auf Ihrer Ausgabe von
arecord -l
undarecord -L
:plughw:DEV=0,CARD=PCH
oder nurplughw:PCH,0
plughw:DEV=0,CARD=U0x46d0x825
oder nurplughw:U0x46d0x825,0
quelle