pa-dlna v0.7
pa-dlna forwards audio streams to DLNA devices.
A Python project based on asyncio, that uses ctypes to interface with the
libpulse
library and supports the PulseAudio and PipeWire [1] sound
servers.
pa-dlna is composed of the following components:
The
pa-dlna
program forwards PulseAudio streams to DLNA devices.The
upnp-cmd
is an interactive command line tool for introspection and control of UPnP devices [2].The UPnP Python package is used by both commands.
The libpulse Python package is a ctypes interface to the
libpulse
library.
See the pa-dlna documentation.
Requirements
Python version 3.8 or more recent.
psutil
The built-in UPnP package and therefore the upnp-cmd
and pa-dlna
commands depend on the psutil Python package. This package is available in
most distributions as python3-psutil
or python-psutil
. It can also be
installed with pip
.
parec
pa-dlna uses the pulseaudio parec
program [3]. Depending on the linux
distribution it may be already installed as a dependency of pulseaudio or of
pipewire-pulse. If not, then the package that owns parec
must be
installed. On archlinux the package name is libpulse
, on debian it is
pulseaudio-utils.
Encoders
No other dependency is required by pa-dlna when the DLNA devices support raw PCM L16 (RFC 2586) [4].
Optionally, encoders compatible with the audio mime types supported by the
devices may be used. pa-dlna
currently supports the ffmpeg (mp3, wav,
aiff, flac, opus, vorbis, aac), the flac and the lame (mp3) encoders. The
list of supported encoders, whether they are available on this host and their
options, is printed by the command that prints the default configuration:
$ pa-dlna --dump-default
pavucontrol
Optionally, one may install the pavucontrol
package for easier management of
associations between sound sources and DLNA devices.
Installation
pipewire as a pulseaudio sound server
The pipsewire
, pipewire-pulse
and wireplumber
packages must be
installed and the corresponding programs started. If you are switching from
pulseaudio, make sure to remove /etc/pulse/client.conf
or to comment out the
setting of default-server
in this file as pulseaudio and pipewire do not use
the same unix socket path name.
The parec
‘s package includes the pactl
program. One may check that the
installation of pipewire as a pulseaudio sound server is successfull by running
the command:
$ pactl info
pa-dlna
Install pa-dlna
with pip:
$ python -m pip install pa-dlna
Configuration
A pa-dlna.conf
user configuration file overriding the default configuration
may be used to:
Change the preferred encoders ordered list used to select an encoder.
Configure encoder options.
Set an encoder for a given device and configure the options for this device.
Configure the sample_format, rate and channels parameters of the
parec
program used to forward PulseAudio streams, for a specific device, for an encoder type or for all devices.
See the configuration section of the pa-dlna
documentation.