PulseAudio: Unterschied zwischen den Versionen
(+→Direkte Verbindung ohne Umweg über den lokalen PulseAudio-Server) |
Mist (Diskussion | Beiträge) ({{veraltet}}) |
||
(8 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
+ | {{veraltet}} | ||
+ | |||
Sowohl die [[minibox]] im Sofaraum als auch die [[Spacekiste]] im Frickelraum nehmen PulseAudio-Streams über Port 4713 aus dem lokalen Netzwerk an, und announcen ihren PulseAudio-Sinks über Zeroconf. Das macht es möglich, über beliebige Clients z.B. Musik zu streamen. | Sowohl die [[minibox]] im Sofaraum als auch die [[Spacekiste]] im Frickelraum nehmen PulseAudio-Streams über Port 4713 aus dem lokalen Netzwerk an, und announcen ihren PulseAudio-Sinks über Zeroconf. Das macht es möglich, über beliebige Clients z.B. Musik zu streamen. | ||
Zeile 9: | Zeile 11: | ||
Zu beachten ist, dass unter Debian/Ubuntu das Modul <tt>pulseaudio-module-zeroconf</tt> installiert sein muss. | Zu beachten ist, dass unter Debian/Ubuntu das Modul <tt>pulseaudio-module-zeroconf</tt> installiert sein muss. | ||
+ | |||
+ | === Sinks === | ||
+ | Die Sinks auf den beiden Rechnern heißen (sofern Multicast DNS und Auto-Discovery via Zeroconf (siehe [[#Client-Seite|unten]]) auf dem Client aktiviert ist): | ||
+ | * <tt>tunnel.minibox.local.alsa_output.pci-0000_00_08.0.analog-stereo</tt> | ||
+ | * <tt>tunnel.minibox.local.alsa_output.0.iec958-stereo</tt> (Digital-Ausgang, aber meist nicht angeschlossen) | ||
+ | * <tt>tunnel.spacekiste.local.alsa_output.pci-0000_00_1b.0.analog-stereo</tt> | ||
== Client-Seite == | == Client-Seite == | ||
− | Um Audio-Streams über die Spacekiste oder die minibox wiederzugeben, gibt es mehrere Wege. | + | Um Audio-Streams über die Spacekiste oder die minibox wiederzugeben, gibt es mehrere Wege. Um den lokalen PulseAudio-Server anzuweisen, Audio-Streams umzuleiten, muss das Modul <tt>module-zeroconf-discover</tt> aktiviert sein (unter Debian/Ubuntu/Fedora im Paket <tt>pulseaudio-module-zeroconf</tt> enthalten). Dazu muss <tt>/etc/pulse/default.pa</tt> die folgende Zeile enthalten: |
+ | load-module module-zeroconf-discover | ||
+ | Nach Anpassen der Datei muss PulseAudio neu gestartet werden: <tt>pulseaudio --kill && pulseaudio --start</tt> | ||
− | == <tt>pacmd</tt> == | + | === <tt>pacmd</tt> === |
− | Ein nützliches Konsolen-Programm für alles mögliche. | + | Ein nützliches Konsolen-Programm für alles mögliche. |
==== Einzelne Audio-Streams umleiten ==== | ==== Einzelne Audio-Streams umleiten ==== | ||
Zeile 51: | Zeile 61: | ||
module-stream-restore.id = "sink-input-by-application-name:MPlayer" | module-stream-restore.id = "sink-input-by-application-name:MPlayer" | ||
− | Außerdem braucht man den Index der Sink auf dem Server | + | Außerdem braucht man den Index oder den Namen der Sink auf dem Server (siehe [[#Sinks|oben]], den Index kann man zur Not auch mit <tt>pacmd list-sinks</tt> herausfinden). |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
So kann man jetzt PulseAudio anweisen, den entsprechenden Stream umzuleiten: | So kann man jetzt PulseAudio anweisen, den entsprechenden Stream umzuleiten: | ||
− | pacmd move-sink-input 22 | + | pacmd move-sink-input 22 tunnel.minibox.local.alsa_output.pci-0000_00_08.0.analog-stereo |
==== Alle Audio-Streams umleiten ==== | ==== Alle Audio-Streams umleiten ==== | ||
Um jegliche Audio-Ausgabe vom Client auf den Server umzuleiten, sucht man wie oben den Sink-Index des Servers heraus. Diesen setzt man dann einfach als Standard-Sink: | Um jegliche Audio-Ausgabe vom Client auf den Server umzuleiten, sucht man wie oben den Sink-Index des Servers heraus. Diesen setzt man dann einfach als Standard-Sink: | ||
− | pacmd set-default-sink | + | pacmd set-default-sink tunnel.minibox.local.alsa_output.pci-0000_00_08.0.analog-stereo |
Schon laufende Audio-Streams müssen mit der obigen Methode einzeln verschoben werden. | Schon laufende Audio-Streams müssen mit der obigen Methode einzeln verschoben werden. | ||
− | == pavucontrol == | + | === pavucontrol === |
Mit der Lautstärkeregelung auf Gnome-Systemen kann man das ganze auch per Maus erledigen (siehe Bilder). Die Default Sink kann man auf dem Tab ''Output Devices'' über den Button ''Set as fallback'' festsetzen. | Mit der Lautstärkeregelung auf Gnome-Systemen kann man das ganze auch per Maus erledigen (siehe Bilder). Die Default Sink kann man auf dem Tab ''Output Devices'' über den Button ''Set as fallback'' festsetzen. | ||
<gallery widths="400" heights="200"> | <gallery widths="400" heights="200"> | ||
Zeile 102: | Zeile 79: | ||
</gallery> | </gallery> | ||
− | == Direkte Verbindung ohne Umweg über den lokalen PulseAudio-Server == | + | === Direkte Verbindung ohne Umweg über den lokalen PulseAudio-Server === |
Man kann einzelne Anwendungen auch anweisen, sich direkt mit dem Server zu verbinden, ohne Umweg über den lokalen PulseAudio-Server auf dem Client-System. Dazu setzt man die Umgebungsvariable <tt>PULSE_SERVER</tt> auf den Namen oder die IP-Adresse des Servers: | Man kann einzelne Anwendungen auch anweisen, sich direkt mit dem Server zu verbinden, ohne Umweg über den lokalen PulseAudio-Server auf dem Client-System. Dazu setzt man die Umgebungsvariable <tt>PULSE_SERVER</tt> auf den Namen oder die IP-Adresse des Servers: | ||
PULSE_SERVER=minibox.local mplayer schönemusik.mp3 | PULSE_SERVER=minibox.local mplayer schönemusik.mp3 | ||
− | Das hat prinzipiell den Vorteil, dass | + | Das hat prinzipiell den Vorteil, dass kein lokaler PulseAudio-Server laufen muss (auch das Modul <tt>module-zeroconf-discover</tt> muss nicht wie oben geladen sein). Außerdem fügt ein lokaler PulseAudio-Server tendenziell eher mehr Latenz zum Signal hinzu und verbraucht CPU. |
+ | |||
+ | === Wiedergabe im ganzen Space (buggy, CPU-lastig) === | ||
+ | Pulse hat theoretisch die Möglichkeit, mehrere Sinks gleichzeitig zu bespielen. Dies macht das Modul <tt>module-combine-sink</tt>. Dabei werden ein oder mehrere Sinks unter einem neuen, virtuellen Sink neu zusammengefasst. | ||
+ | |||
+ | pacmd load-module module-combine-sink sink_name=space slaves=tunnel.spacekiste.local.alsa_output.pci-0000_00_1b.0.analog-stereo,tunnel.minibox.local.alsa_output.pci-0000_00_08.0.analog-stereo | ||
+ | |||
+ | Hier habe ich den neuen virtuellen Sink <tt>space</tt> genannt, die Namen der Slave-Sinks werden mit Kommata getrennt. | ||
+ | Danach soll der virtuelle Sink an den üblichen, verdächtigen Stellen auftauchen (auch im <tt>pavucontrol</tt>), habe es so aber noch nicht zum Laufen bekommen. | ||
+ | Eine direktere Möglichkeit zur Wiedergabe ist | ||
+ | mplayer -ao pulse::space nyancat.opus | ||
+ | Hat aber Audioglitches trotz vergrößerter Buffer, läuft nach einigen Sekunden aus der Synchronisation und verursacht derzeit 17% CPU-Last. | ||
[[Kategorie:Infrastruktur]] | [[Kategorie:Infrastruktur]] | ||
[[Kategorie:Dokumentation]] | [[Kategorie:Dokumentation]] |
Aktuelle Version vom 22. Juni 2018, 13:19 Uhr
Die Informationen in diesem Artikel oder Absatz sind nicht mehr aktuell.
Sowohl die minibox im Sofaraum als auch die Spacekiste im Frickelraum nehmen PulseAudio-Streams über Port 4713 aus dem lokalen Netzwerk an, und announcen ihren PulseAudio-Sinks über Zeroconf. Das macht es möglich, über beliebige Clients z.B. Musik zu streamen.
Inhaltsverzeichnis
Server-Seite
Aud dem Server in /etc/pulse/default.pa müssen diese zwei Zeilen aktiviert werden:
load-module module-native-protocol-tcp auth-anonymous=1 load-module module-zeroconf-publish
Dann entweder neu einloggen (der PulseAudio-Server ist ja immer an einen Benutzer-Session gekoppelt), oder PulseAudio neustarten: pulseaudio --kill && pulseaudio --start
Zu beachten ist, dass unter Debian/Ubuntu das Modul pulseaudio-module-zeroconf installiert sein muss.
Sinks
Die Sinks auf den beiden Rechnern heißen (sofern Multicast DNS und Auto-Discovery via Zeroconf (siehe unten) auf dem Client aktiviert ist):
- tunnel.minibox.local.alsa_output.pci-0000_00_08.0.analog-stereo
- tunnel.minibox.local.alsa_output.0.iec958-stereo (Digital-Ausgang, aber meist nicht angeschlossen)
- tunnel.spacekiste.local.alsa_output.pci-0000_00_1b.0.analog-stereo
Client-Seite
Um Audio-Streams über die Spacekiste oder die minibox wiederzugeben, gibt es mehrere Wege. Um den lokalen PulseAudio-Server anzuweisen, Audio-Streams umzuleiten, muss das Modul module-zeroconf-discover aktiviert sein (unter Debian/Ubuntu/Fedora im Paket pulseaudio-module-zeroconf enthalten). Dazu muss /etc/pulse/default.pa die folgende Zeile enthalten:
load-module module-zeroconf-discover
Nach Anpassen der Datei muss PulseAudio neu gestartet werden: pulseaudio --kill && pulseaudio --start
pacmd
Ein nützliches Konsolen-Programm für alles mögliche.
Einzelne Audio-Streams umleiten
Man startet die Wiedergabe auf dem Client und sucht sich dann mit pacmd list-sink-inputs den Index des Streams, den man umleiten will. Die Ausgabe sieht etwa wie folgende aus:
>>> 1 sink input(s) available. index: 22 driver: <protocol-native.c> flags: state: RUNNING sink: 0 <alsa_output.pci-0000_00_1b.0.analog-stereo> volume: 0: 64% 1: 64% 0: -11.47 dB 1: -11.47 dB balance 0.00 muted: no current latency: 79.66 ms requested latency: 210.00 ms sample spec: float32le 2ch 44100Hz channel map: front-left,front-right Stereo resample method: copy module: 7 client: 174 <MPlayer> properties: media.name = "audio stream" application.name = "MPlayer" native-protocol.peer = "UNIX socket client" native-protocol.version = "26" application.process.id = "28609" application.process.user = "rohieb" application.process.host = "r2d2" application.process.binary = "mplayer" application.language = "C" window.x11.display = ":0" application.process.machine_id = "3d50ca96e3bbb8de38d0d46a00000298" application.process.session_id = "3d50ca96e3bbb8de38d0d46a00000298-1349808857.893717-1874973741" module-stream-restore.id = "sink-input-by-application-name:MPlayer"
Außerdem braucht man den Index oder den Namen der Sink auf dem Server (siehe oben, den Index kann man zur Not auch mit pacmd list-sinks herausfinden).
So kann man jetzt PulseAudio anweisen, den entsprechenden Stream umzuleiten:
pacmd move-sink-input 22 tunnel.minibox.local.alsa_output.pci-0000_00_08.0.analog-stereo
Alle Audio-Streams umleiten
Um jegliche Audio-Ausgabe vom Client auf den Server umzuleiten, sucht man wie oben den Sink-Index des Servers heraus. Diesen setzt man dann einfach als Standard-Sink:
pacmd set-default-sink tunnel.minibox.local.alsa_output.pci-0000_00_08.0.analog-stereo
Schon laufende Audio-Streams müssen mit der obigen Methode einzeln verschoben werden.
pavucontrol
Mit der Lautstärkeregelung auf Gnome-Systemen kann man das ganze auch per Maus erledigen (siehe Bilder). Die Default Sink kann man auf dem Tab Output Devices über den Button Set as fallback festsetzen.
Direkte Verbindung ohne Umweg über den lokalen PulseAudio-Server
Man kann einzelne Anwendungen auch anweisen, sich direkt mit dem Server zu verbinden, ohne Umweg über den lokalen PulseAudio-Server auf dem Client-System. Dazu setzt man die Umgebungsvariable PULSE_SERVER auf den Namen oder die IP-Adresse des Servers:
PULSE_SERVER=minibox.local mplayer schönemusik.mp3
Das hat prinzipiell den Vorteil, dass kein lokaler PulseAudio-Server laufen muss (auch das Modul module-zeroconf-discover muss nicht wie oben geladen sein). Außerdem fügt ein lokaler PulseAudio-Server tendenziell eher mehr Latenz zum Signal hinzu und verbraucht CPU.
Wiedergabe im ganzen Space (buggy, CPU-lastig)
Pulse hat theoretisch die Möglichkeit, mehrere Sinks gleichzeitig zu bespielen. Dies macht das Modul module-combine-sink. Dabei werden ein oder mehrere Sinks unter einem neuen, virtuellen Sink neu zusammengefasst.
pacmd load-module module-combine-sink sink_name=space slaves=tunnel.spacekiste.local.alsa_output.pci-0000_00_1b.0.analog-stereo,tunnel.minibox.local.alsa_output.pci-0000_00_08.0.analog-stereo
Hier habe ich den neuen virtuellen Sink space genannt, die Namen der Slave-Sinks werden mit Kommata getrennt. Danach soll der virtuelle Sink an den üblichen, verdächtigen Stellen auftauchen (auch im pavucontrol), habe es so aber noch nicht zum Laufen bekommen. Eine direktere Möglichkeit zur Wiedergabe ist
mplayer -ao pulse::space nyancat.opus
Hat aber Audioglitches trotz vergrößerter Buffer, läuft nach einigen Sekunden aus der Synchronisation und verursacht derzeit 17% CPU-Last.