Jack vs Pulseaudio - wie geht es schneller?


27

Ich sehe eine Reihe von Behauptungen, dass Jack schneller als Pulse ist und weniger Latenz hat. Wie ist das so Warum nennt sich Pulse leicht und die Jungs von Jack fett? Könnte jemand die Interna dieser beiden Dämonen einem Laien überlassen?


2
Soweit ich sie verstehe, sind sie für verschiedene Zwecke konzipiert, die das Problem des Vergleichs erklären könnten.
NN

Antworten:


30

Jack verlangt, dass Sie - der sachkundige Benutzer - den Server so konfigurieren, dass die niedrigstmögliche Verarbeitungslatenz für Ihren Computer ermittelt wird. (Die Verarbeitungslatenz ist die Zeit, die der Server benötigt, um Daten zu / von den Client-Anwendungen zu verschieben und dann den nächsten "Block" von Audio-Samples außerhalb des Systems zu senden / zu empfangen.) Jack liefert diese Audiodatenblöcke entweder pünktlich oder es wird fehlschlagen und Sie erhalten einen Puffer-Unterlauf (manchmal als "Dropout" oder Knacksen und Klicken bezeichnet)). Wenn Jack ständig unterboten wird, müssen Sie entweder den Server mit anderen Einstellungen neu starten oder die Clientanwendungen so anpassen, dass sie effizienter sind und Sie Ihre Audio-Fristen einhalten können. Da Ihre Servereinstellungen für alle Clients einheitlich gelten, ist Jack sehr nützlich, um Audio zwischen mehreren Audioanwendungen zu routen und vorhersagbare Ergebnisse zu erzielen . (Das heißt, es ist wie das Anschließen von "Buchsen" an verschiedene Audiokomponenten.)

Pulse wurde entwickelt, um die Häufigkeit von Audioausfällen zu minimieren, da der Server eine Frist für das Senden / Empfangen von Audio außerhalb des Systems nicht einhält. Dies wird offensichtlich versucht, indem ein großer Puffer für Clientanwendungen ausgewählt wird, für die keine geringe Verarbeitungslatenz erforderlich ist , und anschließend für Clientanwendungen , für die eine kürzere Frist gilt, Beispiele in diesen Puffer "injiziert" werden. Wenn versucht wird, Samples so schnell einzuspeisen, dass eine Frist überschritten wird und ein Unterlauf auftritt, erhöht Pulse automatisch die kürzeste Zeit, die ein Client benötigt, um ein Audio-Update an den Server zu senden. In Pulse-Dokumenten wird ausdrücklich angegeben, dass die Latenzzeit extrem niedrig ist - beispielsweise weniger als 10 ms Verarbeitungslatenzzeit- ist kein gestalterisches Ziel. Angesichts der Tatsache, dass Linux selbst (und wahrscheinlich Ihre Hardware) nicht für die Echtzeitplanung von Audiodaten ausgelegt ist, würde ich ihnen eher glauben.

In Bezug auf die Benutzerkonfiguration ist Pulse "leicht". (Man könnte sagen, dass Pulse eine geringe Konfigurationslatenz hat , was leider viele Linux Audio-Apps anscheinend ignorieren.) In Bezug auf die zugrunde liegende Komplexität im Vergleich zu Jack ist Pulse "fett".

Um eine endgültige Antwort zu erhalten, die schneller ist, müssen Sie lediglich ein Loopback-Gerät erwerben und die Round-Trip-Latenz auf Ihrem eigenen System messen , um die Wahrheit zu erfahren. Die Round-Trip-Latenz ist die Zeit, die Ihr System benötigt, um Audiodaten zu verarbeiten und die verarbeiteten Daten wieder in das System zu übertragen. Es gibt Online-Tutorials, die erklären, wie dies unter Linux gemacht wird. Dadurch erhalten Sie eine Vorstellung davon, wonach Sie tatsächlich suchen. Dies ist die wahrgenommene Latenz - die Zeit, die vom Auslösen eines Ereignisses (z. B. Anschlagen der Saiten einer Gitarre) bis zum ersten Hören des Klangs vergeht das Ergebnis ist (z. B. das Hören des Gitarrenakkords).

Denken Sie zum Schluss daran, dass sowohl Pulse als auch Jack auf den meisten GNU / Linux-Distributionen auf ALSA sitzen. Ich weiß, Sie fragen nur nach Jack vs. Pulse. Wenn Sie jedoch eine einzelne Audioanwendung verwenden, die eine direkte Verbindung zu ALSA herstellen kann, ist es nicht vorstellbar, dass Sie durch Hinzufügen von Pulse oder Jack eine geringere wahrgenommene Latenz als bei ALSA alleine erhalten. In diesem Sinne sind sowohl Pulse als auch Jack "fett".

tldr; ALSA alleine ist am schnellsten, Jack ist nützlich, um mehrere Audioanwendungen zu verketten, und Pulse ist wahrscheinlich am einfachsten zu verwenden, wenn Sie sich nicht für extrem niedrige Latenz interessieren. Ignorieren Sie alle Dokumentationen oder Diskussionen, in denen der Begriff Latenz verwendet wird, ohne zu erläutern, welche Art von Latenz gemeint ist. (Leider fallen sowohl die offiziellen Jack Docs als auch Lennarts Blog-Einträge zu Pulse in diese Kategorie.)

Hinweis : Es kann Randfälle geben, in denen Sie eine einzelne Audioanwendung verwenden möchten und diese über eine bescheidene ALSA-Schnittstelle und eine anständige Jack-Schnittstelle verfügt. In diesem Fall können Sie mit Jack die Latenz verringern. Wenn es sich jedoch um Apps handelt , mit denen die Latenz minimiert werden soll, sollten diese Fälle selten auftreten. Aber schließen Sie ein Loopback-Gerät an und testen Sie meine Hypothese!


9

Tatsächlich ähneln sie sich darin, Tonserver zu sein . JACK wurde für Echtzeit- / Reaktionszeiten mit geringer Latenz entwickelt, die für professionelle Audiolösungen erforderlich sind. PulseAudio richtet sich eher an allgemeine Desktops (wo weniger strenge Anforderungen gelten). PA scheint schwerer zu sein als JACK - komplexer zu sein verursacht mehr Overhead. Unter Linux verwenden beide am Ende ALSA für die eigentliche Ausgabe. Bei PA werden Daten häufig von ALSA (Anwendungsausgabe) über PA (Verarbeitung) zu ALSA (Ausgabe) weitergeleitet, was natürlich langsamer ist als die JACK-ALSA-Route. Andererseits ist es transparent für Anwendungen, die es nicht nativ verwenden können, da es ihnen eine virtuelle Soundkarte mit einer ALSA-Schnittstelle bietet.

In jedem Fall reicht ALSA aus, wenn Sie nicht beabsichtigen, Musik zu produzieren, oder wenn Sie nicht ohne Lautstärkeregelung pro Anwendung (oder Weiterleiten von Sound an einen anderen Computer über das Netzwerk) leben können. Einige Treiber können Hardware mischen und auch wenn nicht, kann ALSA über ein Plugin mischen (wahrscheinlich nicht so bissig wie JACK, aber "normale" Verwendung sollte in Ordnung sein).


Ist der Link zum PA-Image fehlgeleitet?
NN

@NN hat für mich funktioniert, aber ich habe es jetzt geändert, also wird es hoffentlich besser.
Peterph

@Sukminder der Fehler scheint ziemlich zufällig zu sein.
Peterph

1
Ich glaube nicht, dass diese Antwort es vermag : Erstens sagen Sie nicht, wie Jack schneller ist, und zweitens konvolutieren Sie die Antwort mit einem Beispiel, das einen Pseudo-Alsa-Treiber anstelle eines direkten Pulse Sink beinhaltet. Die Frage ist ziemlich klar, aber um direkter zu sein - wie ist JACK am schnellsten im Vergleich zu Pulse am schnellsten?
Evan Carroll

Ich bin es einfach leid zu hören, dass das Jack-Team sagt, es sei schneller, weil es kein Schwergewicht hat, ohne zu erklären, warum Schwergewicht - und was im Schwergewicht bedeutet - Pulse langsamer macht. Diese Antwort fühlt sich wie eine kartesische Behauptung der Prämisse in der Frage an.
Evan Carroll

4

Jack ist für Anwendungen gedacht, die wenig Speicherplatz benötigen, z. B .: Audio - Engineering / Erstellung für Musiker, Videomacher etc

  • kein Resampling!
  • Erzwingen Sie das Mischen von Softwarequellen
  • Richtiges Routing (Sound, Zeitsynchronisation usw.) zwischen Apps, Geräten, ladspa / lv2 / vst-Plugins usw
  • kann mit pulseaudio (bridge) verwendet werden

Pulse ist für normale Desktop-Anwendungen vorgesehen (keine geringe Latenz).

  • Stellen Sie die Kompatibilität mit aRts und esd sicher
  • Kann als alsaund ossAusgabe verwendet werden
  • Software-Resampling erzwingen
  • Erzwingen Sie das Mischen von Softwarequellen
  • Software - Upmix, - Downmix usw
  • gibt nette API für Plugins (zB: Pulseeffekte )
  • einfaches Routing (um die Ausgabe an ein anderes Gerät oder eine andere App anzuschließen)
  • Lautstärkeregler pro App

Alsa Userspace Layer (kein Treiber) tun Minimum (Latenz zwischen [*])

  • [*] Hardware-Resampling, Mischen von Quellen, Upmixing usw. (Sie benötigen eine geeignete Soundkarte , um sie zu verwenden, andernfalls wird Software verwendet.)
  • ladspa Plugins, die Sie im hässlichen Konfigurationsformat einstellen können
  • einfache / globale Lautstärkeregelung

In den meisten Fällen ist Pulse die beste Wahl für normale Desktop-Benutzer. Jack ist die beste Wahl für Musiker usw.


Ich habe eine Gegenstimme abgegeben, aber ich bin nicht sicher, ob es eine Antwort auf die Frage ist, sondern auch ein guter Vergleich. Warum ist PulseAudio langsamer, wenn keine Neuabtastung durchgeführt wird?
Evan Carroll

> Warum ist PulseAudio langsamer, wenn keine Neuabtastung durchgeführt wird?
3.

Nicht? Sie machen Sachen in der Software, zB: Resampling erzwingen (Sie können zwischen 2 wählen). Jack umgeht alsa teilweise. Jack ist so etwas wie Asio. Puls ähnlich dem Standard Windows Sound von Vista aufwärts. Nicht das gleiche, aber ähnliche Konzepte. Pulse ist hervorragend für billige / integrierte / nicht richtig unterstützte Soundkarten geeignet, die Hardware nicht unterstützen können.
3.

2

Es ist nicht wirklich eine Frage von "vs". Auf den ersten Blick können wir sehen, dass beide "Sound Server" sind. Daraus kann man vielleicht schließen, dass man sich einfach zwischen ihnen entscheiden muss. Das ist nicht der Fall. Vergleichen Sie zum Beispiel eine Videokamera und eine FLIR-Kamera, beide sind Kameras. Aber man "wählt" nicht nur zwischen ihnen. Sie haben sehr unterschiedliche Rollen, diese Rollen können komplementär sein, sind aber in keiner Weise wettbewerbsfähig. Man braucht einen Stecker, oder man braucht einen Impuls, oder man braucht vielleicht beide. Die Wahl hängt von der Problemdomäne ab, nicht von Merkmalen wie der spezifischen Latenz.

Was "FAT" im Gegensatz zu "nicht" betrifft, wird der Begriff auf zu viele Arten verwendet, um wirklich bedeutungsvoll zu sein. Aber im Allgemeinen wird der Begriff FAT verwendet, wenn die Anwendung mehr oder weniger "alles für Sie erledigt". "Lightweight" tendiert dazu, dass Sie die gewünschte Funktionalität laden, möglicherweise aus einer Palette von Optionen auswählen und den Rest wegwerfen. Pulse ist ein "Big-Blob" -Programm, dem Sie einige Parameter zuweisen und los geht's. Brauchen Sie es oder nicht, eine große Menge an Funktionalität wird geladen, wenn Sie Puls starten. Jack ist ein winziges und für sich genommen nutzloses Programm, mit dem Sie eine beliebige Anzahl von Plugins, Programmen usw. erstellen können, um das zu erstellen, was Sie möchten. Programmierer neigen dazu, die Welt von der Seite der Maschinenressourcen aus zu betrachten.

Daher ist pulse ein Server mit variabler Latenz und jack hat eine feste Latenz. Das sind ihre spezifischen Problembereiche. Wenn Sie nur fernsehen oder Musik über ein Netzwerk hören, möchten Sie mit Sicherheit Puls. Wenn Sie versuchen, elektronische Live-Musik abzuspielen, brauchen Sie mit Sicherheit Jack. Wenn Sie fernsehen und die Sound-Streams intensiv bearbeiten, benötigen Sie mit Sicherheit beides.


1
Etwas subjektiv: Ich denke, der Soundserver sollte dem JACK-Design folgen, da es unmöglich ist, vom Server hinzugefügte Latenzen zu beseitigen. Es ist dann Sache des Anwendungsentwicklers, größere Puffer für Festplatten- oder Netzwerk-E / A, Abtastratenkonvertierung usw. zu verwenden. Latenzen über der 10-ms-Marke sind zu hoch.
user877329
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.