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.
- Searching available DLNA devices in the local network
- Streaming audio
- Streaming video, with subtitle support
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 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/"
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'
nano-dlna can be installed as a regular python module by running:
$ [sudo] pip install nanodlna
nano-dlna is basically a one-file DLNA MediaServer and a self DLNA MediaController.
How does list
work?
- Issue an SSDP M-Search broadcast message in the network
- Capture the responses and register the devices
- Filter only devices that provide UPnP's AVTransport service
How does play
work?
- Setup an HTTP server to provide the media files to be streamed (including subtitles)
- Send a
SetAVTransportURI
message to the device, specifying the HTTP URLs of the media files - Send a
Play
message to the device
- Documentation
- CLI interface to send controller actions (play, pause, stop, etc) to the MediaRenderer
- CLI progress bar visualization
- Playlist