catalinii / minisatip

minisatip is an SATIP server for linux using local DVB-S2, DVB-C, DVB-T or ATSC cards
https://minisatip.org
328 stars 81 forks source link

DLNA & Upnp support #176

Closed ovidiu31 closed 8 years ago

ovidiu31 commented 8 years ago

Hello Cata

Could be possible an DLNA or Upnp integration inside the minisatip? It is more like an enhacement request.

9000h commented 8 years ago

the minimum from the spec is in

-p url: specify playlist url using X_SATIPM3U header 
    eg: -p http://192.168.2.3:8080/playlist
    - this will add X_SATIPM3U tag into the satip description xml

but only satip clients may look for this

catalinii commented 8 years ago

Ovidiu do you refer to dlna for the normal TVs?

ovidiu31 commented 8 years ago

DLNA as Inverto 400 or Schwaiger SatIP equippment have.

@catalinii I will manage today to provide you access to the Inverto or Schwaiger devices and firmware to have a look abd to be able to explain exactly which DLNA implementation i would like as enhancement to see inside the minisatip app.

I think @perexg knows exactly how the DLNA works inside the Inverto IDL400 firmware and how is DLNA wise the channels playlist is exposed to the network.

perexg commented 8 years ago

I only know that Inverto uses a patched minidlna server to export right URLs through DLNA. I've not had a time to dig into it more, but I think that they convert .m3u file as resources for minidlna.

timehlers commented 8 years ago

Once I looked into the inverto changes of minidlna. The diff can be found here:

https://github.com/timehlers/minidlna/raw/master/stream.upnp.patch

The full sources of that version, with patch applied can be found here:

https://github.com/timehlers/minidlna

But: In the end minidlna just mediate between the upnp TV and the satip-Server instance. So the satip-Server needs to be able to send an demuxed TV stream to the TV. inverto's server is capable of that, but I think minisatip is not?

Am I right?

Best

Tim

9000h commented 8 years ago

why not adopt the lua upnp from DD http://download.digital-devices.de/download/linux/octonet.source can be run independent from minisatip

ovidiu31 commented 8 years ago

Bubble Upnp Server is already running on different platforms , it is handy and very easy to use install and configure. Id say all is needed is something similar to dvbviewer solution to make minisatip capable to send the channels via bubble upnp to the tv or boxes , vlc or any DLNA compliant device from the network

catalinii commented 8 years ago

I did not study too much, but had some tries with minisatip and serviio.

Except the http part of the dlna protocol, which is not that much work, the problem I had was that my TV was not capable of displaying 1080p 60hz, and my odroid XU (at that time) was not handling the software transcoding... In my opinion the http link to a channel should be OK for a tv to open... With RS everythign is fine (but RS is running on a i7)...

Thanks

ovidiu31 commented 8 years ago

For example i have DVBLink server which is capable to pick up playlist with channels from Inverto IDL400 or from Schwaiger device but is unable to find or pick up generated playlist from minisatip. But this already is a different enhancement request which probably will be made later after upnp part is solved if can be added / solved

9000h commented 8 years ago

did you already try minisatip with "-p url" with DVBLink server?

ovidiu31 commented 8 years ago

will make a try today

tmn505 commented 8 years ago

Just try xupnpd. Then the typical DLNA client can see broadcasted playlist.

ovidiu31 commented 8 years ago

nothing detected with xupnpd... @9000h

Message from dvblink after launching minisatip with -p http://192.168.1.13:8080/playlist "No channels were found in the playlist"

tmn505 commented 8 years ago

Didn't test that myself (I'll do that this evening) but as i understand, minisatip doesn't have m3u playlist built in it, it only presents the m3u file that is stored localy. You have to provide that yourself in html directory of minisatip. The example playlists are under http://www.inverto.tv/downloads/support.php?id=1789. The xupnpd can present the same playlist to typical upnp clients.

catalinii commented 8 years ago

Hi guys,

so I think there is a small confusion:

-p parameters offers a satip playlist which is also in m3u format. Even if you specify this (-p xxx) your DLNA TV will not see it (because minisatip is not a DLNA server). xupnpd is able to provide a playlist (m3u format) to a DLNA TV and if the content points to minisatip http port (at least for my tv) it works.. I had an example content like:

EXTINF:0,Arte HD

http://10.0.0.1:8080/?freq=11494&sr=22000&msys=dvbs2&pol=h&pids=0,5111,5112

I have uploaded it into xupnpd and I was able to see the channel on my tv (which is not a satip TV).

lars18th commented 8 years ago

Yes!

I have uploaded it into xupnpd and I was able to see the channel on my tv

This is the best, and simple, solution for supporting DLNA clients. Please, don't waste resources in minisatip for a task that can be done best with external tools. The xupnpd is a lightweight and powerful server, and can run in the same server where runs the minisatip binary.

Perhaps, you can include some guide in the homepage of the project for setup minisatip+xupnpd. ;)

Or add an http call for exporting (on-line) the M3U file, and someone can create one script for update the xupnpd with the exported m3u file. That's all for full support of DLNA clients!

ovidiu31 commented 8 years ago

no xupnp for x86_64 :( ... My device is using centos x86_64

lars18th commented 8 years ago

Hi @ovidiu31 ,

no xupnp for x86_64 :( ... My device is using centos x86_64

ERROR! This is my system:

$uname -a Linux debian 3.2.0-4-amd64 #1 SMP Debian 3.2.63-2+deb7u1 x86_64 GNU/Linux

You only need to download source and do MAKE! On Debian 7 amd64 I'm running "xupnpd" & "minisatip" :)

tmn505 commented 8 years ago

Well as stated it works in conjunction with xupnpd. That aside, @catalinii if I toss the playlist file in html directory of minisatip (started with -p switch), and point my browser to this (url:http://192.168.1.2:8875/playlist.m3u), it displays the following content:

Server: minisatip/0.3.74
Content-Length: 98

#EXTM3U name="NPO"
#EXTINF:0,NPO
rtsp://192.168.1.2/?freq=546&bw=8&msys=dvbt&fec=1&inv=2&pids=all

Can You make it so the minisatip omits (or hides) the first two lines? The VLC tries to parse the first two lines and display warnings then starts to play the actual content of playlist.

catalinii commented 8 years ago

Hi tmn505,

Does it work if you remove the first 2 lines from the file?

Thanks

tmn505 commented 8 years ago

I didn't explain it properly. The minisatip itself adds these lines to the beginning of m3u file:

Server: minisatip/0.3.74
Content-Length: 98

And without those lines it works properly. Try to place Your m3u file in html directory of minisatip and download it with wget or curl. Then review the content of downloaded m3u, You'll see the two lines I mentioned, at the beginning of this file.

9000h commented 8 years ago

should fix this

--- utils.c.orig    2015-10-15 17:40:42.982888447 +0200
+++ utils.c 2015-10-15 17:46:05.339243901 +0200
@@ -867,6 +867,8 @@
            strcpy(ctype, "CACHE-CONTROL: no-cache\r\nContent-type: text/html");
        else if (endswith(fn, "xml"))
            strcpy(ctype, "CACHE-CONTROL: no-cache\r\nContent-type: text/xml");
+       else if (endswith(fn, "m3u"))
+           strcpy(ctype, "CACHE-CONTROL: no-cache\r\nContent-type: video/x-mpegurl");
    }
    return mem;
 }
tmn505 commented 8 years ago

Thanks, with that it works as desired.

catalinii commented 8 years ago

As the solution ith xupnpd works pretty good, I do not think there is a reason to implement this...

Please let me know if you need additional help on any issues to have this integrate better with other tools.

Thanks

9000h commented 8 years ago

the new VLC 3.0.0 nightly has support for SAT>IP in and will use a play-list from www.satip.info if no one is provided (Astra 19.2 only )

lars18th commented 8 years ago

Hi @9000h ,

the new VLC 3.0.0 nightly has support for SAT>IP

To be more specific: VLC 3.0.0 includes support for parsing UPnP XML announcements from SAT>IP servers with support for M3U filelists.

Then I suggest to write a HowTo for mix minisatip+xupnp for VLC support.

Moreover, I don't know if the VLC 3 will support RTSP transport or only HTTP transport.

9000h commented 8 years ago

the m3u VLC provides in case of there is no one from the server is (http://www.satip.info/Playlists/ASTRA_19_2E.m3u) and RTSP is used

ovidiu31 commented 8 years ago

@lars18th getting compiling errors in centos (in ubuntu compiles just fine) Lars D_FILE_OFFSET_BITS=64 -o xupnpd main.cpp soap.cpp mem.cpp mcast.cpp luaxlib.cpp luaxcore.cpp luajson.cpp luajson_parser.cpp md5.o -llua -ldl -lm -luuid mcast.cpp:15:23: fatal error: uuid/uuid.h: No such file or directory

include <uuid/uuid.h>

9000h commented 8 years ago

you need to install the uuid-dev package also

ovidiu31 commented 8 years ago

is installed but still crashing to same error while compiling

gcc -fno-exceptions -fno-rtti -O2 -Ilua-5.1.4 -Llua-5.1.4 -DWITH_LIBUUID -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -o xupnpd main.cpp soap.cpp mem.cpp mcast.cpp luaxlib.cpp luaxcore.cpp luajson.cpp luajson_parser.cpp md5.o -llua -ldl -lm -luuid mcast.cpp:15:23: fatal error: uuid/uuid.h: No such file or directory

include <uuid/uuid.h>

                   ^

compilation terminated.

[root@localhost src]# yum install uuid-devel Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile

9000h commented 8 years ago

the reason is probably simple

 rpmquery  -l uuid-devel
/usr/bin/uuid-config
/usr/include/uuid.h
/usr/lib64/libossp-uuid.so
/usr/lib64/pkgconfig/ossp-uuid.pc
/usr/share/man/man3/ossp-uuid.3.gz

the header file uuid.h is under /usr/include and not /usr/include/uuid on centos

ovidiu31 commented 8 years ago

mcast.cpp: In function âvoid mcast::uuidgen(char)â: mcast.cpp:55:12: error: aggregate âuuid_t uuidâ has incomplete type and cannot be defined uuid_t uuid; ^ mcast.cpp:56:23: error: âuuid_generateâ was not declared in this scope uuid_generate(uuid); ^ mcast.cpp:58:32: error: âuuid_unparse_lowerâ was not declared in this scope uuid_unparselower(uuid,dst); ^ make: ** [x86] Error 1

9000h commented 8 years ago

looks like I was wrong the right missing package is libuuid-devel

ovidiu31 commented 8 years ago

fixed thanks... but still one big question .... how do i obtain an Thor 1W channels list m3u?

9000h commented 8 years ago

you may download the vdr channels.conf from http://channelpedia.yavdr.com/gen/DVB-S/S1W/S1W_complete_sorted_by_groups.channels.conf and convert it with this script https://gist.githubusercontent.com/nfedera/5d32e157eb4fe5ef2369/raw/4a6a59ecb02e167800b4f563f809c54232108489/cc2m3u.py

lars18th commented 8 years ago

Hi @9000h ,

Interesting script! Perhaps a new script for scanning at some hours (using minisatip as tunner) can create the conf file and export it to the minisatip/html directory. You agree?

9000h commented 8 years ago

the vlc-3.0.0 nightly has direct support for satip rtsp protocol in, the syntax is like:

#EXTINF:-1,Das Erste KDG
satip://192.168.178.129:554/?freq=338.000&msys=dvbc&sr=6900&mtype=256qam&pids=0,100,101,104,102,103,106
#EXTINF:-1,Astra 19.2E DMAX vert
satip://192.168.178.133/?src=1&freq=12480&sr=27500&fec=34&pol=v&msys=dvbs&pids=0,108,3327,3328
ovidiu31 commented 8 years ago

works ok now

henfri commented 7 years ago

Hello,

how do I configure xupnpd for use with minisatip? For me, the m3u is accessible under http://server:8081/playlist.m3u -but how do I tell this to xupnpd?

Greetings, Hendrik

tmn505 commented 7 years ago

Hi, inspect the contents of xupnpd.lua file there You can point xupnpd to your playlist url. Also there is another option, works without editing configuration files. Just drop Your playlist in xupnpd playlist directory, restart, and it should serve it on Your lan.