X-Git-Url: http://git.rohieb.name/stratum0-wiki.git/blobdiff_plain/7d25968d11522f970d9a84bb3c00c759ea7d0b4f..1d0a39528eefad7bb640b0a075fd00f1e8d2ff2a:/PulseAudio.mw diff --git a/PulseAudio.mw b/PulseAudio.mw index bc63ecbf7..0f870a3a2 100644 --- a/PulseAudio.mw +++ b/PulseAudio.mw @@ -1,3 +1,5 @@ +{{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. == Server-Seite == @@ -9,11 +11,19 @@ Dann entweder neu einloggen (der PulseAudio-Server ist ja immer an einen Benutze 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 [[#Client-Seite|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 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. +=== 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: @@ -50,55 +60,40 @@ Man startet die Wiedergabe auf dem Client und sucht sich dann mit pacmd list application.process.session_id = "3d50ca96e3bbb8de38d0d46a00000298-1349808857.893717-1874973741" module-stream-restore.id = "sink-input-by-application-name:MPlayer" -Außerdem braucht man den Index der Sink auf dem Server. Diesen kann man mit pacmd list-sinks herausfinden (einfach nach den menschenlesbaren Bezeichnungen suchen…). Beispiel: - - index: '''10''' - name: - driver: - flags: NETWORK HW_MUTE_CTRL HW_VOLUME_CTRL LATENCY - state: SUSPENDED - suspend cause: IDLE - priority: 0 - volume: 0: 75% 1: 75% - balance 0.00 - base volume: 100% - volume steps: 65537 - muted: no - current latency: 0.00 ms - max request: 0 KiB - max rewind: 0 KiB - monitor source: 16 - sample spec: s16le 2ch 44100Hz - channel map: front-left,front-right - Stereo - used by: 0 - linked by: 0 - fixed latency: 250.00 ms - module: 39 - properties: - device.description = "Built-in Audio Analog Stereo on pulse@minibox" - tunnel.remote.server = "[192.168.178.108]:4713" - tunnel.remote.sink = "alsa_output.pci-0000_00_08.0.analog-stereo" - device.icon_name = "audio-card" - tunnel.remote_version = "26" - tunnel.remote.user = "pulse" - tunnel.remote.fqdn = "minibox" - tunnel.remote.description = "Built-in Audio Analog Stereo" +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 pacmd list-sinks herausfinden). So kann man jetzt PulseAudio anweisen, den entsprechenden Stream umzuleiten: - pacmd move-sink-input 22 10 + 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 10 + 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 == +=== 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. Datei:PulseAudio Volume Control Playback Tab.png|Einzelne Streams umleiten Datei:PulseAudio Volume Control Output Devices Tab.png|Default Sink setzen + +=== 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. + [[Kategorie:Infrastruktur]] [[Kategorie:Dokumentation]]