From a user's point of view, the VideoLAN Server can be divided into four
kinds of components: a manager
, inputs
, converters
, and
channels
.
File, --------- ------------- ----------- Network, DVD, --> | INPUT |---->| CONVERTER |---->| CHANNEL |--> File, ... --------- ------------- ----------- ... \ ----------- / ----------| MANAGER |---------- ----------- ^ | Administration Interface
The role of an input
is to read MPEG streams from a given source
(file, DVD, device, ...), and feed the right converters
with these
streams. An input may be able to read several streams, which are called
programs
. There are currently two kinds of inputs: the local input
,
which can read videos from files or DVDs, and the video input
, which has
been designed for reading streams from Video4Linux devices (/dev/video) able
to produce MPEG streams. Both inputs are able to read MPEG1 or MPEG2 streams,
either in PS or TS format. Of course, you can use several inputs and play
several programs at the same time.
The role of a converter
is to receive a stream from an input,
and convert it into the MPEG-TS format. If you don't know what PS or TS
are, here is some explanation. When you play a MPEG video from a DVD, for
instance, the MPEG stream is actually composed of several streams (called
Elementary Streams): there is one stream for video, one for audio, another
for subtitles, and so on. These different streams are mixed together into
a single Program Stream (PS). So, the .VOB files you can find in a DVD are
actually MPEG2-PS files. But this PS format is not adapted for broadcasting
video through a network or by satellite, for instance. So, another format
called Transport Stream (TS) was designed for broadcasting MPEG videos
through such channels. The VideoLAN Server is able to convert PS streams
(from DVDs, for instance) into TS streams (ps2ts converter). Of course, it
can also read TS streams, and fix them by handling stream discontinuities
(ts2ts converter).
A channel
receives a stream from a converter, and send it to a given
destination (network, file, ...). If you want, you can call a "channel" an
"output": it is the same thing ;-). Currently, two kinds of channels are
supported: network
and file
. Note that, at the moment, the VideoLAN
Server can support only one output per stream, so you cannot play a stream on
the network and write it into a file at the same time. The network output
is highly configurable: you can choose which network interface you want to
use, and specify source and destination IP addresses. Of course, all that
becomes very interesting when your destination is a broadcast or multicast
address !
The manager
controls the way streams are broadcasted. Through an
administration interface
, you can tell the manager to start, stop,
suspend or resume the different programs. You can also get a list of all
programs available in the Program Table. The manager gets this table from
the vls configuration file (vls.cfg
), so it cannot be changed once vls
has been started. At the moment, you cannot ask the manager whether a given
stream is being broadcasted, but you will get an error message if you try
to stop a stream that was not broadcasted.
There are currently two ways to launch the streaming:
1. You can use the command line
to give arguments at startup
2. You can use the telnet interface
to start/stop/pause the streaming whenever you want.
A GTK interface is also to be written.
When using the telnet Interface, you must authenticate before typing any command, because any user may not be allowed to execute any command. (This can be configured in the vls.cfg
configuration file).