zeroconf braucht man für beide Wege, außer für PULSE_SERVER=...
[stratum0-wiki.git] / PulseAudio.mw
1 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.
2
3 == Server-Seite ==
4 Aud dem Server in <tt>/etc/pulse/default.pa</tt> müssen diese zwei Zeilen aktiviert werden:
5 load-module module-native-protocol-tcp auth-anonymous=1
6 load-module module-zeroconf-publish
7
8 Dann entweder neu einloggen (der PulseAudio-Server ist ja immer an einen Benutzer-Session gekoppelt), oder PulseAudio neustarten: <tt>pulseaudio --kill && pulseaudio --start</tt>
9
10 Zu beachten ist, dass unter Debian/Ubuntu das Modul <tt>pulseaudio-module-zeroconf</tt> installiert sein muss.
11
12 == Client-Seite ==
13 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 im Paket <tt>pulseaudio-module-zeroconf</tt> enthalten). Dazu muss <tt>/etc/pulse/default.pa</tt> die folgende Zeile enthalten:
14 load-module module-zeroconf-discover
15 Nach Anpassen der Datei muss PulseAudio neu gestartet werden: <tt>pulseaudio --kill && pulseaudio --start</tt>
16
17 === <tt>pacmd</tt> ===
18 Ein nützliches Konsolen-Programm für alles mögliche.
19
20 ==== Einzelne Audio-Streams umleiten ====
21 Man startet die Wiedergabe auf dem Client und sucht sich dann mit <tt>pacmd list-sink-inputs</tt> den Index des Streams, den man umleiten will. Die Ausgabe sieht etwa wie folgende aus:
22 >>> 1 sink input(s) available.
23 index: '''22'''
24 driver: <protocol-native.c>
25 flags:
26 state: RUNNING
27 sink: 0 <alsa_output.pci-0000_00_1b.0.analog-stereo>
28 volume: 0: 64% 1: 64%
29 0: -11.47 dB 1: -11.47 dB
30 balance 0.00
31 muted: no
32 current latency: 79.66 ms
33 requested latency: 210.00 ms
34 sample spec: float32le 2ch 44100Hz
35 channel map: front-left,front-right
36 Stereo
37 resample method: copy
38 module: 7
39 client: 174 <MPlayer>
40 properties:
41 media.name = "audio stream"
42 application.name = "MPlayer"
43 native-protocol.peer = "UNIX socket client"
44 native-protocol.version = "26"
45 application.process.id = "28609"
46 application.process.user = "rohieb"
47 application.process.host = "r2d2"
48 application.process.binary = "mplayer"
49 application.language = "C"
50 window.x11.display = ":0"
51 application.process.machine_id = "3d50ca96e3bbb8de38d0d46a00000298"
52 application.process.session_id = "3d50ca96e3bbb8de38d0d46a00000298-1349808857.893717-1874973741"
53 module-stream-restore.id = "sink-input-by-application-name:MPlayer"
54
55 Außerdem braucht man den Index der Sink auf dem Server. Diesen kann man mit <tt>pacmd list-sinks</tt> herausfinden (einfach nach den menschenlesbaren Bezeichnungen suchen…). Beispiel:
56
57 index: '''10'''
58 name: <tunnel.minibox.local.alsa_output.pci-0000_00_08.0.analog-stereo>
59 driver: <module-tunnel.c>
60 flags: NETWORK HW_MUTE_CTRL HW_VOLUME_CTRL LATENCY
61 state: SUSPENDED
62 suspend cause: IDLE
63 priority: 0
64 volume: 0: 75% 1: 75%
65 balance 0.00
66 base volume: 100%
67 volume steps: 65537
68 muted: no
69 current latency: 0.00 ms
70 max request: 0 KiB
71 max rewind: 0 KiB
72 monitor source: 16
73 sample spec: s16le 2ch 44100Hz
74 channel map: front-left,front-right
75 Stereo
76 used by: 0
77 linked by: 0
78 fixed latency: 250.00 ms
79 module: 39
80 properties:
81 device.description = "Built-in Audio Analog Stereo on pulse@minibox"
82 tunnel.remote.server = "[192.168.178.108]:4713"
83 tunnel.remote.sink = "alsa_output.pci-0000_00_08.0.analog-stereo"
84 device.icon_name = "audio-card"
85 tunnel.remote_version = "26"
86 tunnel.remote.user = "pulse"
87 tunnel.remote.fqdn = "minibox"
88 tunnel.remote.description = "Built-in Audio Analog Stereo"
89
90 So kann man jetzt PulseAudio anweisen, den entsprechenden Stream umzuleiten:
91 pacmd move-sink-input 22 10
92
93 ==== Alle Audio-Streams umleiten ====
94 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:
95 pacmd set-default-sink 10
96
97 Schon laufende Audio-Streams müssen mit der obigen Methode einzeln verschoben werden.
98
99 === pavucontrol ===
100 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.
101 <gallery widths="400" heights="200">
102 Datei:PulseAudio Volume Control Playback Tab.png|Einzelne Streams umleiten
103 Datei:PulseAudio Volume Control Output Devices Tab.png|Default Sink setzen
104 </gallery>
105
106 === Direkte Verbindung ohne Umweg über den lokalen PulseAudio-Server ===
107 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:
108 PULSE_SERVER=minibox.local mplayer schönemusik.mp3
109
110 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.
111
112 [[Kategorie:Infrastruktur]]
113 [[Kategorie:Dokumentation]]
This page took 0.051908 seconds and 5 git commands to generate.