[streaming] Re: VOD implementation suggestions

Marc Manthey marc at let.de
Wed Aug 25 22:18:36 CEST 2004


hy gildas

great idea

i found something interesting  maybee you will have  a look?;-)

http://212.202.162.140/Cuseemedoku/

maybee you could  add some  features from the  dokumentation


regards

marc



On 25.08.2004, at 21:59, Gildas Bazin wrote:

Hi people,

Since there has been some interest in implementing VOD support for VLC, 
I
decided to gather some information (special thanks to fenrir :) and 
write
up a small proposal about how to implement this.
Bear in mind that I don't really know much about RTSP so you'll have to 
take
all this with a pinch of salt.

First it has to be noted that the "streaming output" architecture of VLC
combined with the VLM (videolan manager which is part of VLC) should 
make
implementing RTSP support relatively straightforward. Which means it 
will
need a fair amount of code but should integrate well in the current
architecture.

So what needs to be done ?

1 - "VOD server" plugin:
---------------------------
Most of the work needed will be to create a new "VOD server" plugin. In 
our
case the "VOD server" plugin will implement an RTSP protocol stack but 
we
can imagine having other "VOD server" plugins implementing other 
protocols
(or alternative implementations of the same protocol).

This "VOD server" plugin will only act as a middle man between clients 
and
the VLM. So it will basically receive commands from clients and send 
orders
to VLM (play/pause/stop input or such). When clients request a stream 
for
instance, the "VOD server" will send a start command to VLM with the
appropriate stream output options (to select the right elementary stream
and stream them with the requested output method).

I want to emphasis the fact that the "VOD server" wouldn't stream the 
input
data itself. This part of the task would be delegated to the "streaming
output" layer of VLC. The "VOD server" is just there for the interaction
between the client and VLC.

2 - VLM (videolan manager):
--------------------------------
The VLM is already there but it will need to be extended to work with 
"VOD
server" plugins.

VLM is used to add/register new input items with the "VOD server".
For instance: "new foo vod input file://bar.avi loop" adds a new input 
item
to the videolan manager and "setup foo enabled" will later on register 
it
with the "VOD server" (so clients can see/access it).

In the case of an "RTSP server", to generate the SDP for an input, we 
will
need to pre-parse it to gather information about its elementary streams.
That can be done with VLM as well, with the help of a special stream 
output
module. Basically, before VLM registers an input item with the "VOD
server", it could start playing the input with a special stream output
module which would gather all ES information and store it in a shared
location (like the input_item_t structure that defines the basic 
properties
of an input). Once this information is gathered, the special stream 
output
module will stop the input and VLM will register the input to the "VOD
server" and pass along the ES info.

So VLM needs to be modified to:
- Start the "VOD server"
- Initiate the pre-parsing of the input to gather the ES info
- Register/Unregister an input item with the "VOD server"

3 - Pre-parsing stream output module:
-------------------------------------------
As stated above we need a simple stream output module whose only job is 
to
register the elementary stream information of an input and store them in
the input_item_t structure for later use by VLM. Gathering this info 
would
be easy as the module will just have to wait until a certain amount of 
time
worth of data has reached the stream output fifos. When this amount of 
time
has been read from the input, we can assume all the ES are there.
Pre-parsing could of course also be extended to full parsing if need be.
Once the module has the ES info, it could signal the input to stop.

4 - The RTP (access output) plugin:
----------------------------------------
We already have an RTP access output plugin (part of the streaming 
output
architecture) so I'm not sure we need much work there.


Well, I think that's about it.
I don't see that as a very difficult job and furthermore there are 
several
separated tasks here so it could be done cooperatively....
So all we need now are people motivated enough to start the work :)

Regards,

--
Gildas

-- 
This is the streaming mailing-list, see 
http://www.videolan.org/streaming/
To unsubscribe, please read http://www.videolan.org/support/lists.html
If you are in trouble, please contact <postmaster at videolan.org>



--
"Wer die freiheit aufgibt, um sicherheit zu gewinnen,
  wird am ende beides verlieren." (benjamin franklin)

          Marc Manthey
          Hildeboldplatz 1a
          D – 50672 KÖLN
          web:http://www.let.de
          mail:marc at let.de
          aim:addbuddy?screenname=macfreak2004
          Mobile:+49(0)177-3415481
--

-- 
This is the streaming mailing-list, see http://www.videolan.org/streaming/
To unsubscribe, please read http://www.videolan.org/support/lists.html
If you are in trouble, please contact <postmaster at videolan.org>



More information about the streaming mailing list