#dlna #upnp #dmr #digital-media-renderer

bin+lib dlna-dmr

An extensible DLNA DMR (Digital Media Renderer) implementation

4 releases

Uses new Rust 2024

0.1.3 Jun 8, 2025
0.1.2 May 31, 2025
0.1.1 May 30, 2025
0.1.0 May 29, 2025

#7 in Multimedia

Download history 364/week @ 2025-05-28 110/week @ 2025-06-04 10/week @ 2025-06-11 7/week @ 2025-06-18

491 downloads per month

MIT license

58KB
890 lines

dlna-dmr

GitHub License GitHub Workflow Status GitHub Release GitHub Downloads (all assets, all releases) Crates.io Version Crates.io Total Downloads docs.rs

An extensible DLNA DMR (Digital Media Renderer) implementation.

🤔 Cli or Lib?

The dlna-dmr cli itself is a dummy DMR that only logs the received commands, without actually doing anything with them. It is perfect for debugging purposes, but to build a real DMR, refer to the library documentation.

📥 Installation

Using binstall

cargo binstall dlna-dmr

Downloading from Releases

Navigate to the Releases page and download respective binary for your platform. Make sure to give it execute permissions.

Compiling from Source

cargo install dlna-dmr

📖 Usage

To run the dummy DMR, simply execute the following command in your terminal:

$ dlna-dmr
[2025-05-30T14:49:48Z INFO  dlna_dmr] DMR started
[2025-05-30T14:49:48Z INFO  dlna_dmr::ssdp] SSDP server running on 172.31.117.144:1900
[2025-05-30T14:49:48Z INFO  dlna_dmr::http] HTTP server listening on 172.31.117.144:8080
[2025-05-30T14:50:11Z INFO  dlna_dmr::http] RenderingControl::SetMute channel: Master, desired_mute: false
[2025-05-30T14:50:38Z INFO  dlna_dmr::http] AVTransport::SetAvTransportUri current_uri: http://example.com/sample.mp4?param1=a&param2=b
^C
[2025-05-30T14:50:46Z INFO  dlna_dmr::http] HTTP server stopped
[2025-05-30T14:50:46Z INFO  dlna_dmr::ssdp] SSDP server stopped
[2025-05-30T14:50:46Z INFO  dlna_dmr] DMR stopped

To configure, simply pass in a path to a configuration file:

dlna-dmr path/to/config.toml

For more information on configuration options, see the documentation for DMROptions.

✅ TODO

  • Actual XML parsing
  • Config file
  • "Heartbeat" - send periodic alive messages to the network
  • Removing the 'static requirement
  • Command line arguments parsing
  • Testing HTTP server via TestRequest

Dependencies

~9–21MB
~264K SLoC