Jump to: navigation, search

Pulseaudio

Revision as of 08:57, 11 April 2015 by Zakkak (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Pulseaudio

PulseAudio network sink[edit]

This is a simple server, that anyone (!!!, I mean it!) in the network can send music and the server will play it through its speakers. It's a guide for debian, but it applies exaclty the same to other distros (on gentoo you have to recobile pulseaudio with zeroconf use flag for server use and avahi use flag for user).

Server side[edit]

Pulseaudio needs 2 modules. One to listen over TCP and one to publicate this over avahi (makes it much easier to configure from the user side). You also need avahi-daemon and pulseaudio installed.

The whole process has been scripted using Ansible and can be ran using the pulseaudio.yml playbook.

Now install the zeroconf/avahi module:

# apt-get install pulseaudio-module-zeroconf

Enable the avahi server:

# systemctl enable avahi-daemon
# systemctl start avahi-daemon

Enable the pulseaudio modules, in /etc/pulse/default.pa add these lines:

load-module module-native-protocol-tcp auth-anonymous=1
load-module module-zeroconf-publish

If you need security, take a look at auth-ip-acl, 'cause some ultra-hax0rs are hacking pulseaudio servers to achive world domination through hypnosis. Last, create a service to start on boot and have a beautiful control, create a file in /etc/systemd/system/pulseaudio.service:

[Unit]
Description=PulseAudio Server
Requires=avahi-daemon.service

[Service]
Type=forking
User=pulse
ExecStart=/usr/bin/pulseaudio --start
ExecStop=/usr/bin/pulseaudio --kill


[Install]
WantedBy=multi-user.target

And enable it...

# systemctl enable pulseaudio
# systemctl start pulseaudio

User side[edit]

The n00bs can configure pulseaudio to passthrough all sound to the server via paprefs.

The real men can either passthrough a specific program to the server via:

$ PULSE_SERVER=<hostname/ip> <command>

Or add the network sink to the local pulseaudio server via:

pacmd load-module module-tunnel-sink server=<hostname/ip>

and do whatever you want with it.