English | Russian

Source code

xupnpd on github.com. Download ZIP snapshot.

New xupnpd2 on github.com. Learn about the project or download ZIP snapshot.

xupnpd-live on github.com. Download ZIP snapshot or binary build.

About xupnpd

xupnpd - eXtensible UPnP agent

This program is a light DLNA Media Server which provides ContentDirectory:1 service for sharing IPTV unicast streams over local area network (with udpxy for multicast to HTTP unicast conversion).

The program shares UTF8-encoded M3U playlists with links over local area network as content of the directory.

You can watch HDTV broadcasts (multicast or unicast) and listen Internet Radio in IP network without transcoding and PC.



Multicast IPTV without transcoding (xupnpd+udpxy) was tested with:

Features

Requirements

Downloads

Pre-compiled binary build and source code here.


Screenshots






Videos

Video review and manuals here.

Configuration and installation

  1. Upload archive to the router (scp,sftp,ftp)
  2. Unpack ('tar zxf xupnpd.tar.gz' for example)
  3. Run ('xupnpd/xupnpd-mipsel' or 'xupnpd/xupnpd-ar71xx')
  4. Point your Internet browser to 'http://192.168.1.1:4044' (192.168.1.1 - replace with your router address)
  5. Upload your IPTV playlist (m3u file format)
  6. Enjoy IPTV in your DLNA media player

HOWTO

Playlist example

#EXTM3U name="My IPTV"
#EXTINF:0 logo=http://butovo.com/iptv/iskra_channels_files/perviy00.jpg type=mpeg dlna_extras=mpeg_ps_pal ,Channel 1
udp://@234.5.2.8:20000
#EXTINF:0,Channel 2
http://192.168.1.1:4022/udp/234.5.2.2:20000
#EXTINF:0 group-title="Main",Channel 3
http://020.mozhay.tv
#EXTINF:0 logo=http://b.vimeocdn.com/ts/204/056/204056508_200.jpg type=mp4 plugin=vimeo,The Curious Fate of Humankind
http://vimeo.com/30381893
#EXTINF:0 logo=http://i.ytimg.com/vi/kffacxfA7G4/1.jpg type=mp4 plugin=youtube,Justin Bieber - Baby ft. Ludacris
http://www.youtube.com/watch?v=kffacxfA7G4&feature=youtube_gdata
#EXTINF:0 logo=http://i.ytimg.com/vi/KQ6zr6kCPj8/1.jpg type=mp4 plugin=youtube,LMFAO - Party Rock Anthem ft. Lauren Bennett, GoonRock
http://www.youtube.com/watch?v=KQ6zr6kCPj8&feature=youtube_gdata

'#EXTM3U' attributes:

'#EXTINF' attributes:

'type': avi, asf, wmv, mp4, mpeg, mpeg1, mpeg2, ts, mp2t, mp2p, mov, mkv, 3gp, flv, aac, ac3, mp3, ogg, wma

'dlna_extras': none, mpeg_ps_pal, mpeg_ps_pal_ac3, mpeg_ps_ntsc, mpeg_ps_ntsc_ac3, mpeg1, mpeg_ts_sd, mpeg_ts_hd, avchd, wmv_med_base, wmv_med_full, wmv_med_pro, wmv_high_full, wmv_high_pro, asf_mpeg4_sp, asf_mpeg4_asp_l4, asf_mpeg4_asp_l5, asf_vc1_l1, mp4_avc_sd_mp3, mp4_avc_sd_ac3, mp4_avc_hd_ac3, mp4_avc_sd_aac, mpeg_ts_hd_mp3, mpeg_ts_hd_ac3, mpeg_ts_mpeg4_asp_mp3, mpeg_ts_mpeg4_asp_ac3, avi, divx5, mp3, ac3, wma_base, wma_full, wma_pro

Config example

xupnpd.lua

-- multicast interface for SSDP exchange, 'eth0', 'br0', 'br-lan' for example
cfg.ssdp_interface='br0'

-- 'cfg.ssdp_loop' enables multicast loop (if player and server in one host)
cfg.ssdp_loop=0

-- HTTP port for incoming connections
cfg.http_port=4044

-- syslog facility (syslog,local0-local7)
cfg.log_facility='local0'

-- 'cfg.daemon' detach server from terminal
cfg.daemon=true

-- silent mode - no logs, no pid file
cfg.embedded=true

-- 'cfg.debug' enables SSDP debug output to stdout (if cfg.daemon=false)
-- 0-off, 1-basic, 2-messages
cfg.debug=1

-- external 'udpxy' url for multicast playlists (udp://@...)
--cfg.udpxy_url='http://192.168.1.1:4022'

-- downstream interface for builtin multicast proxy (comment 'cfg.udpxy_url' for processing 'udp://@...' playlists)
cfg.mcast_interface='eth1'

-- 'cfg.proxy' enables proxy for injection DLNA headers to stream
-- 0-off, 1-radio, 2-radio/TV
cfg.proxy=2

-- I/O timeout
cfg.http_timeout=15

-- 'cfg.dlna_extras' enables DLNA extras
cfg.dlna_extras=true

-- XBox360 compatible mode
cfg.xbox360=false

-- enables UPnP/DLNA notify when reload playlist
cfg.dlna_notify=true

-- group by 'group-title'
cfg.group=true

-- Device name
cfg.name='UPnP-IPTV'

-- static device UUID, '60bd2fb3-dabe-cb14-c766-0e319b54c29a' for example or nil
cfg.uuid='60bd2fb3-dabe-cb14-c766-0e319b54c29a'

-- max url cache size
cfg.cache_size=8

-- url cache item ttl (sec)
cfg.cache_ttl=900

-- default mime type (mpeg, mpeg1, mpeg2, ts)
cfg.default_mime_type='mpeg'

-- feeds update interval (seconds, 0 - disabled)
cfg.feeds_update_interval=0

-- playlist (m3u file path or path with alias
playlist=
{
    { './playlists/mozhay.m3u',             'Mozhay.tv' },
    { './localmedia', 'Local Media Files', '127.0.0.1;192.168.1.1' }
}

-- feeds list (plugin, feed name, feed type)
feeds=
{
    { 'vimeo',   'channel/hd',          'Vimeo HD Channel' },
    { 'vimeo',   'channel/hdxs',        'HD Xtreme sports' },
    { 'vimeo',   'channel/mtb',         'Mountain Bike Channel' },
    { 'youtube', 'channel/top_rated',   'YouTube Top Rated' },
}

Feedback


www.paypal.me/clark15b

Other projects

Thanks


License: GPL
Copyright (C) 2014-2021 Anton Burdinuk
clark15b@gmail.com