Saya ingin merekam suara dari 2 perangkat secara bersamaan:
- mic internal
- eksternal usb webcam mic
Menggunakan pulseaudio
pengontrol 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=0
tidak 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 -L
memberi:
# 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 pulseaudio
API.
default:0
dandefault: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
danplughw:1
.Jawaban:
Jika Anda menjalankan Pulseaudio dan ALSA, yang terjadi adalah bahwa Pulseaudio memberikan lapisan kompatibilitas sebagai default, menggunakan konfigurasi yang mirip dengan
Itu berarti jika Anda
snd_pcm_open
yangdefault
perangkat, Anda berbicara dengan PulseAudio, yang kemudian rute Anda sesuai dengan preferensi disimpan untuk nama aplikasi.Pulseaudio juga membuka perangkat ALSA saat menggunakannya.
hw
Perangkat 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, sepertifront
,plughw
dll. Anda dapat menggunakanplughw
karena 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_open
cara apa pun yang Anda suka, menggunakanCARD
dll 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
.sumber
coba jalankan
gunakan perangkat audio pertama yang memiliki nomor perangkat selain nol
sumber
Saya pikir masalahnya adalah bahwa
front:
, dari pertanyaan lain , tidak akan berhasil karenafront:
mengacu pada satu set speaker, daripada mikrofon atau perangkat rekaman. Anda bisa menggunakanhw:CARD=X,Y
format, tetapi Anda akan mendapatkan sedikit lebih banyak fleksibilitas jika Anda menggunakan, seperti @CL menyarankanplughw:CARD=X,Y
,. Plughw dapat secara otomatis menangani resampling atau konversi nilai versushw:CARD=X,Y
.Berdasarkan output Anda dari
arecord -l
danarecord -L
:plughw:DEV=0,CARD=PCH
atau adilplughw:PCH,0
plughw:DEV=0,CARD=U0x46d0x825
atau adilplughw:U0x46d0x825,0
sumber