pa-dlna


Namepa-dlna JSON
Version 0.10 PyPI version JSON
download
home_pageNone
SummaryForward pulseaudio streams to DLNA devices.
upload_time2024-04-15 18:26:20
maintainerNone
docs_urlNone
authorNone
requires_python<4,>=3.8
licenseNone
keywords pulseaudio pipewire dlna upnp asyncio ctypes
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 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 [#]_. 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 ``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`_.

.. _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

.. [#] 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`_.
.. [#] 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, ctypes",
    "author": null,
    "author_email": "Xavier de Gaye <xdegaye@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/10/51/936eed45446b382d9ff98b81c720953cd7032ee1f3011e1de7b9518f3bec/pa_dlna-0.10.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 package is used by both commands.\n * The libpulse Python package is a ctypes interface to the ``libpulse``\n   library.\n\nSee the **pa-dlna** `documentation`_.\n\nRequirements\n============\n\nPython version 3.8 or more recent.\n\npsutil\n------\n\nThe built-in UPnP 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 can also be\ninstalled with ``pip``.\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 ``pipsewire``, ``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\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.. [#] The ``pa-dlna`` and ``upnp-cmd`` programs can be run simultaneously.\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.. [#] 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.10",
    "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",
        " ctypes"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "30106715ef686883ab01120656f571bda9301e7cacf4fb18be2e5b13ec81dc2d",
                "md5": "590be20453959ee209997a9bc7781b9a",
                "sha256": "b0360d8b92f8217ab1c1fd4352711ce72dc1239c6699276ea87183b90c04d0d9"
            },
            "downloads": -1,
            "filename": "pa_dlna-0.10-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "590be20453959ee209997a9bc7781b9a",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<4,>=3.8",
            "size": 113463,
            "upload_time": "2024-04-15T18:26:15",
            "upload_time_iso_8601": "2024-04-15T18:26:15.504128Z",
            "url": "https://files.pythonhosted.org/packages/30/10/6715ef686883ab01120656f571bda9301e7cacf4fb18be2e5b13ec81dc2d/pa_dlna-0.10-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "1051936eed45446b382d9ff98b81c720953cd7032ee1f3011e1de7b9518f3bec",
                "md5": "0c12b19c3de2327fca49a235d61ad8d4",
                "sha256": "54069ef08f724391ff5992a231228fdf27f9965d80ca0072981ef6fc6fc70bbf"
            },
            "downloads": -1,
            "filename": "pa_dlna-0.10.tar.gz",
            "has_sig": false,
            "md5_digest": "0c12b19c3de2327fca49a235d61ad8d4",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<4,>=3.8",
            "size": 113395,
            "upload_time": "2024-04-15T18:26:20",
            "upload_time_iso_8601": "2024-04-15T18:26:20.512301Z",
            "url": "https://files.pythonhosted.org/packages/10/51/936eed45446b382d9ff98b81c720953cd7032ee1f3011e1de7b9518f3bec/pa_dlna-0.10.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-04-15 18:26:20",
    "github": false,
    "gitlab": true,
    "bitbucket": false,
    "codeberg": false,
    "gitlab_user": "xdegaye",
    "gitlab_project": "pa-dlna",
    "lcname": "pa-dlna"
}
        
Elapsed time: 0.24376s