Tôi phải cung cấp tên thiết bị nào trong snd_pcm_open, ngoài trừ mặc định


8

Tôi muốn ghi lại âm thanh từ 2 thiết bị cùng một lúc:

  • mic nội bộ
  • USB bên ngoài webcam mic

Sử dụng pulseaudiobộ điều khiển âm thanh, tôi đặt một trong hai thiết bị này làm mặc định và có thể ghi lại âm thanh snd_pcm_open(&handle, "default", SND_PCM_STREAM_CAPTURE, 0).

Nhưng bây giờ tôi muốn ghi lại âm thanh từ cả hai thiết bị, vì vậy tôi phải chọn cách đặt tên được đề cập ở đây . Tuy nhiên tôi không có thành công với vài người trong số họ.

Tôi nghĩ rằng điều này sẽ giải quyết vấn đề của tôi, nhưng front:CARD=U0x46d0x825,DEV=0không giúp làm tên của thiết bị.

Tôi nhận được những lỗi này:

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 đưa cho tôi:

# 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

# arecord -Lđưa ra:

# 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

Vì vậy, tên chính xác tôi nên cung cấp cho các thiết bị trên để ghi lại chúng đồng thời theo thông số kỹ thuật ALSA là gì?

Tôi không muốn sử dụng pulseaudioAPI.


Xem các plugin đa . Nhưng điều này sẽ không hoạt động lâu nếu đồng hồ của thiết bị không được đồng bộ hóa.
CL.

@CL. Tôi không muốn trộn các luồng. Tôi chỉ muốn chụp đồng thời hai đầu vào để tách bộ đệm thời gian.
Necktwi

1
Hãy thử default:0default:1.
CL.

có các lỗi sau với cả mặc định: 0 và mặc định: 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
Rõ ràng, PA ghi đè lên thiết bị mặc định. Hãy thử plughw:0plughw:1.
CL.

Câu trả lời:


1

Nếu bạn chạy cả Pulseaudio và ALSA, điều xảy ra là Pulseaudio chứng minh một lớp tương thích là mặc định, sử dụng một cấu hình tương tự như

pcm.!default pulse
ctl.!default pulse

Điều đó có nghĩa là nếu bạn snd_pcm_opendefaultthiết bị, bạn nói chuyện với Pulseaudio, sau đó định tuyến cho bạn theo sở thích được lưu trữ cho tên ứng dụng.

Pulseaudio cũng mở các thiết bị ALSA khi sử dụng chúng. Các hwthiết bị ALSA chỉ có thể được mở một lần, vì vậy ngay sau khi Pulseaudio mở chúng, bạn sẽ gặp lỗi "bận" nếu bạn cố truy cập chúng thông qua API ALSA. Điều đó cũng áp dụng cho các plugin được cung cấp tự động, như front, plughwv.v. Bạn đã sử dụng plughwvì Pulseaudio đã không mở chúng khi bạn thử, nói chung điều này sẽ không hoạt động.

Các tùy chọn bạn có là:

(1) Dừng hoàn toàn Pulseaudio, sau đó bạn có thể mở các thiết bị ALSA bằng snd_pcm_openbất cứ cách nào bạn thích, sử dụng CARDvv để xác định thiết bị.

(2) Sử dụng API Pulseaudio.

(3) Tạo một thiết bị kết hợp cho hai soundcard của bạn, trong ALSA hoặc Pulseaudio và đặt thủ công thiết bị này làm bồn rửa ưa thích cho ứng dụng của bạn, sau đó sử dụng lớp tương thích Pulseaudio qua default.


0

thử chạy

$ 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

sử dụng thiết bị âm thanh đầu tiên có số thiết bị khác không


0

Tôi nghĩ vấn đề là front:, từ câu hỏi khác , sẽ không hoạt động kể từ khi front:đề cập đến một bộ loa, thay vì micrô hoặc thiết bị ghi âm. Bạn có thể sử dụng hw:CARD=X,Yđịnh dạng, nhưng bạn sẽ linh hoạt hơn một chút nếu bạn sử dụng, như @CL gợi ý , plughw:CARD=X,Y. Plughw có thể tự động đảm nhiệm việc lấy mẫu lại hoặc chuyển đổi giá trị so với hw:CARD=X,Y.

Dựa trên đầu ra của bạn từ arecord -larecord -L:

  • Mic bên trong phải là : plughw:DEV=0,CARD=PCH, hoặc chỉplughw:PCH,0
  • USB Webcam phải là: plughw:DEV=0,CARD=U0x46d0x825hoặc chỉplughw:U0x46d0x825,0
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.