Schlagwort: Pipewire

  • Aktuelle Entwicklungen bei Fedora Workstation

    Screenshot: FThommes

     

    In der Fedora-Experimentierküche brodeln zu jeder Zeit interessante Entwicklungen. Red-Hat-Mitarbeiter Christian Schaller berichtet in unregelmäßigen Abständen über solche Entwicklungen, die dann in absehbarer Zeit in Fedora Workstation verfügbar sein werden. Jetzt bietet die kürzlich zu Ende gegangene GNOME-Entwicklerkonferenz GUADEC den Anlass für Schaller, einen neuen Bericht zu veröffentlichen.

    Wayland im Hintergrund

    Bei den meisten derzeitigen Projekten steht Wayland im Hintergrund. So etwa auch bei Remote Desktop und Desktop-Sharing. Hier stellen Unterschiede von X11 zum von Fedora Workstation seit einigen Veröffentlichungen als Standard eingesetzten Wayland-Protokoll die Entwickler vor neue Herausforderungen.

    Entfernte Desktops laden

    Jonas Ådahl arbeitet derzeit an Remote-Desktop für die GNOME-Shell. Die für Ende Oktober erwartete Veröffentlichung von Fedora 29 Workstation soll eine VNC-basierte Implementierung des Remote-Desktop bieten, weitere Protokolle wie etwa Spice sollen folgen. VNC ist zwar ziemlich veraltet, ist trotzdem noch recht weit verbreitet und anspruchslos im Einsatz. Um die Wayland-Sitzung über VNC zu teilen kommt das Multimedia-Framework PipeWire zum Einsatz, das vom GStreamer-Pionier Wim Taymans entwickelt wird.

    Desktop-Sharing per WebRTC

    Jan Grulich, Tomas Popela und Eike Rathke arbeiten seit geraumer Zeit am Desktop-Sharing unter Wayland mit Firefox und Chromium unter Zuhilfenahme von WebRTC. Auch hier spielt PipeWire das Bindeglied, indem die Browser jeweils ein PipeWire-Backend erhalten. Eine gepatchte Firefox-Version steht bereits seit einiger Zeit zum Testen für Fedora 28 und Fedora Rawhide bereit.

    PipeWire

    Auf der GUADEC 2017 hielt Entwickler Wim Taymans einen Vortrag über die Ideen hinter und den Entwicklungsstand von PipeWire. Hier wird unter anderem beständig an der Nachbildung der Funktionalität des professionellen Audio-Servers Jack gearbeitet. Die Player Totem und Rhythmbox können zum Abspielen von Audio über PipeWire mit dem PulseAudio-GStreamer-Plugin genutzt werden, nachdem ein Ersatz für die libpulse.so implementiert wurde.

    Im Herbst wird ein PipeWire und Linux Audio Hackfest stattfinden, bei dem die Teams von  PipeWire, GStreamer, Totem, GNOME Control Center, PulseAudio und Jack über die weitere Entwicklung von PipeWire diskutieren.

    GNOME Builder im Container

    GNOME Builder, die integrierte Entwicklungsumgebung, die seit einiger Zeit in den GNOME-Desktop integriert ist, wird maßgeblich von Christian Hergert entwickelt. Die derzeitige Entwicklung geht in Richtung Unterstützung für die Entwicklung hin zu Embedded-Geräten wie dem kommenden Linux-Smartphone Purism 5. Christian erwähnte zudem in seinem GUADEC-Vortrag, dass Builder wahrscheinlich die erste »Container Native IDE«  der Welt ist, indem es einerseits mit dem Ziel entwickelt wird, als Flatpak verteilt zu werden, als auch, Flatpaks als primäres Ausgabeformat zu erstellen.

    https://www.youtube.com/watch?v=Z9hPtg-caJ0
  • Screensharing unter Wayland erklärt

    Screensharing unter Wayland erklärt

    Bereits im März berichteten wir über die Bemühungen von Red-Hat-Entwickler Jan Grulich, Screensharing für KDE-Plasma unter Wayland zu realisieren. Da Wayland im Gegensatz zu X11 kein Netzwerkprotokoll ist, müssen für das Screensharing unter Wayland neue Wege gefunden werden. Dafür hatte Grulich bereits Backends in Form von xdg-desktop-portal und xdg-desktop-portal-[kde/gtk] für KDE-Plasma und die GNOME-Shell geschrieben und das Audio-Video-Framwork PipeWire zum Streamen auserkoren. Was fehlte, war eine Anwendung, mit der ein User Screensharing auch nutzen konnte.

    WebRTC als Screensharing-Anwendung

    Seit einigen Wochen arbeitet Grulich mit zwei Kollegen, daran, für diese Aufgabe die in Browsern verwendete Videochat-Technik WebRTC nutzbar zu machen, wie er jetzt in seinem Blog berichtet. WebRTC verwendet eine Klasse namens DesktopCapturer, die sowohl unter X11 als auch den Gegenstücken bei Windows oder macOS Verwendung findet. Diese Klasse hat das Team nun für Wayland aufgebohrt.

    Alle Bauteile zusammen

    Die Umsetzung dieser Idee unter Verwendung der Portals für Plasma und GNOME sowie PipeWire als Streaming-Agent konnte relativ einfach umgesetzt werden. Dank der Backend-Portals wird diese Technik auch in Sandboxen in Flatpak oder Snap funktionieren. Allerdings müssen die leicht unterschiedlichen Herangehensweisen der Browser an WebRTC noch angepasst werden, bevor der Code produktiv genutzt werden kann. Für Neugierige hat Grulich für Fedora ein Repository aufgesetzt, dass einen Firefox mit den entsprechenden Änderungen enthält.  Voraussetzung ist lediglich ein funktionierendes PipeWire.

    Screensharing unter Wayland

    Ein zweiter Blogeintrag von Grulich geht in die Praxis und erläutert schrittweise, wie Screensharing mit Wayland bereits jetzt auch außerhalb von Fedora genutzt werden kann. Wird der Plasma-Desktop verwendet, so wird hier Version 5.13.2 vorausgesetzt. Sowohl die GNOME-Shell als auch Plasma brauchen noch ein wenig Anpassung, wie Grulich erläutert. Der Blogeintrag bietet zudem für Interessierte am Ende einige Verweise, die das grundlegende Verständnis der verwendeten Techniken vertiefen sollen.

  • Plasmas Wayland-Session lernt Screen-Sharing

    Plasmas Wayland-Session lernt Screen-Sharing

    Wayland Screen-Sharing
    Bild: Fedora

    Ein generelles Defizit von Wayland ist das Fehlen von Netzwerktransparenz. Diese aus Sicherheitserwägungen fehlende Funktionalität bedeutet, dass das Wayland-Protokoll keine Lösung für etablierte Techniken wie Screen-Recording und -Sharing mitbringt. Diese Funktionalität muss bei Wayland über die Compositoren gegeben sein. Fedora- und KDE-Entwickler Jan Grulich arbeitet an der Bereitstellung dieser Funktionalität unter Plasma. Hierbei kommt neben einer neuen API auch das neue Multimedia-Framework Pipewire ins Spiel.

    API für Wayland Screen-Sharing

    Eine der Gründe für die Entwicklung von Pipewire war die Unterstützung von gewohnter Funktionalität, die unter anderem bei Flatpak und Wayland aus Sicherheitsaspekten einem neuen Ansatz folgen muss. Die benötigte API für Screen-Recording und -Sharing und Remote-Desktop wurde unlängst in das xdg-desktop-portal eingefügt. Mit Hilfe dieser API können Anwendungen nun auf Ihren Bildschirminhalt in Wayland-Sitzungen oder in Sandboxen wie bei Flatpak zugreifen.

    [su_slider source=“media: 4385″ link=“image“ width=“700″ height=“460″ mousewheel=“no“ autoplay=“0″ speed=“0″]

    Mit verschiedenen Backend-Implementierungen wie xdg-desktop-portal-kde oder xdg-desktop-portal-gtk muss nur eine einzige API unterstützt werden, um alle Desktops anzusprechen. Das Screen-Cast-Portal beispielsweise funktioniert so, dass der Client zunächst eine Sitzung mit der Backend-Implementierung des xdg-desktop-portal (xdp) erstellt.

    Pipewire liefert den Stream

    Der Benutzer erhält dann einen Dialog zur Freigabe des Bildschirms, den er freigeben möchte und startet damit die Bildschirmfreigabe. Sobald er das getan hat, erstellt die xdp-Backend-Implementierung einen Pipewire-Stream, sendet die Antwort an den Client mit Stream-ID zurück und der Client kann sich mit dieser ID mit dem Stream verbinden und seinen Inhalt abrufen.

    Grulich hat vor wenigen Tagen die Unterstützung für das Screen-Cast-Portal für das xdg-desktop-portal-kde in den KDE-Phabricator eingebracht und wartert derzeit auf das Ergebnis des Reviews. Er hofft, der Code könne früh genug für Plasma 5.13 freigegeben werden, dessen Veröffentlichung für den 12. Juni geplant ist.

  • Multimedia-Framework PipeWire auf gutem Weg

    Multimedia-Framework PipeWire
    Bild: Fedora

     

    Fedora 27 lieferte erstmals das neue Multimedia-Framework PipeWire aus. Die Anwendung soll für Audio und Video das leisten, was heute PulseAudio heute für Audio zu bieten hat. Darüber hinaus sollen auch professionelle Szenarien unter Einbeziehung des Soundservers Jack abgedeckt werden, die über die Funktionalität von PulseAudio hinausgehen. Begonnen hat die Entwicklung bereits vor einigen Jahren.

    GStreamer als Vorbild

    Entwickler Wim Taymans, der für Red Hat arbeitet, hatte bereits bei der Entwicklung von GStreamer federführend mitgearbeitet. Mit dem Aufkommen des alternativen Paketmodells Flatpak suchte er nach einer Möglichkeit, diesen Desktop-Containern – denn nichts anderes ist Flatpak – die Soundausgabe per PulseAudio zu ermöglichen. Im Anschluss begann er die Arbeit an PulseVideo, um das Gleiche auch für Bewegtbilder umzusetzen.

    Im Endeffekt fiel die Entscheidung, Audio und Video in einem Framework zu bündeln, das den Namen PipeWire erhielt. Jetzt hat Red-Hat-Kollege Christian Schaller die gerade stattfindende Fedora-Entwicklerkonferenz DevConf 2018 im tschechischen Brno zum Anlass genommen, anlässlich eines Gesprächs mit Wim Taymans über die Fortschritte bei PipeWire in seinem Blog zu berichten.

    Flatpak und Wayland profitieren

    Mittlerweile sind es nicht nur mehr Flatpak oder Container im Allgemeinen, die auf ein modernes Framework angewiesen sind, um den Zwängen einer Sandbox gerecht zu werden und containerisierten Anwendungen die Ausgabe von Audio und Video über den Host trotzt Restriktionen zu ermöglichen. Auch Wayland braucht im Bereich Multimedia neue Lösungen, will es die Funktionalität von Xorg besser abdecken.

    Das Anzeige-Protokoll Wayland ist mit mehr Augenmerk auf Sicherheit konzipiert als das rund 30 Jahre alte Netzwerkprotokoll X11. Aus diesem Grund wurde auch standardmäßig keine Netzwerktransparenz implementiert. Das bedeutet, dass das Wayland-Protokoll von Hause aus heute selbstverständliche Dinge wie Screensharing und -recording oder Remote Desktop per RDP oder VNC nicht unterstützt. Es gibt Anstrengungen,  auch für Oberflächen von Wayland-Anwendungen die Verwendung über das Netzwerk zu realisieren. Eine davon nennt sich Waltham und wird bei Collabora entwickelt. Hier geht es aber in erster Linie vorerst nicht um den Desktop, sondern um den Automobilbereich.

    Screensharing und Remote Desktop

    Eine weitere Entwicklung in diese Richtung, die wiederum PipeWire ins Spiel bringt, wird von Red Hats Jonas Ådahl vorangetrieben und soll diese Funktionalität für GNOME zurückbringen. Da die Funktion im Compositor verankert ist, wird sie auch von anderen Desktop-Umgebungen nutzbar sein, die Wayland einsetzen. Das ist zwar alles noch im experimentellen Stadium, aber PipeWire beherrscht bereits rudimentär das Teilen von Geräten, wie Entwickler Taymans am Beispiel der Videoanwendung Cheese und PipeWire im Terminal demonstrierte. Zwei Anwendungen teilen sich dabei eine Webcam ohne sich gegenseitig zu stören. Dabei kommt ein PipeWire-GStreamer-Plugin zum Einsatz, was die Anpassung an die jeweilige Anwendung übernimmt.

    Als Nächstes soll PipeWire zeitnah an Firefox und Chrome angepasst werden um Konferenzsoftware damit unter Wayland lauffähig zu bekommen. Der Sound-Server Jack für professionelle Ansprüche wie etwa geringe Latenzen wurde mittlerweile als Protokoll auf PipeWire draufgesetzt, sodass kein extra Jack-Server mehr vonnöten ist. Auf der Cosumer-Seite ist Bluetooth-Untzerstützung gegeben, wobei ein PipeWire-Bluetooth-Modul sich direkt mit dem  Bluez-Bluetooth-Framework verbindet.

    Aussichten

    PulseAudio-Applikationen sollen nach den Plänen der Entwickler zunächst Sound über PipeWire ausgeben. Für GStreamer-Apps stellt sich die Frage nicht, da sie nativ PipeWire nutzen. Für Apps, die noch ALSA verlangen, soll es ein PipeWire-ALSA-Layer geben so wie es jetzt ein PulseAudio-ALSA-Layer gibt. PulseAudio soll im späteren Verlauf einmal überflüssig werden, was jedoch einige Jahre dauern wird. Für das im Mai anstehende Fedora 28 soll zumindest der Video-Part ausgeliefert werden, weitere Schritte sollen mit den nächsten Veröffentlichungen folgen.