Skip to content

A minimal UPnP/DLNA media streamer

License

Notifications You must be signed in to change notification settings

mitnk/nano-dlna

 
 

Repository files navigation

nano-dlna

Build Status PyPI License

A minimal UPnP/DLNA media streamer.

nano-dlna is a command line tool that allows you to play a local video file in your TV (or any other DLNA compatible device).

🦀 Note: also checkout crab-dlna, a Rust implementation of nano-dlna.

Features

  • Searching available DLNA devices in the local network
  • Streaming audio
  • Streaming video, with subtitle support

Usage

List

Scan compatible devices and list the available ones:

nanodlna list

If your device is not being listed, you might need to increase the search timeout:

nanodlna -t 20 list

Play

Play a video, automatically loading the subtitles if available, selecting a random device:

nanodlna play That.Movie.mkv

Play a video, specifying the device through query (scan devices before playing):

nanodlna play That.Movie.mkv -q "osmc"

Play a video, specifying the device through its exact location (no scan, faster):

nanodlna play That.Movie.mkv -d "http://192.168.1.13:1082/"

Seek

When a video is playing, you can issue a seek command to adjust its postion:

nanodlna seek -q 'TV' '00:17:25'

With device option:

nanodlna seek -d 'http://192.168.1.13:1082/' '01:22:00'

Installation

nano-dlna can be installed as a regular python module by running:

$ [sudo] pip install nanodlna

Technical Details

nano-dlna is basically a one-file DLNA MediaServer and a self DLNA MediaController.

How does list work?

  1. Issue an SSDP M-Search broadcast message in the network
  2. Capture the responses and register the devices
  3. Filter only devices that provide UPnP's AVTransport service

How does play work?

  1. Setup an HTTP server to provide the media files to be streamed (including subtitles)
  2. Send a SetAVTransportURI message to the device, specifying the HTTP URLs of the media files
  3. Send a Play message to the device

TODO

  • Documentation
  • CLI interface to send controller actions (play, pause, stop, etc) to the MediaRenderer
  • CLI progress bar visualization
  • Playlist

About

A minimal UPnP/DLNA media streamer

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 90.8%
  • JavaScript 7.6%
  • Shell 1.1%
  • Dockerfile 0.5%