nama perangkat apa yang harus saya berikan di snd_pcm_open selain "default"

8

Saya ingin merekam suara dari 2 perangkat secara bersamaan:

  • mic internal
  • eksternal usb webcam mic

Menggunakan pulseaudiopengontrol suara, saya menetapkan salah satu perangkat ini sebagai default dan dapat merekam suara dengan snd_pcm_open(&handle, "default", SND_PCM_STREAM_CAPTURE, 0).

Tapi sekarang saya ingin merekam suara dari kedua perangkat secara bersamaan, jadi saya harus memilih skema penamaan yang disebutkan di sini . Namun saya tidak berhasil dengan pasangan mereka.

Saya pikir ini akan menyelesaikan masalah saya, tetapi front:CARD=U0x46d0x825,DEV=0tidak membantu sebagai nama perangkat.

Saya mendapatkan kesalahan ini:

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 memberi saya:

# 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

dan # arecord -Lmemberi:

# 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

Jadi apa nama yang benar yang harus saya berikan pada perangkat di atas untuk merekam secara bersamaan sesuai spesifikasi ALSA?

Saya tidak ingin menggunakan pulseaudioAPI.

Necktwi
sumber
Lihat multi-plugin . Tapi ini tidak akan bekerja lama jika jam perangkat tidak disinkronkan.
CL.
@CL. Saya tidak ingin mencampur stream. Saya hanya ingin menangkap dua input secara bersamaan untuk memisahkan buffer periode.
Necktwi
1
Coba default:0dan default:1.
CL.
mendapat kesalahan berikut dengan kedua default: 0 dan default: 1ALSA lib conf.c:4694:(snd_config_expand) Unknown parameters 1 ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM default:1
Necktwi
1
Rupanya, PA mengabaikan perangkat default. Coba plughw:0dan plughw:1.
CL.

Jawaban:

1

Jika Anda menjalankan Pulseaudio dan ALSA, yang terjadi adalah bahwa Pulseaudio memberikan lapisan kompatibilitas sebagai default, menggunakan konfigurasi yang mirip dengan

pcm.!default pulse
ctl.!default pulse

Itu berarti jika Anda snd_pcm_openyang defaultperangkat, Anda berbicara dengan PulseAudio, yang kemudian rute Anda sesuai dengan preferensi disimpan untuk nama aplikasi.

Pulseaudio juga membuka perangkat ALSA saat menggunakannya. hwPerangkat ALSA hanya dapat dibuka sekali, jadi begitu Pulseaudio membukanya, Anda akan mendapatkan kesalahan "sibuk" jika Anda mencoba mengaksesnya melalui API ALSA. Itu juga berlaku untuk plugin yang disediakan secara otomatis, seperti front, plughwdll. Anda dapat menggunakan plughwkarena Pulseaudio belum membukanya saat Anda mencoba, ini tidak akan berfungsi secara umum.

Opsi yang Anda miliki adalah:

(1) Stop Pulseaudio sepenuhnya, maka Anda dapat membuka perangkat ALSA dengan snd_pcm_opencara apa pun yang Anda suka, menggunakan CARDdll untuk mengidentifikasi perangkat.

(2) Gunakan API Pulseaudio.

(3) Buat perangkat gabungan untuk dua kartu suara Anda, baik di ALSA atau di Pulseaudio, dan atur secara manual ini sebagai bak yang disukai untuk aplikasi Anda, kemudian gunakan lapisan kompatibilitas Pulseaudio via default.

dirkt
sumber
0

coba jalankan

$ 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

gunakan perangkat audio pertama yang memiliki nomor perangkat selain nol

phoenix
sumber
0

Saya pikir masalahnya adalah bahwa front:, dari pertanyaan lain , tidak akan berhasil karena front:mengacu pada satu set speaker, daripada mikrofon atau perangkat rekaman. Anda bisa menggunakan hw:CARD=X,Yformat, tetapi Anda akan mendapatkan sedikit lebih banyak fleksibilitas jika Anda menggunakan, seperti @CL menyarankan plughw:CARD=X,Y,. Plughw dapat secara otomatis menangani resampling atau konversi nilai versus hw:CARD=X,Y.

Berdasarkan output Anda dari arecord -ldan arecord -L:

  • Mic internal harus:, plughw:DEV=0,CARD=PCHatau adilplughw:PCH,0
  • Webcam USB harus: plughw:DEV=0,CARD=U0x46d0x825atau adilplughw:U0x46d0x825,0
MeltedPez
sumber