WirePlumber: ein Session-Manager für PipeWire

Den meisten Lesern dürfte PipeWire als designierter Nachfolger von PulseAudio und mehr mittlerweile ein Begriff oder bereits in Benutzung sein. Ein Artikel von 2018 in der Zeitschrift LinuxUser beleuchtet die Notwendigkeit für die Entwicklung von PipeWire im Zusammenspiel mit der fortschreitenden Wayland-Integration. Seither ist viel passiert und PipeWire produktiv nutzbar geworden.

Der Klempner

Kürzlich erschien nun unter der treffenden Bezeichnung WirePlumber ein externer Session-Manager für PipeWire, der mit Fedora 35 ausgeliefert wurde und der auch bei mir bereits bei Debian Unstable Dienst tun. Ich kam auch gar nicht drum herum, da die bis dahin dafür verwendete Komponente pipewire-media-session entfernt wurde und in der Folge der Sound ausblieb.

Für den Automotive-Bereich entwickelt

WirePlumber wird von dem bei Collabora angestellten George Kiagiadakis entwickelt, der seit 2018 auch an PipeWire mitarbeitet. Eines der weiteren Projekte, an denen er im Rahmen seiner Anstellung arbeitet, ist das unter dem Schirm der Linux Foundation agierende Automotive Grade Linux (AGL). Hier fiel ihm auf, dass das zuverlässige Regeln von mehreren Audioströmen mit PulseAudio nicht einfach war. Dabei ging es um simple Dinge wie das Herunterregeln der Lautstärke der Musik, wenn eine Sprachmeldung vom Navi anstand oder das Stoppen des Audiostroms, wenn ein Anruf hereinkommt.

Logik per Lua-Script

Für diese Aufgaben versprach PipeWire bessere Ergebnisse. Allerdings stellte Kiagiadakis fest, dass der verwendete, in C geschriebene Session-Manager pipewire-media-session zu unflexibel war, wenn es um schnelle Anpassungen am Code ging. In der Folge entwarf er WirePlumber als modulare externe Anwendung, deren Steuerlogik in der Scriptsprache Lua verfasst ist. Diese Lua-Skripte können leicht modifiziert und erweitert werden, was bedeutet, dass die Benutzer jetzt die Möglichkeit haben, das Verhalten ihres PipeWire-Setups besser an ihre Bedürfnisse anzupassen.

Raue Ecken

Noch gibt es allerdings einige raue Ecken, die ausgebügelt werden müssen, bevor WirePlumber ein guter Mitspieler auf dem Desktop wird. Aber die Auslieferung mit Fedora 35 sollte hier für schnellen Fortschritt sorgen. Red Hat-Entwickler Christian Schaller hat Kiagiadakis für das Fedora Magazine zu WirePlumber interviewt, der einige Hintergründe der Entwicklung erläutert. Die Dokumentation von WirePlumber beleuchtet weitere technische Einzelheiten wie die Konfiguration und die einzelnen Module.

Mit der rasanten Entwicklung von PipeWire und dem neuen Session-Manager WirePlumber sehen wir, wie ich finde, spannenden Zeiten im Bereich Audio/Video entgegen.

Bild: Photo by Bruce Warrington on Unsplash

Kommentare

7 Antworten zu „WirePlumber: ein Session-Manager für PipeWire“

  1. Avatar von Uwe
    Uwe

    Hallo,
    mal eine Frage, eines Anfängers (!): wie, bzw. an welcher Stelle muss ich Änderungen vornehmen, damit ich höher aufgelöste Streams (z.B. vom Qobuz web-player in firefox) ohne mixer, also unverändert zu einem externen DAC gesendet bekomme?

    1. Avatar von Ferdinand

      In Sachen PipeWire und WirePlumber (und bei letzterem besonders) sind wir alle Anfänger. Ich habe so einen use case nicht und kann Deine Frage nicht beantworten.

    2. Avatar von Geier0815
      Geier0815

      Ohne jetzt echte Ahnung zu haben, da ich einen solchen Anwendungsfall nicht habe, würde ich an deiner Stelle mal gucken ob Du in qjackctl den Ausgang deiner Anwendung direkt mit dem Eingang deines Gerätes verbinden kannst.
      Dafür mußt Du allerdings pipewire für jack, alsa und pulseaudio verwenden. Damit tauchen dann alle verfügbaren Devices in qjackctl auf.

      1. Avatar von Holger Weißgerber
        Holger Weißgerber

        Ohne jetzt echte Ahnung zu haben

        Eigentlich verbietet sich eine Antwort mit diesem Vorsatz. Weil bereits genügend Halbwissen verbreitet wurde.

    3. Avatar von Andre R.
      Andre R.

      Auch blutiger Anfänger hier, beschäftige mich momentan auch mit Pipewire.

      Würde erstmal schauen, dass Dein DAC auch über die passenden Samplerates angesprochen werden kann. Siehe: https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/Config-PipeWire#setting-sample-rates

      Wenn ich das richtig verstanden habe, fehlt dann nur noch, dass Du Firefox mitteilst, wie der Stream kommen soll. Man kann wohl nach Applikation eine [match] Abfrage in der config durchführen und Firefox dann passend senden lassen.
      Da musst Du allerdings gucken, da Firefox iirc nur über die Pulseaudio Schnittstelle ausgibt.
      Du kannst in Pipewire aber Alsa, Pulseaudio und JACK Streams mischen nach Belieben.
      Normalerweise dürfte kein Resampling durchgeführt werden, wenn die Samplerate/Format zueinander passt.

      Ich hatte gestern eine Seite mit einigen Beispielen gefunden und bin der Meinung, dass da ein ähnlicher Anwendungsfall abgebildet war. Bin mir aber nicht sicher, nur beim Überfliegen drauf gestoßen. Komme vom Arbeitsplatz leider nicht an den Bookmark dran. Falls ich später dran denke, könnte ich den noch nachliefern.

      1. Avatar von Uwe
        Uwe

        Vielen Dank! Die Tips haben mich erst kurz frohlocken lassen, weil default.clock.rate und default.clock.allowed-rates anscheinend genau die Festlegungen sind, die mir fehlen, bzw. die falsch festgelegt sind.
        In der Anteiltung stehen jedoch Hinweise, die ich nicht verstehe, denn z.B. etc/pipewire/pipewire.conf gibt es nicht. Auch nicht das Verzeichnis.
        Bitte wo müssen denn diese Festlegungen rein und wo sind bitte die (grundlegenden) Definitionen jetzt schon, die ständig das mixen auf 48khz festlegen.
        Vielen Dank nochmal für Tipps, ich verstehe es wirklich gar nicht.

        1. Avatar von Ferdinand

          Es gibt bestimmt eine Standard /usr/share/pipewire/pipewire.conf. Diese ist nach /etc/pipewire/ zu kopieren und dort anzupassen, wenn nötig. Dieses Vorgehen ist unter Linux oft bei .conf-Dateien anzutreffen und ist best practice. So bleibt das Original unangetastet.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert