บันทึกเสียงสัญญาณเข้าจากสองแอพพลิเคชั่นโดยใช้ Alsa


1

ฉันกำลังทำงานกับแอปพลิเคชั่นขนาดเล็กซึ่งทำงานบน cubieboard (ARMv7, rasp-pi-like)

สิ่งที่ฉันต้องทำคือการเข้าถึงและบันทึกสัญญาณเสียงเข้า Line-in จากสองแอพพลิเคชั่นที่แตกต่างกัน

อันแรกคือPyAudioและDarkice Media Streamer ตัวที่สอง การ์ดเสียงใช้ไดรเวอร์เคอร์เนล sun4i-CODEC จากผู้พัฒนา cubieboard ชั้นเสียงที่มีให้ในขณะนี้โดยALSA เสียง

ขณะนี้ทั้งสองแอปพลิเคชันบันทึกจาก hw: 0,0 และพวกเขา intefere ดังนั้นถ้าฉันเริ่ม Darkice Client สคริปต์ Python ของฉันไม่มีสิทธิ์เข้าถึงและ verca รอง

Ouput จากฉันarecord -L:

null
Discard all samples (playback) or generate zero samples (capture)
default
sysdefault:CARD=sun4icodec
    sun4i-CODEC, sun4i PCM
    Default Audio Device
dmix:CARD=sun4icodec,DEV=0
    sun4i-CODEC, sun4i PCM
    Direct sample mixing device
dsnoop:CARD=sun4icodec,DEV=0
    sun4i-CODEC, sun4i PCM
    Direct sample snooping device
hw:CARD=sun4icodec,DEV=0
    sun4i-CODEC, sun4i PCM
    Direct hardware device without any conversions
plughw:CARD=sun4icodec,DEV=0
    sun4i-CODEC, sun4i PCM
    Hardware device with all software conversions

นี่คือamixerผลลัพธ์ของฉัน:

imple mixer control 'Master',0
  Capabilities: pvolume pvolume-joined penum
  Playback channels: Mono
  Limits: Playback 0 - 63
  Mono: Playback 63 [100%]
Simple mixer control 'LineL',0
  Capabilities: pswitch pswitch-joined penum
  Playback channels: Mono
  Mono: Playback [off]
Simple mixer control 'LineR',0
  Capabilities: pswitch pswitch-joined penum
  Playback channels: Mono
  Mono: Playback [off]
Simple mixer control 'Mic Input Mux',0
  Capabilities: volume volume-joined penum
  Playback channels: Mono
  Capture channels: Mono
  Limits: 0 - 15
  Mono: 15 [100%]
Simple mixer control 'MicL',0
  Capabilities: volume volume-joined penum
  Playback channels: Mono
  Capture channels: Mono
  Limits: 0 - 3
  Mono: 1 [33%]
Simple mixer control 'MicR',0
  Capabilities: volume volume-joined penum
  Playback channels: Mono
  Capture channels: Mono
  Limits: 0 - 3
  Mono: 3 [100%]
Simple mixer control 'Playback',0
  Capabilities: pswitch pswitch-joined penum
  Playback channels: Mono
  Mono: Playback [off]
Simple mixer control 'Capture',0
  Capabilities: cvolume cvolume-joined penum
  Capture channels: Mono
  Limits: Capture 0 - 7
  Mono: Capture 7 [100%]
Simple mixer control 'ADC Input Mux',0
  Capabilities: volume volume-joined penum
  Playback channels: Mono
  Capture channels: Mono
  Limits: 0 - 7
  Mono: 7 [100%]
Simple mixer control 'Fm',0
  Capabilities: volume volume-joined penum
  Playback channels: Mono
  Capture channels: Mono
  Limits: 0 - 7
  Mono: 7 [100%]
Simple mixer control 'FmL',0
  Capabilities: pswitch pswitch-joined penum
  Playback channels: Mono
  Mono: Playback [off]
Simple mixer control 'FmR',0
  Capabilities: pswitch pswitch-joined penum
  Playback channels: Mono
  Mono: Playback [off]
Simple mixer control 'Ldac Left Mixer',0
  Capabilities: pswitch pswitch-joined penum
  Playback channels: Mono
  Mono: Playback [off]
Simple mixer control 'Ldac Right Mixer',0
  Capabilities: pswitch pswitch-joined penum
  Playback channels: Mono
  Mono: Playback [off]
Simple mixer control 'Rdac Right Mixer',0
  Capabilities: pswitch pswitch-joined penum
  Playback channels: Mono
  Mono: Playback [off]

ดังนั้นทางออกที่ดีที่สุดในการแก้ปัญหานี้คืออะไร? แยกอินพุตสเตอริโอในสองการตัดสินใจที่แตกต่างกันอย่างไร ใช้เลเยอร์เสียงอื่นหรือไม่ ฉันไม่รู้!

ขอบคุณล่วงหน้า,

~ MxAgent


ลองแทนdsnoop hw
CL

นี่ทำให้ฉันเกิดIOError: [Errno Input overflowed] -9981ข้อผิดพลาดในขณะที่เริ่ม PyAudio ..
Micronax

มันใช้งานได้กับสองarecordอินสแตนซ์หรือโปรแกรมอื่น ๆ ?
CL

เป็นไปได้หรือไม่ว่าเกิดจากปัญหาประสิทธิภาพการทำงานของ CPU ARM ตัวเล็ก?
Micronax

นั่นอาจเป็นไปได้ คุณมีโหลดซีพียูเท่าไรเมื่อบันทึก
CL
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.