ALSA และ PulseAudio เกี่ยวข้องกันอย่างไร


30

ในขณะที่พยายามทำให้เสียงของฉันทำงานฉันก็สงสัยเกี่ยวกับบทบาทของ ALSA และ PulseAudio ฉันได้ติดตั้งทั้งคู่และสงสัยเช่นกันว่าพวกเขาต้องรู้อะไรเกี่ยวกับการ์ดเสียงของฉัน

ทั้งคู่ดูเหมือนจะสามารถใช้งานร่วมกันได้มีปลั๊กอิน pulseaudio สำหรับ ALSA และในระบบของฉัน alsa แสดงเป็นการ์ดเสียงใน pulseaudio

ข้อใดที่ทั้งสองคนทำอะไรพวกเขาเป็นทางเลือกหรือเสริม

คำตอบ:


32

ALSA เป็นตัวผสมเสียงระดับเคอร์เนลจัดการการ์ดเสียงของคุณโดยตรง ALSA ด้วยตนเองสามารถจัดการได้ครั้งละหนึ่งแอปพลิเคชันเท่านั้น แน่นอนว่ามี ' dmix ' ซึ่งเขียนขึ้นเพื่อแก้ไขปัญหานี้ (เป็นโมดูล ALSA)

PulseAudio เป็นตัวผสมซอฟต์แวร์ที่อยู่ด้านบนของ userland (เช่นคุณเรียกใช้แอพ) เมื่อมันทำงานมันจะใช้ Alsa - ปราศจาก dmix - และจัดการการผสมทุกชนิดอุปกรณ์อุปกรณ์เครือข่ายทุกอย่างด้วยตัวเอง

ในปี 2014 คุณยังสามารถเรียกใช้ ALSA ได้เท่านั้น แต่ถ้าคุณไม่คอมไพล์แอปพลิเคชันของคุณและเปิดใช้งานการสนับสนุน ALSA ได้ทุกที่ - หรือใช้การกระจายตามแหล่งที่มาเช่น Gentoo - คุณอาจมีปัญหาการปนกัน แอพพลิเคชั่นที่รวบรวมไว้ล่วงหน้าที่ distros ship มักจะสร้างด้วยการสนับสนุน Pulseaudio ไม่ใช่ ALSA ที่บริสุทธิ์ ยกตัวอย่างเช่น Ubuntu ที่ชอบ PulseAudio มันมาพร้อมกับ PulseAudio ตามค่าเริ่มต้นดังนั้นทุกแอปพลิเคชันจะรวบรวมเพื่อใช้ PulseAudio เท่านั้น

PulseAudio มีประโยชน์อย่างไร ผู้คนบอกว่ามันดีสำหรับการทำงานกับเสียงในเครือข่ายและมันจะแก้ปัญหาบางอย่างเกี่ยวกับสตรีมเสียงหลายช่องทางที่เกิดขึ้นภายใต้ ALSA บริสุทธิ์ นอกจากนี้ยังง่ายต่อการพัฒนาแอพสำหรับ PA ในด้านของผู้ใช้สิ่งต่าง ๆ เป็นเรื่องง่ายที่จะเลือกอุปกรณ์ใหม่เพื่อควบคุมระดับเสียงโดยแอพ ฯลฯ

อย่างไรก็ตามในการกำหนดค่าเริ่มต้นจะเพิ่มจำนวนเวลาแฝงที่ไม่สำคัญในการผสม นี่เป็นข้อผิดพลาดที่ยิ่งใหญ่สำหรับงานบางประเภทที่ต้องใช้เวลาในการตอบสนองต่ำเช่นเกมและซอฟต์แวร์บางตัว

OSS เป็นทางเลือกสำหรับทั้งสองสิ่งนี้ แต่ไม่ได้รับอนุญาตภายใต้ GPL ซึ่งทำให้ไม่น่าจะเห็นการยอมรับมากมายจาก distros

ภาพประกอบ :
ระบบเสียงที่ขับเคลื่อนด้วย PulseAudio ทั่วไปเช่น Ubuntu:
เคอร์เนล: ALSA -> Userland: PulseAudio -> app1, app2, app3
ในระบบ Linux ทั่วไป PulseAudio ผสมเสียงจากแอพที่แตกต่างกันทั้งหมดของคุณ

ALSA:
เคอร์เนล: ALSA -> dmix -> Userland: app1, app2, app3
ด้วย ALSA ที่บริสุทธิ์เพียงอย่างเดียวคุณต้องใช้ dmix เพื่อผสมหลายแอป หากไม่มีมัน ALSA จะสามารถเล่นสตรีมเสียงจากแอปได้ครั้งละหนึ่งแอปเท่านั้น

OSS:
เคอร์เนล: OSS -> Userland: app1, app2, app3
ด้วย OSS แอป userland จะพูดคุยโดยตรงกับ OSS ในเคอร์เนลซึ่งผสมลำธารเข้าด้วยกัน

เพื่อสรุปในระบบทั่วไปของคุณวันนี้ ALSA พูดคุยโดยตรงกับการ์ดเสียงของคุณและ Pulseaudio พูดถึงแอพและโปรแกรมของคุณและฟีดข้อมูลนั้นลงใน ALSA


2
ที่จริงทุกครั้งที่ฉันพบ Pulseaudio ฉันพบปัญหา! สิ่งที่ตลกคือดูเหมือนว่า (อย่างน้อยก็ขึ้นอยู่กับประสบการณ์ของฉัน) ที่จะมีปัญหากับเคอร์เนลเวอร์ชัน RT นั่นก็คือ ... คุณต้องการให้ลินุกซ์เล่นเพลงได้ง่ายหรือไม่? คุณกำลังคิดเกี่ยวกับ UbuntuStudio ใหม่หรือไม่? ลองคิดใหม่อีกครั้ง ... : D
dag729

4
โอ้ไม่คิด กราฟิกยังเป็นกอง .. ลินุกซ์ไม่ได้ใช้สำหรับเดสก์ทอปที่จะนำมันง่ายและตรงไปตรง Xorg เป็นเซิร์ฟเวอร์ X ดังนั้นโดยทั่วไปคุณเริ่มต้นเซิร์ฟเวอร์และคุณดูมัน (เป็นเรื่องไร้สาระใช่มั้ย) บน MAC, Windows, Haiku, GUI เรียกใช้จากเคอร์เนล (ตกลงภายในเคอร์เนล) ดี. มันจะเข้าท่าใช่ไหม? นอกจากนี้ยังไม่มีส่วนต่อประสานดั้งเดิม เช่นเดียวกับใน Windows, Windows.Forms บน MAC โกโก้ ที่นี่คุณสามารถใช้ชุดเครื่องมือ FAT เท่านั้นเช่น GTK, Qt. | เครือข่ายได้ตกลงกันในเคอร์เนลมันก็โอเค (โอเคถ้าผู้ผลิตให้ไดร์เวอร์ที่ดีอย่างที่ Intel ทำ) ...
Apache

3
On MAC, Windows, Haiku, GUI runs from the kernel (okay its inside the kernel). Well. It would make sense doesnt it? จริงๆแล้วมันไม่ได้ จำวันเก่า ๆ ที่ไม่ดีของ "โปรแกรมควบคุมวิดีโอ NT 4 ที่นิยมระบบ" ใช่นั่นคือสิ่งที่ทำให้เกิด - ใช้ไดรเวอร์เส็งเคร็งในพื้นที่เคอร์เนล ทำไมคุณถึงคิดว่าไมโครซอฟท์ได้รู้เรื่องเกี่ยวกับการติดตั้งไดร์เวอร์ลงใน Windows บิงโก! เพราะไดรเวอร์ crummy ทำให้ระบบล่ม พวกเขาได้รับการลงนามหมายถึงพวกเขาได้รับการตรวจสอบและควบคุมคุณภาพของ smidgeon ไปทางยาว ...
เอเวอรี่เพน

1
เอเวอรี่: สนับสนุนโมดูลที่ไม่สามารถโหลดได้ตอนนี้ ดังนั้นถ้ามันล้มเหลวก็แค่โหลดโมดูลสำหรับอะแดปเตอร์กราฟิก แต่เท่าที่ฉันรู้ว่าพวกเขายังคงเป็นโมดูล (ไม่ได้ทำงานใน userspace .. ที่เป็นไปไม่ได้) | เกี่ยวกับ SDL: มันเป็น .. นักเขียนเกมทุกคนบ่นเกี่ยวกับเรื่องนี้เพราะให้ประสิทธิภาพช้าปัญหาซับซ้อน ฯลฯ (ฉันจะไม่แสดงพวกเขาตรวจสอบผ่านการค้นหา) แม้แต่ผู้ให้บริการขนส่งโอเพนซอร์ซก็ช้าด้วย SDL
Apache

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