Skip to main content

A script in Python 3 to turn mpc-hc into a DLNA / UPnP renderer

Project description

DLNAmpcRenderer

A script in Python 3 to turn mpc-hc into a DLNA / UPnP renderer

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.

DLNAmpcRenderer is an application written in Python 3 designed as a wrapper for mpc-hc to use the player as a DLNA/UPnP renderer, on a computer running under Windows. The script does not need any other package, only the presence of an executable of mpc-hc is required. The application has been tested with a few DLNA controlers (Windows Media Player Digital Media Controller, Bubble UPnP, UPnPlay, DLNAPlayOn) but should work with any DLNA compliant controler. Subtitles management is enabled through the DIDL description ('subtitlefileuri' or 'captioninfo'/'captioninfoex' tags) or the use of a 'captioninfo.sec' header in the response to the HEAD/GET request for the content to be played. Several instances can run in parallel provided they use different ports and names.

To install the application:

  • of course, install Python 3
  • copy DLNAmpcRenderer.py, icon.png and mpc.bat in the same folder
  • install mpc-hc (https://github.com/clsid2/mpc-hc/releases) and madVR (http://madvr.com/) for proper image display and rotation
  • open mpc.bat and, if needed, change the path of mpc-hc executable
  • optionally, install jpegtran (https://jpegclub.org/jpegtran ), copy jpegtrans.bat, and change the path of jpegtran executable
  • allow mpc-hc and python to communicate through the firewall (for more precise needs, see below)

To run the application:

DLNAmpcRenderer -h to display the complete syntax of command line and abbreviated commands

DLNAmpcRenderer [-h] [--bind [RENDERER_IP]] [--port RENDERER_TCP_PORT] [--name RENDERER_NAME] [--minimize] [--fullscreen] [--rotate_jpeg ROTATE_MODE] [--wmpdmc_no_mkv] [--trust_controler] [--search_subtitles] [--no_part_req_intermediate] [--verbosity VERBOSE]

--bind RENDERER_IP: the ip address used by the renderer on the local machine for communications with the controllers (to set it manually if the script does not manage to self-determine the ip address of the host or to select a specific network interface or all interfaces if no address is provided)
--port RENDERER_TCP_PORT: the port used by the renderer on the local machine sent to the controlers in the advertisements and the answers to the search requests
--name RENDERER_NAME: the name of the renderer, used to generate the uuid
--minimize: when set, minimizes the window of mpc-hc when inactive and restore it to its previous size when a playback is launched (useful when displaying photos as some controlers stop the playback between two consecutive pictures or when playing music as there is no use showing the window)
--fullscreen: when set, makes mpc-hc go fullscreen each time a playback starts (can be combined with 'minimize')
--rotate_jpeg ROTATE_MODE: when set to 'k' or 'j', tries to read the orientation metadata of jpeg pictures, and sends an accordingly rotation command to mpc-hc if 'k' (needs mpc-hc version 1.9.8.26 or higher to work properly), or sends a rotated picture with jpegtran to mpc_hc if 'j'
--wmpdmc_no_mkv: when set, Windows Media Player Digital Media Controller will transcode 'mkv' (matroska) files to 'mpegts' before streaming the content, allowing remote control of the playback, otherwise, the 'mkv' file will be streamed as it is, and the seekbar will probably be inactive in WMPDMC (but available in mpc-hc)
--trust_controler: when set, the URL of the content sent to the renderer is not checked before being passed to mpc-hc
--search_subtitles: when set, always requests subtitles, trying different extensions if no subtitle uri is provided by the controler or the server (may slow down the process)
--no_part_req_intermediate: when set, intermediates servers rejecting partial requests in order to allow mpc-hc to use Lav Splitter source (needs --trust_controler disabled)
--verbosity VERBOSE: for troubleshooting purposes, from 0 (default) to 2

Example: DLNAmpcRenderer -p 9100 -m -f -r j

As for the settings of the firewall, mpc-hc needs outgoing TCP connections allowed, and python outgoing TCP and UDP connections, as well as incoming TCP connections from local network on local port RENDERER_TCP_PORT (as in command line), incoming UDP connections from local network on local port 1900.

If with some files, in particular mpeg-ts contents, only audio is played, consider increasing the "stream analysis duration" of the "network settings" of Lav Splitter.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dlnampcrenderer-1.3.2.tar.gz (52.4 kB view details)

Uploaded Source

Built Distribution

DLNAmpcRenderer-1.3.2-py3-none-any.whl (52.0 kB view details)

Uploaded Python 3

File details

Details for the file dlnampcrenderer-1.3.2.tar.gz.

File metadata

  • Download URL: dlnampcrenderer-1.3.2.tar.gz
  • Upload date:
  • Size: 52.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.6

File hashes

Hashes for dlnampcrenderer-1.3.2.tar.gz
Algorithm Hash digest
SHA256 e600ef3724a5c921fa470030dc4a6f7a10cf32870f05e9d317f319355608df15
MD5 478c1ed2f5e94cec381473669639465d
BLAKE2b-256 74f728830529e02982dd0c035a09209e239d0ceca28b66ecaae56db6f4be662f

See more details on using hashes here.

File details

Details for the file DLNAmpcRenderer-1.3.2-py3-none-any.whl.

File metadata

File hashes

Hashes for DLNAmpcRenderer-1.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 6465f363d1f04658a33cb288875e053a533d10a7f2fe02dbb036b3de7d42203a
MD5 f98db9e2a6a54dc8bf8ce71ec40b015d
BLAKE2b-256 72796aa7aa95a68f96a1e79390db6b349ccb4266df2712a267f632317afa372b

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page