Netz&System Pipewire © Anna Denisova, 123RF © Anna Denisova,

Das neue Framework Pipewire verbindet Audio und Video Unter einem Hut

Mit dem Framework Pipewire Audio und Video gehören heute zu den aus den Labors von Red Hat respektive wichtigen Anwendungsbereichen so- dessen Community-Version Fedora – da, möchten dessen Entwickler wohl beim privaten Desktop-Computing wo auch Wayland und her­ wie im professionellen Bereich. Aktuelle kommen. Hauptentwickler von Pipewire alte wie neue Probleme bei Trends und der wachsende Fokus auf ist der bei Red Hat beschäftige Wim Tay- ­Sicherheit bei Rechnern, Betriebssyste- mans , ein Veteran aus der Gstreamer- ­Audio und Video lösen. men und Anwendungen stellen das Entwicklung. Der Name Pipewire bezieht ­Segment Multimedia aber vor neue sich auf die Pipelines in Gstreamer, die Ferdinand Thommes ­He­rausforderungen. unterschiedliche Systeme zum Verarbei- Mit Wayland gelingt es standardmäßig ten von Medien zu komplexen Ketten nicht mehr, Vorgänge auf dem Bildschirm verknüpfen 1. Das Framework basiert README mit Screen-Rekordern wie Record­my­ auf einer neuen API namens Simple desk­top oder Vokoscreen aufzuzeichnen: ­Plugin API oder kurz SPA. Mit Pipewire steht ein gemeinsames Frame- Das Anzeigeprotokoll verzichtet aus Pipewire erblickte im September 2017 work für Audio und Video ins Haus, und es Gründen der Sicherheit auf Netzwerk- das Licht der Öffentlichkeit , hat seit- peilt außerdem den professionellen Audio- transparenz. Auch die Ausgabe von dem aber eine rasante Entwicklung Bereich an. Mit ihm suchen die Entwickler ­Audio- und Video-Dateien in Containern durchlaufen. Zwar enthält Fedora 27 die  einen Ausweg aus Problemen, die durch wie Flatpak erfordert neue Techniken. Software bereits, doch diese hat noch Hier kommt Pipewire ins Spiel, ein ein gutes Stück Weg vor sich. Unter Wayland und Flatpak entstehen. neues Multimedia-Framework für ­Fedora 27 zeigt ein Terminal die installier-

74 www.linux-user.de 05.2018 Pipewire Netz&System

1 Der Name Pipewire geht auf die Pipelines zurück, über die das schon bestehende Framework Gstreamer unterschiedliche Aktionen auf Multimediadaten zu Ketten zusammenfügt. (ScotXW, CCO 1.0, commons.wikimedia.org)

ten Pakete von Pipewire 2. Per pipe­ positor über ein D-Bus-API oder ein Flat- wire‑cli gelangen Sie auf der Komman- pak-Portal abgestimmt und die Erlaub- dozeile in einen Modus, in dem diese nis eingeholt hat. ­direkt Befehle entgegennimmt. Nach Eingabe von help sehen Sie die Optio- Jack implementiert nen, die die Software akzeptiert 3. Für den Audio-Bereich integrierten die Hardware teilen Developer mittlerweile das Jack-Proto- koll  in Pipewire. Das ermöglicht, ent- Pipewire verfolgt mehrere Ziele. Primär sprechende Anwendungen ohne Jack dient es sich als Framework für Audio auszuführen. Später könnte Pipewire und Video an, auch für den professio­ dann den jetzigen Standard-Sound­ nellen Bereich. Dabei gibt es drei große server Pulseaudio ablösen. Schon jetzt Herausforderungen im Video-Bereich zu dürfen alle Anwendungen Pipewire im lösen. Die erste davon stellt das Teilen Hintergrund einsetzen, die Gstreamer von Geräten dar, das es ermöglicht, dass oder Alsa nutzen. Ein Blick auf die sche- mehrere Anwendungen dieselbe Video-­ matische Darstellung zeigt, dass das Hardware gemeinsam nutzen, wie bei- neue Framework als verbindende spielsweise eine Webcam. Schicht zwischen Kernel-Modulen und Das will Pipewire zweitens auf sichere Anwendungen fungiert 4. Art und Weise ermöglichen, um zu ver- Lediglich solche Anwendungen blei- hindern, dass unberechtigte Prozesse ben derzeit noch außen vor, die auf die die Daten abgreifen. Als drittes Ziel peilt Netzwerktransparenz von Pulseaudio Pipewire den effizienten Austausch von angewiesen sind – dabei geht es haupt- Multimediadaten zwischen Anwendun- sächlich um Netzwerk-Streaming. Ein gen an – etwa Fullscreen-Captures von weiterer Anwendungsbereich für den einem Compositor wie der Gnome Shell zu einer Browseranwendung für Video- konferenzen wie Google Hangouts oder Nextcloud Talk. Da die Sicherheit einer der treibenden Kräfte für den Umstieg vom X-Window- System auf Wayland war, legten die Ent- wickler viel Wert darauf, die problema­ tischen Stellen nicht im Wayland-Com- positor nachzubilden. Beispielsweise ­erlaubt Pipewire nur dann, dass eine ­Applikation ein Capture vom Vollbild 2 Die derzeit unter Fedora verfügbaren fünf Pakete zum neuen Audio-Video-­ macht, wenn diese sich mit dem Com- Framework Pipewire weisen die Anwendung als Media Sharing Server aus.

05.2018 www.linux-user.de 75 Netz&System Pipewire

Newcomer im Bereich Multimedia stellt die Webcam zugreifen. Beide nutzen das Verbinden von Geräten via Blue- dazu das Gstreamer-Framework und ha- tooth dar, wobei er sich über ein ent- ben somit über das Pipewire-Gstreamer- sprechendes Modul direkt ins BlueZ- Plugin automatisch die Unterstützung Framework  unter Linux einklinkt. für Pipewire an Bord. Das gilt für alle auf Ende Januar hat der Desktop-Mana­ Gstreamer basierenden Anwendungen, ger von Red Hat, Christian Schaller, ohne dass Anpassungen an der Software Wim Taymans auf der DevConf 2018 im notwendig wären 5. tschechischen Brno getroffen und sich über den aktuellen Stand des Projekts Pipewire und Plasma informiert . Der Schwerpunkt der Ar- beit liegt derzeit auf den Methoden, die Jan Grulich, ein weiterer Mitarbeiter von das Screen-Sharing und Recording Red Hat, der hauptsächlich an Qt und ­unter Wayland ermöglichen. KDE arbeitet, griff das neue Framework Somit hat derzeit Video die Präferenz. auf, um in einer Plasma-Wayland-Sitzung Es soll einerseits Anwendungs- und das Aufnehmen und Teilen des Desktops Desktop-Entwicklern eine neue Metho- zu implementieren . Solche Szenarien de für die Freigabe des Bildschirms bie- lassen sich aus Sicherheitsgründen nicht ten und andererseits für Anwendungen mit Bordmitteln von Wayland abwickeln. innerhalb eines Desktop-Containers wie Die benötigte API haben die Entwick- Flatpak einen sicheren Weg für den Zu- ler kürzlich in XDG-desktop-portal ein­ griff auf Audio- und Videogeräte ermög- gefügt. Mithilfe dieser API können An- lichen. Dabei sorgt D-Bus dafür, dass die wendungen nun auf Bildschirminhalte in Clients sich sicher authentifizieren, wäh- Wayland-Sitzungen oder einer Sandbox rend Pipewire transparent Inhalte und wie Flatpak zugreifen. Anwendungen innerhalb und außerhalb Bei Portalen handelt es sich um weit der Sandbox verbindet. oben angesiedelte Session-Bus-APIs, die Neben seinem Vortrag auf der Konfe- einen trennscharfen Zugriff auf Ressour- renz  gab Taymans Schaller einen prak- cen für Sandbox-Anwendungen ermög- tischen Einblick, was Pipewire im Bereich lichen. Die Verantwortung, ob er einer Video bereits erlaubt. So können schon Anfrage aus einem Portal den Zugriff er- jetzt zwei Anwendungen gleichzeitig auf teilt oder verweigert, liegt dabei immer

3 Das Tool pipewire‑cli zeigt auf der Kommandozeile mit dem Parameter help die verfügbaren Befehle an.

76 www.linux-user.de 05.2018 Pipewire Netz&System

App

Gstreamer VLC App1 App2

Pipewire

V4L2 Bluetooth Alsa Va-api DRM Kernel

4 Pipewire knüpft Verbindungen zwischen Kernel und Multimedia-Anwendungen. (Quelle: Wim Taymans)

beim Benutzer. Daher führen die meis- Plasma-Wayland-Sitzung mit Screen-­ ten Portal-APIs zu einer Interaktion in Recording, Screen-Sharing sowie Re­ Form eines Dialogs, um Berechtigungen mote-Zugriff für Anwendungen mit oder temporär oder dauerhaft zu erteilen ohne Sandbox auf. oder zu verweigern. Dem gleichen Unterfangen hat sich Mit verschiedenen Backend-Implemen- der Red-Hat-Mitarbeiter Jonas Ådahl für tierungen wie XDG-desktop-portal-kde den Gnome-Desktop gewidmet. Hier oder XDG-desktop-portal-gtk brauchen fehlte ebenfalls ab Fedora 25 mit dem die Entwickler nur eine API zu unterstüt- Umstieg auf Wayland die Möglichkeit zen, um alle Desktops anzusprechen. Das zum Screencasting und für Sitzungen Screencast-Portal etwa funktioniert so, auf entfernten Rechnern. Für Anwen- dass der Client zunächst eine Sitzung mit der Backend-Implementation von XDG- desktop-portal (XDP) erstellt und dann die Freigabe für den Bildschirm über ei- nen Dialog startet 6. Daraufhin erstellt die XDG-Backend- Implementation einen Pipewire-Stream und sendet die Antwort samt Stream-ID an den Client zurück. Der wiederum ist in der Lage, sich mit der entsprechenden ID mit dem Stream verbinden und des- sen Inhalt abrufen 6.

Plasma und Gnome

Klappt alles wie gedacht, dann bringt bereits das für den 12. Juni zum Release anstehende Plasma 5.13 eine Pipewire- 5 Zwei Anwendungen greifen per Pipewire gleichzeitig auf eine Webcam zu. Implementation mit und wertet so die (Bild: Christian F. K. Schaller)

05.2018 www.linux-user.de 77 Netz&System Pipewire

dungen wie VNC oder RDP mussten mehr zu tun. Canonical plant Pipewire ­Anwender über ein Jahr lang eigens eine für Ubuntu 18.10 ein – falls die Distribu- X11-Session starten. tion im Oktober zu Wayland zurückkehrt. Ådahl fügte dem Gnome-Fenster­ Bei Debian gibt es ebenfalls bereits ein manager und Compositor Mutter die Repository für den Neuzugang. zwei D-Bus-APIs org..Mutter.­ RemoteDesktop und org.gnome.Mutter. Fazit ScreenCast hinzu. Sie stellen einen ­Pipewire-Stream bereit, der den Inhalt Die vollständige Implementation und der Bildschirme des Systems enthält. ­Integration von Pipewire ist ein großes Die neuen APIs ermöglichen, Vollbild- Unterfangen, das sicher noch eine Weile Streams oder Streams für einzelne Fens- braucht. Dann verfügt Linux hoffentlich ter lokal oder remote zu erstellen 7. über ein Multimedia-Framework, das Bislang ist allerdings nur Ersteres imple- länger Bestand hat als seine Vorgänger mentiert  – die Implementation gilt und zudem die Funktionen für Audio noch als experimentell. und Video vereint. Gstreamer erspart In der derzeit am weitesten verbreite- den Entwicklern aufgrund des entspre- ten Version Gnome 3.26 ist es nötig, die chenden Plugins viel Arbeit; sie müssen Pipewire-Unterstützung von Hand ein- entsprechende Anwendungen nicht von zukompilieren, im frisch veröffentlichten Hand anpassen. Gnome 3.28 brauchen Sie das nicht Dasselbe plant Wim Taymans für An- wendungen, die auf die Alsa-Userspace- API aufsetzen; den Soundserver Jack hat er bereits implementiert. Bis allerdings Pulseaudio vollständig eingebunden oder ersetzt ist, vergeht sicher noch ­einige Zeit. Vorerst bleibt es erhalten und gibt seinen Sound über Pipewire aus. Das betrifft aber nur Anwendungen, die nicht über Gstreamer oder Alsa, 6 Der Anwender ­sondern direkt über Pulseaudio gehen. wählt künftig in Die Lösungen für das sichere Aufzeich- einer­ Wayland-­ nen beziehungsweise Teilen von Bild- Sitzung ab KDE schirminhalten sowie Remote-Sitzungen Plasma 5.13 über kommen möglicherweise gerade zur einen Dialog den rechten Zeit. Die von Jan Grulich entwi- zu teilenden ckelte Lösung über Portals für verschiede- Bildschirm­ aus. ne Desktops steht in wenigen Monaten – nach dem Release von Fedora 28 und Plasma 5.13 – sowohl für GTK- als auch für Qt-basierte Applikationen bereit. Das Erreichte darf jedoch nicht da­rü­ Mutter Pipewire-0 Screen Recording ber hinwegtäuschen, dass die Pipe­wire- Implementationen derzeit noch viele Fehler enthalten und wichtige Funktio- nen fürs Erste fehlen. Das Framework braucht also noch Zeit, bevor es als Remote Desktop ­Linux-Standard auftreten darf. (agr) n

Weitere Infos und interessante Links 7 Der Gnome-Fenstermanager Mutter erhält per Pipewire einen Stream für das Teilen www.​­linux‑user.​­de/​­qr/​­40756 des Bildschirms lokal und auf entfernten Geräten. (Quelle: Wim Taymans)

78 www.linux-user.de 05.2018