Nächste: , Vorige: , Nach oben: Persönliche Dienste   [Inhalt][Index]


13.3.11 Persönliche Tondienste

Das Modul (gnu home services sound) stellt Dienste bereit, die mit Sound-Unterstützung zu tun haben.

PulseAudio-RTP-Streaming-Dienst

Mit den folgenden Diensten wird der PulseAudio-Audioserver dynamisch umkonfiguriert: Damit können Sie eine Audioausgabe als Broadcast an andere Geräte über das Netzwerk ausstrahlen. Dazu wird das Protokoll RTP (Real-time Transport Protocol) benutzt. Ebenso kann über RTP empfangener Ton wiedergegeben werden. Sobald Sie home-pulseaudio-rtp-sink-service-type als Persönlichen Dienst eingerichtet haben, können Sie mit folgendem Befehl eine Audiobroadcasting-Ausgabe starten:

herd start pulseaudio-rtp-sink

Führen Sie dann ein PulseAudio unterstützendes Mischprogramm wie pavucontrol oder pulsemixer aus (beide sind in gleichnamigen Paketen zu finden), um zu steuern, welche Audio-Streams an das RTP-Ziel geschickt werden.

Nach der Vorgabeeinstellung wird Audio an eine Multicast-Adresse geschickt, so dass jedes Gerät im LAN (Local Area Network) es empfängt und abspielen kann. Doch dafür Multicast zu benutzen, lastet das Netzwerk aus und verschlechtert es, deswegen ist es Ihnen womöglich lieber, Audio an ein bestimmtes Netzwerkgerät zu senden. Die eine Möglichkeit ist, die IP-Adresse des Zielgeräts beim Starten des Dienstes mitanzugeben:

herd start pulseaudio-rtp-sink 192.168.1.42

Die andere Möglichkeit ist, die zu benutzende IP-Adresse in Ihrer Persönlichen Konfiguration als Standard einzutragen:

(service home-pulseaudio-rtp-sink-service-type
         "192.168.1.42")

Auf dem Netzwerkgerät, das den RTP-Stream empfangen und abspielen soll, können Sie home-pulseaudio-rtp-source-service-type wie hier benutzen:

(service home-pulseaudio-rtp-source-service-type)

Und so wird das Empfangsmodul für PulseAudio gestartet:

herd start pulseaudio-rtp-source

Auch hier ist vorgegeben, die Multicast-Adresse zu verwenden. Wenn Sie stattdessen auf direkt eingehende Verbindungen lauschen lassen möchten, führen Sie Folgendes aus:

(service home-pulseaudio-rtp-source-service-type
         "0.0.0.0")

Es folgt die Referenz dieser Dienste.

Variable: home-pulseaudio-rtp-sink-service-type
Variable: home-pulseaudio-rtp-source-service-type

Mit diesem Diensttyp senden bzw. empfangen Sie Audio-Streams über RTP (Real-time Transport Protocol).

Als Wert wird eine IP-Adresse zugewiesen (als Zeichenkette), an die der Audio-Stream gesendet bzw. von der er empfangen wird. Vorgegeben ist, Audio an die bzw. von der Multicast-Adresse %pulseaudio-rtp-multicast-address zu senden bzw. zu empfangen.

Ein solcher Dienst definiert einen Shepherd-Dienst: pulseaudio-rtp-sink bzw. pulseaudio-rtp-source. Der Dienst wird nicht automatisch gestartet; Sie müssen ihn manuell starten, wenn Sie ihn laufen lassen möchten, wie in diesem Beispiel:

herd start pulseaudio-rtp-sink

Wenn Sie den Shepherd-Dienst stoppen, endet das Broadcasting.

Variable: %pulseaudio-rtp-multicast-address

Dies ist die Multicast-Adresse, die nach Vorgabe von den obigen zwei Diensten benutzt wird.

Persönlicher PipeWire-Dienst

PipeWire stellt einen Dienst für die Ein- und Ausgabe von Audio und Video bereit, der sich durch eine geringe Latenz und graphenbasierte Verarbeitung auszeichnet. Zusätzlich zum eigenen Protokoll kann PipeWire sowohl JACK als auch PulseAudio bedienen.

Zwar kümmert sich PipeWire um die Medienverarbeitung und stellt die API bereit, doch kennt es nicht selbst die Geräte wie z.B. die Soundkarten. Auch weiß es nicht, wie Sie Anwendungen, Hardware und Filter zur Medienverarbeitung verbinden möchten. Stattdessen übernimmt das bei PipeWire ein Programm zur Sitzungsverwaltung. Mit diesem geben Sie all diese Beziehungen an. Obwohl Sie zur Sitzungsverwaltung ein Programm Ihrer Wahl einsetzen könnten, ist die Referenzimplementierung WirePlumber des PipeWire-Projekts für die meisten Leute die richtige Wahl, deswegen wird er im home-pipewire-service-type benutzt.

PipeWire kann PulseAudio ersetzen, indem Sie enable-pulseaudio? in home-pipewire-configuration auf #t setzen, damit noch auf das bisherige PulseAudio ausgerichtete Clients PipeWire ohne weitere Konfiguration benutzen können.

Außerdem können sich JACK-Clients mit PipeWire verbinden. Dazu verwenden Sie das mit PipeWire mitgelieferte Programm pw-jack. Stellen Sie dem Befehl einfach pw-jack voran, wenn Sie ihn ausführen, dann sollten die Audio-Daten über PipeWire laufen:

pw-jack mpv -ao=jack sound-file.wav

Mehr Informationen zur PulseAudio-Emulation finden Sie auf https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/Config-PulseAudio bzw. für JACK auf https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/Config-JACK.

Weil PipeWire seine Dienste nicht bei Bedarf über dbus startet (wie bei PulseAudio), werden mit home-pipewire-service-type die Dienste über Shepherd bei der Anmeldung gestartet. Dadurch werden die Dienste pipewire, wireplumber sowie, wenn die Konfiguration es vorgibt, pipewire-pulseaudio bereitgestellt. Siehe Benutzer-Daemons verwalten.

Variable: home-pipewire-service-type

Hiermit wird die Dienstdefinition für pipewire zur Verfügung gestellt, das bei der Anmeldung gestartet wird. Sein Wert ist ein home-pipewire-configuration-Objekt.

Um den Dienst zu starten, tragen Sie ihn im service-Feld Ihrer home-environment-Deklaration ein, etwa so:

Datentyp: home-pipewire-configuration

Verfügbare home-pipewire-configuration-Felder sind:

pipewire (Vorgabe: pipewire) (Typ: dateiartig)

Das zu benutzende PipeWire-Paket.

wireplumber (Vorgabe: wireplumber) (Typ: dateiartig)

Das zu benutzende WirePlumber-Paket.

enable-pulseaudio? (Vorgabe: #t) (Typ: Boolescher-Ausdruck)

Wenn es auf wahr gesetzt ist, wird PipeWires Emulation für PulseAudio aktiviert, so dass Clients für PulseAudio transparent PipeWire dafür nutzen können.


Nächste: Persönliche Maildienste, Vorige: Persönliche Schriftarten-Dienste, Nach oben: Persönliche Dienste   [Inhalt][Index]