Name | pa-dlna JSON |
Version |
0.14
JSON |
| download |
home_page | None |
Summary | Forward pulseaudio streams to DLNA devices. |
upload_time | 2024-11-03 14:54:54 |
maintainer | None |
docs_url | None |
author | None |
requires_python | <4,>=3.8 |
license | None |
keywords |
pulseaudio
pipewire
dlna
upnp
asyncio
|
VCS |
|
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
`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 [#]_ 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 [#]_.
* The UPnP Python sub-package is used by both commands.
See the **pa-dlna** `documentation`_.
Requirements
============
Python version 3.8 or more recent.
psutil
------
The UPnP sub-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 will be
installed by ``pip`` as a dependency of ``pa-dlna`` if not already installed as
a package of the distribution.
libpulse
--------
`libpulse`_ is a Python asyncio interface to the Pulseaudio and Pipewire
``libpulse`` library. It was a sub-package of ``pa-dlna`` and has become a
full-fledged package on PyPi. It will be installed by ``pip`` as a dependency of
``pa-dlna``.
parec
-----
`pa-dlna`_ uses the pulseaudio ``parec`` program [#]_. 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`) [#]_.
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 ``pipewire``, ``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`_.
.. _pa-dlna: https://gitlab.com/xdegaye/pa-dlna
.. _asyncio: https://docs.python.org/3/library/asyncio.html
.. _ctypes: https://docs.python.org/3/library/ctypes.html
.. _pulseaudio-utils: https://packages.debian.org/bookworm/pulseaudio-utils
.. _pa-dlna issue 15: https://gitlab.com/xdegaye/pa-dlna/-/issues/15
.. _Wireplumber issue 511:
https://gitlab.freedesktop.org/pipewire/wireplumber/-/issues/511
.. _documentation: https://pa-dlna.readthedocs.io/en/stable/
.. _psutil: https://pypi.org/project/psutil/
.. _ConnectionManager:3 Service:
http://upnp.org/specs/av/UPnP-av-ConnectionManager-v3-Service.pdf
.. _ffmpeg: https://www.ffmpeg.org/ffmpeg.html
.. _flac: https://xiph.org/flac/
.. _lame: https://lame.sourceforge.io/
.. _configuration: https://pa-dlna.readthedocs.io/en/stable/configuration.html
.. _pipewire-pulse: https://docs.pipewire.org/page_man_pipewire_pulse_1.html
.. _libpulse: https://pypi.org/project/libpulse/
.. _pa-dlna command: https://pa-dlna.readthedocs.io/en/stable/pa-dlna.html
.. [#] When using PipeWire with the Wireplumber session manager, ``pa-dlna``
must be started before the audio streams that are routed to DLNA
devices. Re-starting those audio streams fixes the problem. See `pa-dlna
issue 15`_ and `Wireplumber issue 511`_.
A workaround may be used with the ``--clients-uuids`` command line
option, see the `pa-dlna command`_ documentation.
.. [#] The ``pa-dlna`` and ``upnp-cmd`` programs can be run simultaneously.
.. [#] The ``parec`` program also uses the ``libpulse`` library which is
included in ``parec`` 's package or is installed as a dependency. Note
also that this package includes the ``pactl`` and ``pacmd`` programs.
.. [#] DLNA devices must support the HTTP GET transfer protocol and must support
HTTP 1.1 as specified by Annex A.1 of the `ConnectionManager:3 Service`_
UPnP specification.
Raw data
{
"_id": null,
"home_page": null,
"name": "pa-dlna",
"maintainer": null,
"docs_url": null,
"requires_python": "<4,>=3.8",
"maintainer_email": null,
"keywords": "pulseaudio, pipewire, DLNA, UPnP, asyncio",
"author": null,
"author_email": "Xavier de Gaye <xdegaye@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/1d/9f/b91422b4b17643942c8ca99c7cf3ac7554b81baebcab5deae7c6617d72c4/pa_dlna-0.14.tar.gz",
"platform": null,
"description": "`pa-dlna`_ forwards audio streams to DLNA devices.\n\nA Python project based on `asyncio`_, that uses `ctypes`_ to interface with the\n``libpulse`` library and supports the PulseAudio and PipeWire [#]_ sound\nservers.\n\n`pa-dlna`_ is composed of the following components:\n\n * The ``pa-dlna`` program forwards PulseAudio streams to DLNA devices.\n * The ``upnp-cmd`` is an interactive command line tool for introspection and\n control of UPnP devices [#]_.\n * The UPnP Python sub-package is used by both commands.\n\nSee the **pa-dlna** `documentation`_.\n\nRequirements\n============\n\nPython version 3.8 or more recent.\n\npsutil\n------\n\nThe UPnP sub-package and therefore the ``upnp-cmd`` and ``pa-dlna``\ncommands depend on the `psutil`_ Python package. This package is available in\nmost distributions as ``python3-psutil`` or ``python-psutil``. It will be\ninstalled by ``pip`` as a dependency of ``pa-dlna`` if not already installed as\na package of the distribution.\n\nlibpulse\n--------\n\n`libpulse`_ is a Python asyncio interface to the Pulseaudio and Pipewire\n``libpulse`` library. It was a sub-package of ``pa-dlna`` and has become a\nfull-fledged package on PyPi. It will be installed by ``pip`` as a dependency of\n``pa-dlna``.\n\nparec\n-----\n\n`pa-dlna`_ uses the pulseaudio ``parec`` program [#]_. Depending on the linux\ndistribution it may be already installed as a dependency of pulseaudio or of\npipewire-pulse. If not, then the package that owns ``parec`` must be\ninstalled. On archlinux the package name is ``libpulse``, on debian it is\n`pulseaudio-utils`_.\n\nEncoders\n--------\n\nNo other dependency is required by `pa-dlna`_ when the DLNA devices support raw\nPCM L16 (:rfc:`2586`) [#]_.\n\nOptionally, encoders compatible with the audio mime types supported by the\ndevices may be used. ``pa-dlna`` currently supports the `ffmpeg`_ (mp3, wav,\naiff, flac, opus, vorbis, aac), the `flac`_ and the `lame`_ (mp3) encoders. The\nlist of supported encoders, whether they are available on this host and their\noptions, is printed by the command that prints the default configuration::\n\n $ pa-dlna --dump-default\n\npavucontrol\n-----------\n\nOptionally, one may install the ``pavucontrol`` package for easier management of\nassociations between sound sources and DLNA devices.\n\nInstallation\n============\n\npipewire as a pulseaudio sound server\n-------------------------------------\n\nThe ``pipewire``, ``pipewire-pulse`` and ``wireplumber`` packages must be\ninstalled and the corresponding programs started. If you are switching from\npulseaudio, make sure to remove ``/etc/pulse/client.conf`` or to comment out the\nsetting of ``default-server`` in this file as pulseaudio and pipewire do not use\nthe same unix socket path name.\n\nThe ``parec`` 's package includes the ``pactl`` program. One may check that the\ninstallation of pipewire as a pulseaudio sound server is successfull by running\nthe command::\n\n $ pactl info\n\npa-dlna\n-------\n\nInstall ``pa-dlna`` with pip::\n\n $ python -m pip install pa-dlna\n\nConfiguration\n=============\n\nA ``pa-dlna.conf`` user configuration file overriding the default configuration\nmay be used to:\n\n * Change the preferred encoders ordered list used to select an encoder.\n * Configure encoder options.\n * Set an encoder for a given device and configure the options for this device.\n * Configure the *sample_format*, *rate* and *channels* parameters of the\n ``parec`` program used to forward PulseAudio streams, for a specific device,\n for an encoder type or for all devices.\n\nSee the `configuration`_ section of the ``pa-dlna`` `documentation`_.\n\n.. _pa-dlna: https://gitlab.com/xdegaye/pa-dlna\n.. _asyncio: https://docs.python.org/3/library/asyncio.html\n.. _ctypes: https://docs.python.org/3/library/ctypes.html\n.. _pulseaudio-utils: https://packages.debian.org/bookworm/pulseaudio-utils\n.. _pa-dlna issue 15: https://gitlab.com/xdegaye/pa-dlna/-/issues/15\n.. _Wireplumber issue 511:\n https://gitlab.freedesktop.org/pipewire/wireplumber/-/issues/511\n.. _documentation: https://pa-dlna.readthedocs.io/en/stable/\n.. _psutil: https://pypi.org/project/psutil/\n.. _ConnectionManager:3 Service:\n http://upnp.org/specs/av/UPnP-av-ConnectionManager-v3-Service.pdf\n.. _ffmpeg: https://www.ffmpeg.org/ffmpeg.html\n.. _flac: https://xiph.org/flac/\n.. _lame: https://lame.sourceforge.io/\n.. _configuration: https://pa-dlna.readthedocs.io/en/stable/configuration.html\n.. _pipewire-pulse: https://docs.pipewire.org/page_man_pipewire_pulse_1.html\n.. _libpulse: https://pypi.org/project/libpulse/\n.. _pa-dlna command: https://pa-dlna.readthedocs.io/en/stable/pa-dlna.html\n\n.. [#] When using PipeWire with the Wireplumber session manager, ``pa-dlna``\n must be started before the audio streams that are routed to DLNA\n devices. Re-starting those audio streams fixes the problem. See `pa-dlna\n issue 15`_ and `Wireplumber issue 511`_.\n\n A workaround may be used with the ``--clients-uuids`` command line\n option, see the `pa-dlna command`_ documentation.\n\n.. [#] The ``pa-dlna`` and ``upnp-cmd`` programs can be run simultaneously.\n\n.. [#] The ``parec`` program also uses the ``libpulse`` library which is\n included in ``parec`` 's package or is installed as a dependency. Note\n also that this package includes the ``pactl`` and ``pacmd`` programs.\n\n.. [#] DLNA devices must support the HTTP GET transfer protocol and must support\n HTTP 1.1 as specified by Annex A.1 of the `ConnectionManager:3 Service`_\n UPnP specification.\n",
"bugtrack_url": null,
"license": null,
"summary": "Forward pulseaudio streams to DLNA devices.",
"version": "0.14",
"project_urls": {
"Changelog": "https://pa-dlna.readthedocs.io/en/stable/history.html",
"Documentation": "https://pa-dlna.readthedocs.io/en/stable/",
"Source": "https://gitlab.com/xdegaye/pa-dlna"
},
"split_keywords": [
"pulseaudio",
" pipewire",
" dlna",
" upnp",
" asyncio"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "2b5084272fc534fb433f21509f5ea193766abaa16f39a815a73374cfed89f709",
"md5": "e1fe4b799e9bd7d6edb03f74d1a96174",
"sha256": "2effbd962335a5e34fd235ef54b55d4a742173881c6de840799336a7efad2bad"
},
"downloads": -1,
"filename": "pa_dlna-0.14-py3-none-any.whl",
"has_sig": false,
"md5_digest": "e1fe4b799e9bd7d6edb03f74d1a96174",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4,>=3.8",
"size": 100931,
"upload_time": "2024-11-03T14:54:52",
"upload_time_iso_8601": "2024-11-03T14:54:52.276610Z",
"url": "https://files.pythonhosted.org/packages/2b/50/84272fc534fb433f21509f5ea193766abaa16f39a815a73374cfed89f709/pa_dlna-0.14-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "1d9fb91422b4b17643942c8ca99c7cf3ac7554b81baebcab5deae7c6617d72c4",
"md5": "8d381aa2809bf928402d5eca5455e6fa",
"sha256": "e445e3a5af778f8fe060b44b124bb58b895e85345b56d22c7f0b2a22f7ab154d"
},
"downloads": -1,
"filename": "pa_dlna-0.14.tar.gz",
"has_sig": false,
"md5_digest": "8d381aa2809bf928402d5eca5455e6fa",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4,>=3.8",
"size": 100725,
"upload_time": "2024-11-03T14:54:54",
"upload_time_iso_8601": "2024-11-03T14:54:54.637507Z",
"url": "https://files.pythonhosted.org/packages/1d/9f/b91422b4b17643942c8ca99c7cf3ac7554b81baebcab5deae7c6617d72c4/pa_dlna-0.14.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-11-03 14:54:54",
"github": false,
"gitlab": true,
"bitbucket": false,
"codeberg": false,
"gitlab_user": "xdegaye",
"gitlab_project": "pa-dlna",
"lcname": "pa-dlna"
}