In welcher Beziehung stehen ALSA und PulseAudio?

30

Während ich versuchte , meinen Sound zum Laufen zu bringen , wunderte ich mich über die Rollen von ALSA und PulseAudio. Ich habe beide installiert und habe mich zum Beispiel gefragt, welche von ihnen etwas über meine Soundkarte wissen müssen.

Beide scheinen in der Lage zu sein, sich gegenseitig zu nutzen, es gibt ein pulseaudio-Plugin für ALSA, und auf meinem System wird als Soundkarte in pulseaudio angezeigt.

Welcher der beiden macht was, sind sie Alternativen oder komplementär?

Hanno Fietz
quelle

Antworten:

32

ALSA ist der Kernel Level Sound Mixer, der Ihre Soundkarte direkt verwaltet. ALSA kann jeweils nur eine Anwendung bearbeiten. Natürlich gibt es " dmix ", das geschrieben wurde, um dieses Problem zu lösen. (Es ist ein ALSA-Modul.)

PulseAudio ist ein Software-Mixer über dem Userland (so als würden Sie eine App ausführen). Wenn es läuft, verwendet es Alsa - ohne Dmix - und verwaltet jede Art von Mischung, die Geräte, Netzwerkgeräte, alles für sich.

Im Jahr 2014 können Sie immer noch nur ALSA ausführen. Aber wenn Sie Ihre Anwendungen nicht für sich selbst kompilieren und die ALSA-Unterstützung überall aktivieren - oder eine quellbasierte Distribution wie Gentoo verwenden - können Mischprobleme auftreten. Vorkompilierte Anwendungen, die mit Distributionen ausgeliefert werden, werden normalerweise nur mit Unterstützung für Pulseaudio erstellt, nicht für ALSA. Ubuntu zum Beispiel bevorzugt PulseAudio. Standardmäßig ist PulseAudio im Lieferumfang enthalten, sodass jede Anwendung so kompiliert ist, dass nur PulseAudio verwendet wird.

PulseAudio hat seine Vorteile. Die Leute sagen, dass es gut für die Arbeit mit Audio in einem Netzwerk ist, und es löst einige Probleme mit Mehrkanal-Audio-Streams, die unter reinem ALSA stattgefunden haben. Es ist angeblich auch einfacher, Apps für PA zu entwickeln. Auf der Endbenutzerseite ist es einfach, neue Geräte auszuwählen, die Lautstärke per App zu steuern usw.

In der Standardkonfiguration wird der Mischung jedoch eine nicht unerhebliche Latenz hinzugefügt. Dies ist ein großer Nachteil für bestimmte Arten von Aufgaben, für die eine geringe Latenz erforderlich ist, z. B. für einige Spiele und Software.

OSS ist eine Alternative zu beiden, aber es ist nicht unter der GPL lizenziert, was eine große Akzeptanz durch Distributionen unwahrscheinlich macht.

Abbildung :
Typische PulseAudio-Soundsysteme wie Ubuntu:
Kernel: ALSA -> Userland: PulseAudio -> app1, app2, app3
Im typischen Linux-System mischt PulseAudio Audio aus all Ihren verschiedenen Apps und leitet sie an ALSA weiter.

ALSA:
Kernel: ALSA -> dmix -> Userland: app1, app2, app3
Mit nur reinem ALSA benötigen Sie dmix, um mehrere Apps zu mischen. Ohne diese Funktion kann ALSA jeweils nur einen Audiostream von einer App abspielen.

OSS:
Kernel: OSS -> Userland: app1, app2, app3
Mit OSS kommunizieren die Userland-Apps direkt mit OSS im Kernel, der die Streams selbst mischt.

Zusammenfassend lässt sich sagen, dass ALSA heutzutage in einem typischen System direkt mit Ihren Soundkarten und Pulseaudio mit Ihren Apps und Programmen kommuniziert und diese in ALSA einspeist.

Apache
quelle
2
Eigentlich fand ich jedes Mal, wenn ich Pulseaudio fand, PROBLEME! Witzig ist, dass es (zumindest aufgrund meiner Erfahrungen) auch Probleme mit der RT-Version des Kernels zu geben scheint, das heißt ... möchtest du eine einfache Linux-Umgebung, um Musik abzuspielen? Denken Sie über das neue UbuntuStudio nach? Denken Sie noch einmal darüber nach ...: D
dag729
4
Oh, denk nicht. Grafiken sind auch ein Haufen von ... Linux ist NICHT für den Desktop gedacht, um es einfach und klar auszudrücken. Xorg ist ein X- Server, also startet man im Grunde genommen einen SERVER und schaut ihn sich an (was für ein Unsinn? Ja). Unter MAC, Windows, Haiku läuft die GUI vom Kernel aus (okay, sie befindet sich im Kernel). Gut. Es würde Sinn machen, nicht wahr? Es gibt auch keine native Schnittstelle. Wie unter Windows, Windows.Forms. Auf MAC Cocoa. Hier können Sie nur FAT-Toolkits wie GTK, Qt. | Verwenden Netzwerk ist sich einig, es ist im Kernel, es ist OK (okay, wenn der Hersteller einen guten Treiber bereitstellt, wie es Intel tut) ... das ist es also.
Apache
3
On MAC, Windows, Haiku, GUI runs from the kernel (okay its inside the kernel). Well. It would make sense doesnt it? Eigentlich nicht. Erinnern Sie sich an die schlechten alten Zeiten von "NT 4-Grafiktreibern, die das System kaputt gemacht haben"? Ja, das hat es verursacht - beschissene Treiber im Kernelraum laufen zu lassen. Warum hat Microsoft Ihrer Meinung nach plötzlich alles unternommen, um signierte Treiber für Windows zu bekommen? Bingo! Weil beschissene Treiber Systemabstürze verursachten. Erst zeichneter sie bedeutet , dass immer überprüft , und ein smidgeon von QA geht ein langen Wege ...
Avery Payne
1
Avery: Es unterstützt jetzt entladbare Module. Wenn es abstürzt, wird das Modul für den Grafikadapter einfach neu geladen. Aber soweit ich weiß, sind sie immer noch Module. (Läuft nicht im Userspace .. das ist nicht möglich). | Über SDL: Es s..ks. Jeder Game Writer beklagt sich darüber, weil es zu langsamer Leistung, komplizierten Problemen usw. führt. (Ich werde sie nicht auflisten, durch eine Suche überprüfen.) Selbst der Open Source-Transport-Tycoon ist mit SDL langsam.
Apache
2
@Skiki - Mir ist klar, dass die Antwort jetzt veraltet ist, aber können Sie bitte Referenzen angeben, bei denen Valve Linux aufgegeben hat? Soweit ich sehen kann, gehen sie immer noch auf Hochtouren, beachten Sie das Wortspiel.
aggregate1166877