จะสร้างอุปกรณ์การ์ดเสียงจำลองในเซิร์ฟเวอร์ Linux ได้อย่างไร?


20

ฉันต้องการเรียกใช้โปรแกรม Linux ที่ต้องการการ์ดเสียงบนเซิร์ฟเวอร์ที่ไม่มีการ์ดเสียง เป็นไปได้หรือไม่ที่จะสร้างการ์ดเสียงจำลอง? ฉันไม่รู้ถึงระบบเสียงภายในของลีนุกซ์ทั้งหมด กรุณาชี้ฉันในทิศทางที่ถูกต้อง

ฉันได้ทำตามตัวอย่างนี้: http://alsa.opensrc.org/.asoundrcแต่มันไม่ได้ผล

PS: มีคำถามที่คล้ายกัน: วิธีการสร้างอุปกรณ์เสียงเสมือนใน Linux? . แต่นี่จะแตกต่างกันอย่างสิ้นเชิงในบริบทที่ผู้ใช้กำลังสร้างนามแฝงให้กับการ์ดเสียงที่มีอยู่แล้ว


แก้ไข:
ฉันต้องการให้อุปกรณ์จำลองถูกสร้างขึ้นใน / dev / .. เพื่อให้แอปพลิเคชันใด ๆ ที่ต้องการอุปกรณ์เสียงจะค้นหาได้
ฉันไม่แน่ใจอย่างสมบูรณ์ว่า alsa ทำงานอย่างไร ดังนั้นฉันก็แค่ทำตามตัวอย่าง ฉันสร้าง /etc/asound.conf ด้วย:

pcm.card0 {
    type hw
    card 0
}
ctl.card0 {
    type hw
    card 0
}

และaplay -Lให้ฉัน:

null
    Discard all samples (playback) or generate zero samples (capture)

ใช่มีหลายอย่างเช่นอุปกรณ์เสียง "dummy" ใน Alsa แต่คุณต้องอธิบายอย่างละเอียดเกี่ยวกับสิ่งที่ "ไม่ได้ผล" สำหรับคุณ ข้อความแสดงข้อผิดพลาดตรวจไม่พบโดยซอฟต์แวร์ ฯลฯ นอกจากนี้เป้าหมาย "โปรแกรม linux" ใช้ ALSA เลยหรือไม่ เพราะถ้าไม่เช่นนั้นการยุ่งกับไฟล์กำหนดค่า ALSA จะไม่ให้อะไรมากมาย
haimg

ฉันต้องการให้สร้างอุปกรณ์เสียงเสมือนใน / dev / ...
ssapkota

ดูการแก้ไขเพิ่มเติม
ssapkota

คำตอบ:


14

คุณต้องโหลดไดรเวอร์เสียงจำลอง โปรดดูAlsa Wikiสำหรับข้อมูลรายละเอียด แต่นี่คือพื้นฐาน:

  1. โหลดไดรเวอร์:

    modprobe snd-dummy; modprobe snd-pcm-oss; modprobe snd-mixer-oss; modprobe snd-seq-oss

  2. มีไฟล์. asoundrc ที่เหมาะสม (คุณครอบคลุมมัน)

  3. กำหนดค่าการโหลดอัตโนมัติของไดรเวอร์ เพิ่มไปที่/etc/modules.conf:

    # OSS / ส่วนที่ฟรี - การ์ด # 1
    นามแฝง sound-slot-0 snd-card-0
    นามแฝง sound-service-0-0 snd-mixer-oss
    alias sound-service-0-1 snd-seq-oss
    alias-service -0-3 snd-pcm-oss
    alias sound-service-0-8 snd-seq-oss
    alias sound-service-0-12 snd-pcm-oss

จริงๆแล้วมีบางสิ่งที่เกี่ยวข้องฉันขอแนะนำให้คุณไปที่หน้า Wiki ด้านบนเพื่อรับรายละเอียดเพิ่มเติม


คำถาม. เป็นไปได้หรือไม่ที่จะสร้างไดรเวอร์อุปกรณ์เคอร์เนล Linux ที่จำลองการ์ดเสียงไปยัง Linux ตามด้วย alsa, OSS และอื่น ๆ ? ฉันกำลังอ่านอุปกรณ์ Linux และถามตัวเองว่าเป็นไปได้หรือไม่
deFreitas

โมดูลหลักสำหรับซีเควนดูเหมือนว่าจะแสดงเป็น snd-seq-dummy ในขณะนี้
DBrown

11

ฉันก็มีปัญหากับเรื่องนี้เมื่อพยายามทำให้อุปกรณ์ Dummy Sound ทำงานบน Raspberry Pi ที่รัน Raspian (อนุพันธ์ของ Debian) Pi on มีเอาต์พุตเสียง แต่ไม่มีอินพุตและฉันต้องการใช้แอปพลิเคชันที่ค้นหาทั้งคู่แม้ว่าฉันจะต้องการเอาต์พุตเท่านั้น (PJSIP)

อย่างไรก็ตามข้อมูลข้างต้นไม่ได้ผลสำหรับฉันและไม่ได้ใช้หน้า WiKi หลังจากพูดคุยกับผู้ใช้จากรายชื่อผู้รับจดหมาย ALSA พวกเขาแนะนำว่าข้อมูลในหน้า WikI ล้าสมัยอย่างไรก็ตามพวกเขาให้คำแนะนำแก่ฉันเกี่ยวกับวิธีการแก้ปัญหานี้

ประการแรกฉันต้องการโหลดโมดูล 'snd-dummy' โดยใช้:

sudo modprobe snd-dummy

อย่างไรก็ตามอุปกรณ์ไม่อยู่หลังจากรีบูต ใน Pi โมดูลนี้สามารถโหลดผ่านไฟล์ '/ etc / modules' แก้ไขไฟล์นี้เพื่อโหลดไดรเวอร์ที่สร้างผลลัพธ์ที่ต้องการ:

sudo nano /etc/modules

ไฟล์ / etc / modules ของฉันมีลักษณะดังนี้:

# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
# Parameters can be specified after the module name.

snd-bcm2835
snd-dummy

ดังนั้นไดรเวอร์เริ่มต้นจะโหลดก่อนจากนั้นโหลดไดรเวอร์จำลองที่สอง งานเสร็จแล้ว!

โชคดี

คริส


@logoff คุณคิดว่าจะทำงานในภาชนะนักเทียบท่าเช่นเดียวกับใน rasberry pi?
thataustin

@thataustin ฉันเดาว่าคุณต้องให้การเข้าถึงฮาร์ดแวร์กับคอนเทนเนอร์ Docker ฉันขอแนะนำให้ลองก่อนโดยไม่มีนักเทียบท่าและถ้าคุณประสบความสำเร็จลองกับนักเทียบท่า
ออกจากระบบ

0

ฉันยังใช้มันเพื่อ Linphone บน RaspberryPi เนื่องจากต้องใช้อุปกรณ์อินพุต แต่ฉันต้องเพิ่ม fake_buffer = 0 param มิฉะนั้นอุปกรณ์จับภาพจำลองจะจับเสียงสุ่มจำนวนมากและนั่นก็แปลก ... คุณสามารถทำได้ มันชอบ:

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