For Developers only
This info is here for developers only. If you don't understand it, it's not for you.
IRC discussion about Live-TV support via RTSP
Nov 10 17:43:23 <dev> ok, it is about using rtsp/rtp for the DVB-D to send out live-tv Nov 10 17:44:19 <sebp> I already looked at the rtsp spec and gst-rtsp-server Nov 10 17:44:40 <sebp> I think I understand how it basically works Nov 10 17:44:50 <dev> as it is the optional, and maybe soon a mandatory transport protocol in DLNA, my opinion is, when sebp now starts with live-tv at the DVB-D, we should go for something that will of some use for a broader device base Nov 10 17:44:51 <Uraeus> dev: don't call it DVB-D, it made me wonder if its another spec out there alongside DVB-C, DVB-T and DVB-S :) Nov 10 17:45:00 <dev> hehe, ok Nov 10 17:45:58 <sebp> mabye a stupid question, but what's DLNA? Nov 10 17:46:34 <dev> sebp: you should read my documents - Digital Living Network Alliance Nov 10 17:46:38 <Uraeus> sebp: http://www.dlna.org/home Nov 10 17:46:53 <dev> on top of UPnP Nov 10 17:47:43 <dev> so the basic question is - how should/could we integrate gst-rtsp-server with the DVB-Daemon Nov 10 17:47:55 <robtaylor> sup y'all :) Nov 10 17:48:16 <sebp> robtaylor: hey :) Nov 10 17:48:43 <dev> hi robtaylor Nov 10 17:48:52 <robtaylor> dev, sebp: hey Nov 10 17:49:25 <dev> wtay: gst-rtsp-server need a file as input? Nov 10 17:49:27 <robtaylor> dev: so, you're teh DLNA expert - is there any standard interfaces for a program guide? Nov 10 17:49:41 <dev> robtaylor: yep, me is working on it Nov 10 17:49:46 <robtaylor> s/is/are/ even. I should start talking english ;) Nov 10 17:50:00 <wtay> dev, no, any gstreamer element will do. Check the live pipelines Nov 10 17:50:27 <robtaylor> dev: that's cool, i guess that's teh sort of thing a dvb controlpoint should export Nov 10 17:50:45 <dev> robtaylor: http://upnp.org/specs/av/UPnP-av-ContentDirectory-v2-Service-20060531.pdf abd http://upnp.org/specs/av/UPnP-av-ScheduledRecording-v1-Service-20060531.pdf Nov 10 17:50:57 <dev> robtaylor: no, the dvb MediaServer Nov 10 17:51:05 <sebp> I'm a little bit confused with streams in rtsp. Are those stream all the streams that belong to let's say a move (e.g. video, english audio, german audio) or can I also put multiple unrelated movies side by side? Nov 10 17:51:12 <robtaylor> dev: sorry, yes, MediaSever :) Nov 10 17:51:49 <robtaylor> sebp: think of it like mpegts.. Nov 10 17:52:22 <sebp> robtaylor: ok, so the streams are related Nov 10 17:52:35 <robtaylor> sebp: well, they can be, but they don't need to be Nov 10 17:52:56 <robtaylor> sebp: the timestamp relationships are between the RTP streams Nov 10 17:53:15 * zaheerm perks up at the discussion Nov 10 17:53:31 <sebp> what I have in mind is that the server might stream two different channels Nov 10 17:54:40 <zaheerm> dev, all dnla compliant devices have to handle those specs? Nov 10 17:55:11 <dev> zaheerm: in a future, ideal world - yes Nov 10 17:55:20 <zaheerm> dev, so the answer is no :) Nov 10 17:55:27 <lightyear> how many do support rtsp so far? Nov 10 17:55:30 <philn> rtp is optional currently in dlna, if i followed correctly ;) Nov 10 17:55:32 <dev> atm the moment no Nov 10 17:55:51 <dev> but it will be pushed heavily Nov 10 17:56:02 <zaheerm> the ps3 supports ts over rtsp? Nov 10 17:56:04 <dev> yep, rtsp/rtp is not mandatory yet Nov 10 17:56:22 <sebp> zaheerm: vlc doesn't :( Nov 10 17:56:24 <robtaylor> dev: know anything that supports it yet? Nov 10 17:56:25 <dev> zaheerm: no, the only device I know of so far is the netgear eva-8000 something Nov 10 17:56:26 <lightyear> does rtsp support "metadata" like epg? or would that go over the normal upnp-connections_ Nov 10 17:56:27 <lightyear> ? Nov 10 17:57:03 <dev> let's first concentrate on the rtsp part pls Nov 10 17:57:12 <zaheerm> lightyear, some metadata is contained inside the ts, such as now/next data from the eit, channel name from the sdt etc. Nov 10 17:57:15 <lightyear> hahhahaha. was only wondering Nov 10 17:57:24 <dev> sebp: I would propose for each show/channel a stream Nov 10 17:58:08 <dev> sebp: so we could say that one tunes in into live-tv, we provide that for some other client too Nov 10 17:58:18 <zaheerm> i'd do the same, don't think it would work having multiple tv/radio channels being sent in one rtsp stream...can easily split them at the server level Nov 10 17:58:39 <sebp> ok, sounds good Nov 10 17:58:56 <dev> and if we get that ring-buffer thing, we have some data-in-time we could go back Nov 10 17:59:46 <zaheerm> that would be awesome Nov 10 17:59:47 <sebp> dev: that brings me to my next problem, what if A watches channel 1 and wants to watch channel 2, but there's only card available Nov 10 18:00:04 <sebp> ah, B wants to watch channel 2 :) Nov 10 18:00:17 <dev> gst-rtsp-serverbut the question is - would this be possible with Nov 10 18:00:23 <dev> argh Nov 10 18:00:35 <zaheerm> rtsp server reports busy to B unless it is in same transport stream in dvb? Nov 10 18:00:53 <zaheerm> in which case it serves both fine? Nov 10 18:01:12 <dev> probably that's the job of the UPnP server Nov 10 18:01:20 <sebp> zaheerm: yes, if it would work as expected :) but that's another topic Nov 10 18:02:06 <dev> my question is - if we have some ring-buffer for the dvb-data, and we have gst-rtsp-server serving that Nov 10 18:02:37 <zaheerm> sebp, implementation details :P Nov 10 18:02:49 <dev> could one client have the actual one-time stream, and some other the same stream, but 5min behind? Nov 10 18:02:58 <lightyear> so you want to have a ringbuffer on server level? Nov 10 18:03:01 <zaheerm> dev, i see no reason why not Nov 10 18:03:05 <dev> lightyear: yep Nov 10 18:03:13 <lightyear> that sounds awesome ... Nov 10 18:03:15 <zaheerm> lightyear, think of the possibilities, elisa will never need native dvb :P Nov 10 18:03:27 <dev> if we want to provide seek and pause for the PS3, we have to Nov 10 18:03:47 <sebp> you want 5 min the buffer? Nov 10 18:03:55 <dev> wtay: is that possible? or do we need a server for each client? Nov 10 18:04:03 <sebp> arg, in the buffer Nov 10 18:04:19 <dev> sebp: why not? why not 15? it is only a question of disk space Nov 10 18:04:32 <zaheerm> sebp, the ring buffer would be a large enough size that users wouldn't know that there was a limit :) Nov 10 18:04:51 <sebp> ok, if it's on disk that's fine Nov 10 18:05:22 <wtay> dev, it's possible, you don't need a server for each client Nov 10 18:05:23 <zaheerm> i've rewinded over an hour on my sky set top box without issues Nov 10 18:05:32 <sebp> I must admit I'd always wanted to jump back in live tv Nov 10 18:05:42 <dev> wtay: cool, so that is the way to go Nov 10 18:06:31 <lightyear> more important: pause and ffw over the comercials! Nov 10 18:06:42 <zaheerm> sorry conf call now :( Nov 10 18:06:51 <zaheerm> will look over discussion Nov 10 18:06:57 <dev> I do that with myth-tv since 2003 ;-) Nov 10 18:07:13 <philn> hehe Nov 10 18:07:17 <dev> anyway - first conclusions: Nov 10 18:07:56 <dev> gst-rtsp-server can handle several clients and serving each another portion of the ring-buffered stream Nov 10 18:08:14 <dev> we use for each channel one gst-rtsp-server Nov 10 18:09:10 <sebp> at least one rtsp url, it's still one server though, right? Nov 10 18:09:16 <lightyear> I would say so... Nov 10 18:10:41 <dev> one server/process? or several server instances in one process? Nov 10 18:10:55 <lightyear> dev: you mean that we will stream one channel per url, no? Nov 10 18:11:02 <lightyear> I would start and stop the servers as needed Nov 10 18:11:13 <dev> on demand, sure Nov 10 18:11:38 <lightyear> so that you have a pool, and maybe we can somehow modify the server to actually serve all the channels of one transponder Nov 10 18:11:52 <lightyear> but as different streams Nov 10 18:12:29 <dev> implementation detailsas zaheerm said - Nov 10 18:12:34 <lightyear> sure Nov 10 18:12:47 <lightyear> but that would be even more awesome ... Nov 10 18:13:22 <philn> didn't twi_ already made some modifications like that in his branch? Nov 10 18:13:31 <sebp> lightyear: that's the goal. that you can watch all channels of one TS at the same time with only one adapter Nov 10 18:15:21 <dev> any objections to follow that road? wtay? Nov 10 18:16:40 <wtay> you need one server with multiple sessions Nov 10 18:17:26 <dev> but there is nothing technically speaking against this kind of setup? Nov 10 18:17:31 <wtay> meaning one instance listening on the RTSP port and setting up the pipelines for the clients Nov 10 18:17:39 <dev> yep Nov 10 18:18:46 <wtay> I guess it could work with a separate process per client too Nov 10 18:19:18 <dev> maybe that's better in terms of memory leaks,... Nov 10 18:20:01 <dev> cool, I really love it to see all these little pieces fall into place Nov 10 18:20:49 <wtay> you'll need to pass file descriptors between processes and other nasty things Nov 10 18:21:17 <zaheerm> flumotion does this Nov 10 18:21:28 <dev> so we'll document that somewhere, review that and start with some of the pieces Nov 10 18:22:48 <dev> they should be all separated enough to work on its own Nov 10 18:23:10 <sebp> I don't want it to be too complicated in the beginning, otherwise it takes ages until the server is working Nov 10 18:23:33 <dev> yep, that's why I propose that component approach Nov 10 18:24:13 <dev> 1) gst-rtsp-server and your dvb-* pipeline Nov 10 18:24:17 <dev> 2) ring-buffer Nov 10 18:24:58 <sebp> is there already a ring-buffer element for gst? Nov 10 18:24:59 <dev> and in parallel the Coherence parts which should not interfere with yours Nov 10 18:26:34 <dev> apart from maybe some dbus methods to query and maybe start/stop some things Nov 10 18:26:56 <zaheerm> ok back Nov 10 18:27:16 <zaheerm> 1) should be handled by dvb-daemon i think Nov 10 18:27:29 <dev> yep Nov 10 18:27:34 <sebp> right Nov 10 18:27:40 <zaheerm> there is no ring buffer element for gst tho there are some design notes wrt queue2Nov 10 18:31:11 <dev> yep, we've already tried that Nov 10 18:27:44 <dev> as it has to work without Coherence too Nov 10 18:28:52 <zaheerm> wtay is the man to explain how to write a decent ring buffer element in gst Nov 10 18:30:05 <zaheerm> dev, ps3 does pause/rewind in http streams? (you said it doesn't handle rtsp for mpegts) Nov 10 18:30:27 <dev> zaheerm: it does, with http byte-ranges Nov 10 18:30:51 <zaheerm> dev, ps3 supports mpegts over http? Nov 10 18:31:11 <philn> zaheerm: i think twi already implemented that fd stuff Nov 10 18:31:18 <zaheerm> i was meant to test that on the weekend, with a flumotion plug to act as a media server Nov 10 18:31:23 <zaheerm> philn, what fd stuff? Nov 10 18:31:58 <zaheerm> philn, if you mean fd passing between processes, flumotion does it between porters and http-streamer and http-server components Nov 10 18:33:03 <philn> zaheerm: twi has a branch of gst-rtsp-server and he told me he implemented fd-passing stuff, a bit like in flumotion Nov 10 18:33:16 <philn> or maybe i just misunderstood :D Nov 10 18:33:30 <zaheerm> he has put multiple processes in gst-rtsp-server? Nov 10 18:33:38 <sebp> philn: where's that branch? Nov 10 18:34:18 <zaheerm> http://nnva.org/gst-rtsp-server.git
