PulsAudio - PulseAudio

PulsAudio
PulseAudio-Logo
PulseAudio GUI.png
Bildschirmfoto
Entwickler Lennart Poettering
Pierre Ossman
Shahms E. King
Tanu Kaskinen
Colin Guthrie
Arun Raghavan
David Henningsson
Erstveröffentlichung 17. Juli 2004 ; Vor 17 Jahren ( 2004-07-17 )
Stabile Version
15.0 / 27. Juli 2021 ; Vor 2 Monaten ( 2021-07-27 )
Repository gitlab .freedesktop .org /pulseaudio /pulseaudio
Geschrieben in C
Betriebssystem FreeBSD , NetBSD , OpenBSD , Linux , Illumos , Solaris , macOS und Microsoft Windows (nicht gepflegt)
Plattform ARM , PowerPC , x86 / IA-32 , x86-64 und MIPS
Typ Soundserver
Lizenz LGPL-2.1 oder höher
Webseite pulseaudio.org

PulseAudio ist ein netzwerkfähiges Soundserverprogramm , das über das Projekt freedesktop.org vertrieben wird . Es läuft hauptsächlich auf Linux , verschiedenen BSD- Distributionen wie FreeBSD und OpenBSD , macOS sowie Illumos- Distributionen und dem Betriebssystem Solaris .

PulseAudio ist kostenlose Open-Source-Software und wird unter den Bedingungen der LGPL-2.1 oder höher lizenziert .

Es wurde 2004 unter dem Namen Polypaudio erstellt, aber 2006 in PulseAudio umbenannt.

Geschichte

Microsoft Windows wurde zuvor über MinGW (eine Implementierung der GNU- Toolchain, die verschiedene Tools wie GCC und binutils umfasst ) unterstützt. Der Windows-Port wurde jedoch seit 2011 nicht mehr aktualisiert.

Softwarearchitektur

PulseAudio-Betriebsablaufplan
PulseAudio ist ein Daemon, der das Mischen in Software durchführt.

Im Großen und Ganzen ist ALSA ein Kernel-Subsystem, das den Sound-Hardware-Treiber bereitstellt, und PulseAudio ist die Schnittstellen-Engine zwischen Anwendungen und ALSA.

PulseAudio fungiert als Soundserver, auf dem ein Hintergrundprozess erstellt wird, der Toneingaben von einer oder mehreren Quellen (Prozesse, Aufnahmegeräte usw.) akzeptiert . Der Hintergrundprozess leitet diese Soundquellen dann an eine oder mehrere Senken (Soundkarten, PulseAudio-Remoteserver oder andere Prozesse) weiter.

Eines der Ziele von PulseAudio ist es, alle Soundstreams durch es umzuleiten, einschließlich derjenigen von Prozessen, die versuchen, direkt auf die Hardware zuzugreifen (wie ältere OSS- Anwendungen). PulseAudio erreicht dies durch die Bereitstellung von Adaptern für Anwendungen, die andere Audiosysteme wie aRts und ESD verwenden .

In einem typischen Installationsszenario unter Linux konfiguriert der Benutzer ALSA so, dass ein von PulseAudio bereitgestelltes virtuelles Gerät verwendet wird. Daher geben Anwendungen, die ALSA verwenden, Ton an PulseAudio aus, das dann ALSA selbst verwendet, um auf die echte Soundkarte zuzugreifen. PulseAudio bietet auch eine eigene native Schnittstelle für Anwendungen, die PulseAudio direkt unterstützen möchten, sowie eine Legacy-Schnittstelle für ESD-Anwendungen, wodurch es als Drop-In-Ersatz für ESD geeignet ist.

Für OSS-Anwendungen bietet PulseAudio das padspDienstprogramm, das Gerätedateien wie ersetzt /dev/dspund den Anwendungen vorgaukelt, dass sie die alleinige Kontrolle über die Soundkarte haben. In Wirklichkeit wird ihre Ausgabe über PulseAudio umgeleitet.

libcanberra

libcanberra ist eine abstrakte API für Desktop-Event-Sounds und ein vollständiger Ersatz für die "PulseAudio Sample Cache API":

  • Entspricht den XDG Sound Theme- und Benennungsspezifikationen .
  • Definiert eine einfache abstrakte Schnittstelle zum Abspielen von Event-Sounds.
  • Schnittstellen mit ALSA über libasound.
  • Hat ein Back-End für PulseAudio.

libSydney

libSydney ist ein vollständiger Ersatz für die "PulseAudio Streaming API", und es wurde geplant, dass libSydney schließlich die einzige Audio-API wird, die in PulseAudio verwendet wird.

Merkmale

Zu den wichtigsten PulseAudio-Funktionen gehören:

  • Lautstärkeregler pro Anwendung.
  • Eine erweiterbare Plugin-Architektur mit Unterstützung für ladbare Module.
  • Kompatibilität mit vielen gängigen Audioanwendungen.
  • Unterstützung für mehrere Audioquellen und -senken.
  • Eine Zero-Copy- Speicherarchitektur für die Effizienz der Prozessorressourcen.
  • Möglichkeit, andere Computer mit PulseAudio im lokalen Netzwerk zu erkennen und Ton direkt über deren Lautsprecher abzuspielen.
  • Möglichkeit zu ändern, welches Ausgabegerät von Anwendungen zum Abspielen von Ton verwendet wird, während sie Ton abspielen (Anwendungen müssen dies nicht unterstützen, PulseAudio ist in der Lage, dies zu tun, ohne dass Anwendungen dies erkennen)
  • Eine Befehlszeilenschnittstelle mit Skriptfunktionen.
  • Ein Sound-Daemon mit Funktionen zur Neukonfiguration der Befehlszeile.
  • Integrierte Sample-Konvertierungs- und Resampling-Funktionen.
  • Die Möglichkeit, mehrere Soundkarten zu einer zu kombinieren .
  • Die Möglichkeit, mehrere Wiedergabestreams zu synchronisieren.
  • Unterstützung von Bluetooth-Audiogeräten mit dynamischen Erkennungsfunktionen.
  • Die Möglichkeit, eine systemweite Entzerrung zu aktivieren .

Annahme

PulseAudio erschien zuerst für normale Benutzer in Fedora Linux , beginnend mit Version 8, wurde dann von großen Linux-Distributionen wie Ubuntu , Debian , Mandriva Linux und openSUSE übernommen . Es gibt Unterstützung für PulseAudio im GNOME- Projekt und auch in KDE , da es in Plasma Workspaces integriert ist und Phonon (das KDE-Multimedia-Framework) und KMix (die integrierte Mixer-Anwendung) sowie eine "Speaker Setup"-Benutzeroberfläche unterstützt um die Konfiguration von Mehrkanallautsprechern zu unterstützen. PulseAudio ist auch in der Illumos- Distribution OpenIndiana verfügbar und standardmäßig in seiner MATE- Desktop-Umgebung aktiviert .

Verschiedene Linux- basierte mobile Geräte, darunter das Nokia N900 , das Nokia N9 und das Palm Pre verwenden PulseAudio.

Tizen , ein Open-Source-Mobilbetriebssystem, das ein Projekt der Linux Foundation ist und von einer Technical Steering Group (TSG) bestehend aus Intel und Samsung gesteuert wird , verwendet PulseAudio.

Probleme während der Adoptionsphase

  • Die PortAudio API war mit dem Design von PulseAudio nicht kompatibel und musste modifiziert werden. Fast alle Pakete, die OSS verwenden, und viele der Pakete, die ALSA verwenden, mussten modifiziert werden, um PulseAudio zu unterstützen. Die Weiterentwicklung der störungsfreien Audiofunktion erforderte eine komplette Neufassung des PulseAudio-Kerns und auch Änderungen an der ALSA-API und den Interna waren erforderlich.
  • Als es zum ersten Mal von Distributionen übernommen wurde, beschrieb PulseAudio-Entwickler Lennart Poettering (auch der Schöpfer von systemd ) es als "die Software, die derzeit Ihr Audio zerstört". Pöttering behauptete später, dass " Ubuntu nicht gerade einen hervorragenden Job gemacht hat. Sie haben ihre Hausaufgaben nicht gemacht" bei der Einführung von PulseAudio für Ubuntu "Hardy Heron" (8.04), ein Problem, das mit nachfolgenden Ubuntu-Versionen verbessert wurde. Im Oktober 2009 berichtete Pöttering jedoch, dass er mit der Ubuntu-Integration von PulseAudio immer noch nicht zufrieden sei.
  • Interaktion mit alten Soundkomponenten durch bestimmte Software: Bestimmte Programme, wie zB Adobe Flash für Linux, führten zu Instabilität in PulseAudio. Neuere Implementierungen von Flash-Plug-Ins erfordern die widersprüchlichen Elemente nicht, und infolgedessen sind Flash und PulseAudio jetzt kompatibel.
  • Frühzeitiges Management von Pufferüber-/Unterläufen: Frühere Versionen von PulseAudio begannen manchmal, das verarbeitete Audio aufgrund falscher Behandlung von Pufferüber-/Unterläufen zu verzerren.
  • Die Möglichkeit von Gehörschäden durch akustischen Schock bei einer unsachgemäßen Anwendung.

Zugehörige Software

Andere Soundserver

JACK ist ein Soundserver, der Echtzeit- Audioleistung mit geringer Latenz (dh 5 Millisekunden oder weniger) bietet und seit JACK2 einen effizienten Lastausgleich durch Verwendung von symmetrischem Multiprocessing unterstützt ; dh die Last aller Audio-Clients kann auf mehrere Prozessoren verteilt werden. JACK ist der bevorzugte Soundserver für professionelle Audioanwendungen wie Ardor , ReZound und LinuxSampler ; mehrere kostenlose Audioproduktions-Distributionen verwenden ihn als Standard-Audioserver.

Es ist möglich, dass JACK und PulseAudio koexistieren: Während JACK läuft, kann sich PulseAudio automatisch als JACK-Client verbinden, sodass PulseAudio-Clients gleichzeitig mit JACK-Clients Sound machen und aufnehmen können.

PipeWire ist ein Audio- und Videoserver, der "die Anwendungsfälle unterstützen soll, die derzeit von PulseAudio und Jack bearbeitet werden".

Allgemeine Audioinfrastrukturen

Vor JACK und PulseAudio wurde der Ton auf diesen Systemen von integrierten Mehrzweck-Audiolösungen verwaltet. Diese Lösungen decken den Mixing- und Sound-Streaming-Prozess nicht vollständig ab, werden aber dennoch von JACK und PulseAudio verwendet, um den endgültigen Audiostream an die Soundkarte zu senden.

  • ALSA bietet einen Software-Mixer namens dmix an, der vor PulseAudio entwickelt wurde. Dies ist auf fast allen Linux-Distributionen verfügbar und ist eine einfachere PCM-Audio-Mixing-Lösung. Es bietet nicht die erweiterten Funktionen (wie Timer-basierte Planung und Netzwerkaudio) von PulseAudio. Andererseits bietet ALSA in Kombination mit entsprechenden Soundkarten und Software geringe Latenzen.
  • OSS war das ursprüngliche Soundsystem, das in Linux und anderen Unix-Betriebssystemen verwendet wurde, wurde aber nach dem 2.5 Linux-Kernel veraltet. Die proprietäre Entwicklung wurde von 4Front Technologies fortgesetzt , die im Juli 2007 Quellen für OSS unter CDDL-1.0 für OpenSolaris und unter GPL-2.0-only für Linux veröffentlichten . Die moderne Implementierung, Open Sound System v4, bietet Software-Mixing, Resampling und Änderung der Lautstärke pro Anwendung; im Gegensatz zu PulseAudio sind diese Funktionen im Kernel implementiert. Die PulseAudio-Unterstützung in OpenIndiana und anderen illumos- Distributionen beruht auf der Kernel-OSS-Implementierung (" Boomer" ).

Siehe auch

Verweise

Externe Links