PulseAudio
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.
Client-Seite
Um Audio-Streams über die Spacekiste oder die minibox wiederzugeben, gibt es mehrere Wege.
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 der Sink auf dem Server. Diesen kann man mit pacmd list-sinks herausfinden (einfach nach den menschenlesbaren Bezeichnungen suchen…). Beispiel:
index: 10 name: <tunnel.minibox.local.alsa_output.pci-0000_00_08.0.analog-stereo> driver: <module-tunnel.c> 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"
So kann man jetzt PulseAudio anweisen, den entsprechenden Stream umzuleiten:
pacmd move-sink-input 22 10
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
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.