ALSA và PulseAudio liên quan như thế nào?


30

Trong khi cố gắng để âm thanh của tôi hoạt động , tôi đã tự hỏi về vai trò của ALSA và PulseAudio. Tôi đã cài đặt cả hai và đang tự hỏi, ví dụ, cái nào trong số họ cần biết về card âm thanh của tôi.

Cả hai dường như có thể sử dụng lẫn nhau, có một plugin pulseaudio cho ALSA, và trên hệ thống của tôi, alsa xuất hiện dưới dạng một card âm thanh trong pulseaudio.

Cái nào trong hai cái này làm cái gì, chúng là cái thay thế hay bổ sung?

Câu trả lời:


32

ALSA là bộ trộn âm thanh cấp kernel, nó quản lý trực tiếp card âm thanh của bạn. ALSA tự nó chỉ có thể xử lý một ứng dụng tại một thời điểm. Tất nhiên, có ' dmix ', được viết để giải quyết vấn đề này. (Đây là mô-đun ALSA.)

PulseAudio là một bộ trộn phần mềm, trên đầu trang của người dùng (giống như bạn đang chạy một ứng dụng). Khi chạy, nó sử dụng Alsa - không có dmix - và tự mình quản lý mọi loại pha trộn, thiết bị, thiết bị mạng, mọi thứ.

Trong năm 2014, bạn vẫn chỉ có thể chạy ALSA. Nhưng trừ khi bạn tự biên dịch các ứng dụng của mình và kích hoạt hỗ trợ ALSA ở mọi nơi - hoặc sử dụng phân phối dựa trên nguồn như Gentoo - bạn có thể gặp sự cố trộn. Các ứng dụng được biên dịch trước mà distro ship thường chỉ được xây dựng với sự hỗ trợ cho Pulseaudio chứ không phải ALSA thuần túy. Ví dụ, Ubuntu thích PulseAudio. Nó đi kèm với PulseAudio theo mặc định, vì vậy mọi ứng dụng được biên dịch để chỉ sử dụng PulseAudio.

PulseAudio có lợi ích của nó. Mọi người nói rằng nó tốt khi làm việc với âm thanh trên một mạng và nó giải quyết được một số vấn đề với các luồng âm thanh đa kênh xảy ra trong ALSA thuần túy. Việc phát triển ứng dụng cho PA cũng được cho là dễ dàng hơn. Về phía người dùng cuối, bạn có thể dễ dàng chọn thiết bị mới, để điều khiển âm lượng theo ứng dụng, v.v.

Tuy nhiên, trong cấu hình mặc định, nó thêm một độ trễ không đáng kể vào hỗn hợp. Đây là một con lừa lớn cho một số loại nhiệm vụ yêu cầu độ trễ thấp như một số trò chơi và phần mềm.

OSS là một giải pháp thay thế cho cả hai điều này, nhưng nó không được cấp phép theo GPL, điều này khiến cho nó không có khả năng nhìn thấy nhiều sự chấp nhận của các distro.

Minh họa :
Các hệ thống âm thanh được hỗ trợ bởi PulseAudio, như Ubuntu:
Kernel: ALSA -> Userland: PulseAudio -> app1, app2, app3
Trong hệ thống Linux điển hình, PulseAudio trộn âm thanh từ tất cả các ứng dụng khác nhau của bạn và đưa chúng lên chuỗi cho ALSA.

ALSA:
Kernel: ALSA -> dmix -> Userland: app1, app2, app3
Chỉ với ALSA thuần túy, bạn cần dmix để trộn nhiều ứng dụng. Không có nó, ALSA chỉ có thể phát một luồng âm thanh từ một ứng dụng tại một thời điểm.

OSS:
Kernel: OSS -> Userland: app1, app2, app3
Với OSS, các ứng dụng userland nói chuyện trực tiếp với OSS trong kernel, tự trộn các luồng.

Vì vậy, để tóm tắt, trong hệ thống điển hình của bạn những ngày này, ALSA nói chuyện trực tiếp với thẻ âm thanh của bạn và Pulseaudio nói chuyện với các ứng dụng và chương trình của bạn và cung cấp thông tin đó vào ALSA.


2
Trên thực tế, mỗi khi tôi tìm thấy Pulseaudio tôi đều tìm thấy VẤN ĐỀ! Điều thú vị là dường như (ít nhất là dựa trên kinh nghiệm của tôi) cũng có vấn đề với phiên bản RT của kernel, nghĩa là ... bạn có muốn một môi trường linux dễ dàng để phát nhạc không? Bạn đang nghĩ về UbuntuStudio mới? Chà, nghĩ lại đi ...: D
dag729

4
Ồ đừng nghĩ. Đồ họa cũng là một đống .. Linux KHÔNG được sử dụng cho máy tính để bàn để đặt nó một cách đơn giản và thẳng thừng. Xorg là một máy chủ X, vì vậy về cơ bản, bạn khởi động một SERVER và bạn XEM nó (thật là vô nghĩa? Yeah). Trên MAC, Windows, Haiku, GUI chạy từ kernel (không sao bên trong kernel). Tốt. Nó sẽ có ý nghĩa phải không? Ngoài ra, không có giao diện gốc. Giống như trên Windows, Windows.Forms. Trên MAC ca cao. Tại đây, bạn chỉ có thể sử dụng các bộ công cụ FAT, như GTK, Qt. | Mạng được đồng ý, trong kernel, nó ổn (không sao nếu nhà sản xuất cung cấp trình điều khiển tốt như Intel) ... vậy là xong.
Apache

3
On MAC, Windows, Haiku, GUI runs from the kernel (okay its inside the kernel). Well. It would make sense doesnt it? Thật ra thì không. Bạn còn nhớ những ngày xưa tồi tệ của "trình điều khiển video NT 4 đã loại bỏ hệ thống" không? Vâng, đó là những gì gây ra nó - chạy trình điều khiển crappy trong không gian kernel. Tại sao bạn nghĩ rằng Microsoft đột nhiên đi tất cả về việc đưa các trình điều khiển đã ký vào Windows? Chơi lô tô! Bởi vì trình điều khiển crummy đã gây ra sự cố hệ thống. Bắt họ ký có nghĩa là khiến họ được xem xét kỹ lưỡng, và một nụ cười của QA đi một chặng đường dài ...
Avery Payne

1
Avery: Nó hỗ trợ các mô-đun không tải được ngay bây giờ. Vì vậy, nếu nó gặp sự cố, nó sẽ chỉ tải lại mô-đun cho bộ điều hợp đồ họa. Nhưng theo tôi biết họ vẫn là các mô-đun. (Không chạy trong không gian người dùng .. điều đó là không thể). | Về SDL: Nó s..ks. Mọi nhà văn trò chơi đều phàn nàn về điều đó bởi vì nó cho hiệu năng chậm, các vấn đề phức tạp, v.v. (Tôi sẽ không liệt kê chúng, kiểm tra thông qua tìm kiếm.) Ngay cả ông trùm vận tải nguồn mở cũng chậm với SDL.
Apache

2
@Skiki - Tôi nhận ra câu trả lời đã lỗi thời, nhưng bạn có thể vui lòng cung cấp tài liệu tham khảo khi Valve đã từ bỏ Linux không? Theo như tôi có thể thấy họ vẫn đang đi trước hơi nước, hãy chú ý đến trò chơi chữ.
tổng
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.