quale nome del dispositivo dovrei dare in snd_pcm_open diverso da "default"


8

Voglio registrare l'audio da 2 dispositivi contemporaneamente:

  • microfono interno
  • microfono webcam usb esterno

Usando il pulseaudiocontroller audio, ho impostato uno di questi dispositivi come predefinito e potrei registrare l'audio con snd_pcm_open(&handle, "default", SND_PCM_STREAM_CAPTURE, 0).

Ma ora voglio registrare l'audio da entrambi i dispositivi contemporaneamente, quindi devo optare per lo schema di denominazione menzionato qui . Tuttavia non ho successo con un paio di loro.

Ho pensato che questo avrebbe risolto il mio problema, ma front:CARD=U0x46d0x825,DEV=0non mi è stato d'aiuto come nome del dispositivo.

Ottengo questi errori:

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 mi 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

e # arecord -Ldà:

# 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

Quindi quali sono i nomi corretti che dovrei dare ai dispositivi di cui sopra per registrarli contemporaneamente secondo le specifiche ALSA?

Io non voglio usare pulseaudioAPI.


Vedi il multi plugin . Ma questo non funzionerà a lungo se gli orologi dei dispositivi non sono sincronizzati.
CL.

@CL. Non voglio mescolare i flussi. Voglio solo catturare i due input contemporaneamente in buffer di periodo separati.
Necktwi,

1
Prova default:0e default:1.
CL.

ha ricevuto i seguenti errori con entrambi i ALSA lib conf.c:4694:(snd_config_expand) Unknown parameters 1 ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM default:1
valori

1
Apparentemente, PA sovrascrive il dispositivo predefinito. Prova plughw:0e plughw:1.
CL.

Risposte:


1

Se si esegue sia Pulseaudio che ALSA, ciò che accade è che Pulseaudio fornisce un livello di compatibilità come predefinito, usando una configurazione simile a

pcm.!default pulse
ctl.!default pulse

Ciò significa che se si è snd_pcm_openil defaultdispositivo, si parla con Pulseaudio, che quindi ti indirizza in base alle preferenze memorizzate per il nome dell'applicazione.

Pulseaudio apre anche i dispositivi ALSA quando li utilizza. I hwdispositivi ALSA possono essere aperti solo una volta, quindi non appena Pulseaudio li ha aperti, si verificherà un errore "occupato" se si tenta di accedervi tramite l'API ALSA. Questo vale anche per i plugin forniti automaticamente, ad esempio front, plughwecc. Sei riuscito a utilizzarlo plughwperché Pulseaudio non li aveva già aperti quando hai provato, questo non funzionerà in generale.

Le opzioni che hai sono:

(1) Arrestare Pulseaudio completamente, quindi è possibile aprire i dispositivi ALSA snd_pcm_opennel modo che preferisci, utilizzando CARDecc. Per identificare il dispositivo.

(2) Utilizzare l'API Pulseaudio.

(3) Crea un dispositivo combinato per le tue due schede audio, in ALSA o in Pulseaudio, e impostalo manualmente come sink preferito per la tua applicazione, quindi usa il livello di compatibilità Pulseaudio tramite default.


0

prova a correre

$ 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

utilizzare il primo dispositivo audio con un numero di dispositivo diverso da zero


0

Penso che il problema sia che front:, dall'altra domanda , non avrebbe funzionato poiché si front:riferisce a un set di altoparlanti, piuttosto che a un microfono o dispositivo di registrazione. Potresti usare il hw:CARD=X,Yformato, ma otterrai un po 'più di flessibilità se usi, come suggerisce @CL, il plughw:CARD=X,Y. Plughw può occuparsi automaticamente del ricampionamento o della conversione del valore rispetto a hw:CARD=X,Y.

In base all'output di arecord -le arecord -L:

  • Il microfono interno dovrebbe essere: plughw:DEV=0,CARD=PCHo soloplughw:PCH,0
  • USB Webcam dovrebbe essere: plughw:DEV=0,CARD=U0x46d0x825o soloplughw:U0x46d0x825,0
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.