|
VideoLAN Howto
written and maintained by Marc Ariberti <marcari@vide
olan.org> and Alexis de Lattre <alexis@videolan.org>
version 1.5 2002/05/25
This howto describes how to use the complete VideoLAN solution.
Table of Contents
- Introduction
1.1 What is the VideoLAN project ?
1.2 About this Howto
1.3 Legal notice
1.4 The documentation of the project
1.5 Requirements
1.5.1 The skills
1.5.2 The VideoLAN Client
1.5.3 The VideoLAN Server and mini-Server
1.5.4 Get a streamable MPEG file
1.5.5 The VideoLAN Channel Server
1.5.6 The Network
1.6 The mailing-lists
2. Overview of the existing streaming solutions
2.1 Unicast
2.1.1 What is unicast and why use it ?
2.1.2 Network hardware required
2.1.3 Server configuration
2.1.3.1 (TT
2.1.3.2 (TT
2.1.4 Client configuration
2.2 Broadcast
2.2.1 What is broadcast and why use it ?
2.2.2 Network hardware requirements
2.2.3 Server configuration
2.2.3.1 (TT
2.2.3.2 (TT
2.2.4 Client configuration
2.3 Multicast
2.3.1 What is multicast and why use it ?
2.3.2 Network hardware required
2.3.3 Server configuration
2.3.3.1 (TT
2.3.3.2 (TT
2.3.4 Client configuration
2.4 Unicast IPv6
2.4.1 Basics
2.4.2 Server configuration
2.4.3 Client configuration
3. Using channel tools
3.1 Multicast and miniVLCS
3.1.1 Building miniVLCS
3.1.2 miniVLCS configuration
3.1.3 Run mini-vlcs
3.1.4 (TT
3.2 Broadcasting and VLANserver + VLANbridge
3.2.1 Overview
3.2.2 The two versions of the tools
3.2.3 Installation and configuration of the VLAN solution
3.2.3.1 mini VLAN Server
3.2.3.2 vlb-linux
3.2.4 (TT
4. Video On Demand
4.1 Overview
4.1.1 What is Video On Demand ?
4.1.2 Hardware required
4.1.3 Design of the VOD solution
4.2 VOD with VideoLAN
4.2.1 On the server
4.2.2 On the client
4.2.3 Client launched by a Web browser
4.2.4 Using a channel tool for VOD
5. Designing a complete VideoLAN solution
5.1 The VideoLAN Servers
5.2 The VideoLAN Channel Servers
5.2.1 Multicast solution
5.2.2 VLANs solution
6. Conclusion
- Introduction
1.1. What is the VideoLAN project ?
VideoLAN is a complete software solution for video streaming,
developed by students at the Ecole Centrale Paris and contributors
from all over the world, under the General Public License (GPL). It
has been designed for streaming MPEG 1 and MPEG 2 videos on local area
networks (LAN), but it can be extended to metropolitan or wide area
networks (MAN, WAN), thanks to the multicast technology.
The VideoLAN solution includes a server, which can stream video from
various sources (file, DVD, satellite and MPEG 2 encoder), a client,
which can receive, decode and display MPEG 1 and MPEG 2 streams and,
if necessary, a channel server which tells automatically to the client
the parameters needed to receive the stream.
Here is an illustration of the complete VideoLAN solution :
DVD --->- Unicast/Broadcast/Multicast
\ ---
File --->-- -------- / \ --------
|->-| Server |=====>====| LAN |---->-----| Client |
Satellite ->-- | (VLS) | \ / | (VLC) |
/ -------- --- --------
MPEG2 -->- ^
encoder |
v
----------------
| Channel Server |
| (VLCS) |
----------------
More details about the project can be found on the VideoLAN Web site.
1.2. About this Howto
This Howto is designed to explain how to use the complete VideoLAN
solution. It presents the different possibilities of VideoLAN and
which configuration you should adopt depending on the configuration of
your network.
1.3. Legal notice
Copyright (©) 2002 by the VideoLAN project.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.1 or
any later version published by the Free Software Foundation ; with no
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
Texts. The text of the license can be found on .
1.4. The documentation of the project
There are four main documents :
- the VideoLAN Quickstart,
- this VideoLAN HOWTO,
- the VideoLAN Server user guide,
- the VideoLAN Client HOWTO.
The up-to-date version of these documents can be found on the VideoLAN
Web Site.
1.5. Requirements
1.5.1. The skills
Basic skills on Linux and Network should be enough.
1.5.2. The VideoLAN Client
The VideoLAN Client (vlc) works on many platforms : Linux, Windows,
Mac OS X, BeOS, *BSD, Solaris, iPaq, QNX. It can read MPEG 1, MPEG 2
and MPEG 4 / DivX files from a hard disk or a CD-ROM drive, read DVDs
and VCDs. But the most important function is that it can read MPEG 1,
MPEG 2 and DVDs streamed on a network. vlc requires at least a Pentium
400Mhz with 32MB of RAM.
1.5.3. The VideoLAN Server and mini-Server
The VideoLAN Server (vls) can read videos from :
- an MPEG 1 or MPEG 2 file stored on a hard drive or on a CD,
- a DVD located in a local DVD drive or copied on a hard drive,
- a satellite card,
- an MPEG encoding card ;
and stream it on the network.
A Pentium 100 MHz with 32 MB of memory should be enough to send one
stream on the network. When streaming a lot of videos stored on a hard
drive, the actual limitation is not the processor but the hard drive
and the network connection.
vls works under Linux, Solaris and Windows. Currently, the Windows vls
version of is only able to stream a video from a file.
The VideoLAN mini-Server (vlms) is only capable of streaming an MPEG
file. vlms works on Linux only. It is easier to install and configure
than vls and should be used mainly for testing purposes.
1.5.4. Get a streamable MPEG file
vls and vlms can stream MPEG 1 or MPEG 2 files that meet two critera :
- the file must be MPEG PS (Program Stream) or MPEG TS (Transport
Stream), that contain video and audio multiplexed. vls and vlms
can't stream MPEG ES (Elementary Stream), i.e. a file with only
audio or video.
In order to know if an MPEG file is MPEG PS, MPEG TS or MPEG ES,
read the file with vlc and look at the messages (with the interface
: Click on "View" and "Messages", or use the command line "vlc -v")
and look for a line :
module: locking demux module `mpeg_XX'
If XX = ps or XX = ts, then your file is MPEG PS and MPEG TS respec
tively , and you may be able to stream it. If XX = es, then your file
is MPEG ES and is not streamable.
2. the sequence header of the video must repeat itself regularly,
which is often the case with MPEG 2, but very rare with MPEG 1.
There is no easy way to know if the sequence header is repeated
regularly.
Files with a .vob extension are normally MPEG 2 files and files
with .mpg or .mpeg extension or usually MPEG 1 files.
You can download this streamable MPEG 2 PS file for your tests : .
1.5.5. The VideoLAN Channel Server
The VideoLAN Channel Server (vlcs) is the central architecture that
manages the network. There are different versions of vlcs for
different kinds of networks. For example, if your network supports
multicast, you will use mini-vlcs. If your network doesn't support
multicast but supports VLANs, you should use mini VLAN Server. vlcs
works on Linux only.
1.5.6. The Network
You will need a network, which can be as small as one ethernet 10 /
100 Mbit/s switch or hub, and as big as the whole Internet ! See if
your network supports "multicast". The bandwidth needed is :
1.6. The mailing-lists
If you have problems using VideoLAN, and if you don't find the answer
to your problem in the ``documentation'', please look at the online
archive of the mailing-lists. There are 3 english-speaking mailinglists
for the users :
- vlc@videolan.org for the questions on vlc,
- vls@videolan.org for the questions on vls and vlms,
- vlcs@videolan.org for the questions on vlcs and the network.
The mailing lists above also have their equivalent for the developers
(they also receive the commit mails) :
- vlc-devel@videolan.org for the development of vlc,
- vls-devel@videolan.org for the development of vls and vlms,
- vlcs-devel@videolan.org for the development of vlcs and the network
tools.
If you want to subscribe or unsubscribe to the mailing-lists, please
go to the VideoLAN Web Site
2. Overview of the existing streaming solutions
In this section, we assume that :
- a VideoLAN Client (vlc) is installed on all the client machines.
Please, refer to the VideoLAN Quickstart or the VideoLAN Client
HOWTO for the installation instructions.
- a VideoLAN Server (vls) or a VideoLAN mini-Server (vlms) is
installed on a machine. Please, refer to the VideoLAN Quickstart or
the VideoLAN Server user guide.
- you have the knowledge and the passwords to configure your network
hardware (such as switches and routers).
2.1. Unicast
2.1.1. What is unicast and why use it ?
Unicast is a simple protocol : the packets are sent directly from one
machine to another. With VideoLAN, this mean that the source IP
address is the one for the server machine, and the destination IP
address is the one for the client machine. With unicast, the stream
can go through routers without any problem.
Unicast should be used when you want to send the stream to one client
machine only. It is also used for ``Video on Demand''.
2.1.2. Network hardware required
No special feature or configuration of your network hardware is
required.
The only problem is the bandwidth. As explained in the
``introduction'' , an MPEG 1 or 2 stream needs between 3 and 9 Mbit/s.
So a 10 Mbit/s Ethernet network should be enough. 100 Mbit/s would be
needed if you want to stream several videos at the same time or stream
one big DVD stream (a DVD stream can go up to 11 Mbit/s if there are
many languages, subtitles and multiple angles).
2.1.3. Server configuration
You can either use vlms or vls to do unicast.
2.1.3.1. vlms
vlms can only stream valid MPEG PS files stored on a hard drive.
You can download this streamable MPEG 2 PS file for your tests : .
In the example below, the IP address of the client machine is
10.0.0.2. The name of the MPEG file is called MPEG_file_name.
Run vlms :
% vlms -d 10.0.0.2 MPEG_file_name
If you want the server to stream the file continuously, you can use
the -l option :
% vlms -d 10.0.0.2 -l MPEG_file_name
or if you want to send it 3 times use the option -n 3 :
% vlms -d 10.0.0.2 -n 3 MPEG_file_name
2.1.3.2. vls
Modify the configuration file vls.cfg by adding the following :
BEGIN "Channels"
net1 = "network"
END
BEGIN "net1"
Domain = "Inet4"
Type = "unicast"
DstHost = "10.0.0.2"
DstPort = "1234"
END
Then, restart vls and start to stream a video to "net1".
2.1.4. Client configuration
On the client, run vlc with this command line :
% vlc udp:
You can also use the interface :
% vlc
and then click on "Net" and select "UDP".
2.2. Broadcast
2.2.1. What is broadcast and why use it ?
Broadcast is a very dirty method to stream video : the stream is sent
to all the machines of a subnet at the same time. With VideoLAN, this
means that the source IP address is the IP address of the server, and
the destination IP address is the broadcast IP address of the subnet.
Broadcast is considered a dirty method because all the machines of the
subnet receive the stream, even the machine that don't want to watch
the stream. It creates a lot of pollution on the network and some
devices don't like to receive too much broadcast.
So broadcast should be used to stream video to multiple clients at the
same time only if your network hardware doesn't support multicast (see
``next subsection'').
2.2.2. Network hardware requirements
No special feature or configuration of your network hardware is
required. It only needs to have the necessary bandwidth, as for
unicast.
2.2.3. Server configuration
You can either use vlms or vls to do broadcast.
2.2.3.1. vlms
In the example below, the broadcast IP address of the subnet is
10.0.0.255. The name of the MPEG file is called MPEG_file_name.
Run vlms :
% vlms -d 10.0.0.255 MPEG_file_name
If you want the server to stream the file continuously, do :
% vlms -l -d 10.0.0.255 MPEG_file_name
2.2.3.2. vls
Modify the configuration file vls.cfg by adding the following :
BEGIN "Channels"
net1 = "network"
END
BEGIN "net1"
Domain = "Inet4"
Type = "broadcast"
DstHost = "10.0.0.255"
DstPort = "1234"
END
Then, restart vls and start to stream a video to "net1".
2.2.4. Client configuration
On the client, run vlc with this command line :
% vlc udp:
You can also use the interface :
% vlc
and then click on "Net" and select "UDP".
2.3. Multicast
2.3.1. What is multicast and why use it ?
When you use unicast or broadcast, you can encounter the following
problems :
- with unicast, when a lot of clients want to receive the stream, the
network interface of the server becomes saturated. So the number of
clients is very limited, especially when the stream is big.
- with broadcast on a LAN, the number of clients are not limited
because all the machines of the subnet receive the stream, with
only one stream going out of the network interface of the server.
But the machines that do not want to receive the stream are
polluted and some devices do not like to receive huge broadcasts.
If you want to send several streams at the same time, the network
becomes oversaturated.
The above problems are why the multicast protocol was invented. With
multicast, the packets are sent on the network to a multicast IP group
which is designated by its IP address. Multicast IP addresses belong
to the Class D : 224.0.0.0 -> 239.255.255.255.
The machines can join or leave a multicast group by sending a request
to the network. The request is usually sent by the kernel of the
operating system. Linux (if the option "IP multicast" in the category
"Networking options" is activated in the configuration of the kernel),
Windows (at least 98, 2000 and XP) and MacOS X support multicast. The
vlc takes care of asking the kernel of the operating system to send
the join request.
The network devices do everything necessary to keep in memory which
machine belongs to which group and forwards the stream to the client.
It is possible for one client to belong to several groups.
Below is a scenario given as an example :
- vls sends a stream to the multicast IP address 239.255.12.42.
Client n°1 and n°2 already joined the multicast group and receive
the stream.
Server (vls) Network Clients (vlc)
stream --------------> 239.255.12.42 ----------> client n°1
|
--------> client n°2
2. Client n°3 sends a "join" request to the multicast group in order
to receive the stream.
Server (vls) Network Clients (vlc)
<-------------- client n°3
join 239.255.12.42
3. Client n°3 now receives the stream.
Server (vls) Network Clients (vlc)
--------> client n°1
|
stream --------------> 239.255.12.42-----------> client n°2
|
--------> client n°3
4. Client n°1 sends a "leave" request to the multicast group.
Server (vls) Network Clients (vlc)
<-------------- client n°1
leave 239.255.12.42
5. Client n°1 doesn't receive the stream any more.
Server (vls) Network Clients (vlc)
stream --------------> 239.255.12.42 ----------> client n°2
|
--------> client n°3
2.3.2. Network hardware required
Be careful ! Make sure that your network devices support multicast.
If they do not, you will have the same effect as broadcast. For
example, hubs do not support multicast : if a machine connected to a
hub joins a multicast group, all the machines connected to the hub
will receive the stream.
Please refer to the management guide of your switches and routers to
see if they support multicast. All the recent manageable switches and
routers of the big network hardware manufacturers support multicast.
This document does not explain how to configure your network because
it is specific to each manufacturer.
2.3.3. Server configuration
You can either use vlms or vls to do multicast.
2.3.3.1. vlms
Put the multicast IP address as the destination address :
% vlms -d 239.255.12.42 MPEG_file_name
Increase the TTL (Time To Live) value if you want your multicasted
stream to go through several routers. Every router decreases the TTL
by 1, and a stream can't go through a router if its TTL is 1. For
this, use the -t option :
% vlms -d 239.255.12.42 -t 12 MPEG_file_name
2.3.3.2. vls
In the configuration file vls.cfg, put the multicast IP address in the
DstHost field and "multicast" in the Type field.
Do not forget to increase the TTL (Time To Live) if you want your
multicasted stream to go through several routers.
BEGIN "Channels"
net1 = "network"
END
BEGIN "net1"
Domain = "Inet4"
Type = "multicast"
TTL = "1"
DstHost = "239.255.12.42"
DstPort = "1234"
END
Then, restart vls and start to stream a video to "net1".
2.3.4. Client configuration
On the client, run vlc with this command line :
% vlc udp:@239.255.12.42
You can also use the interface :
% vlc
and then click on "Net" and select "UDP Multicast" and write the mul
ticast IP address "239.255.12.42".
2.4. Unicast IPv6
2.4.1. Basics
You should already have IPv6 configured on the client and server
machines and on your network. For more information see the Linux IPv6
howto.
Unicast IPv6 was only tested under Linux, so we cannot tell if it
works on other platforms. If you use another operating system with
IPv6, please send us your feedback.
2.4.2. Server configuration
IPv6 is NOT supported by vlms. You must use vls.
In the configuration file vls.cfg, you have to change the destination
IP address to an IPv6 address, and tell the system that you want to
stream using IPv6. Here is sample partial vls.cfg :
BEGIN "Channels"
net1 = "network"
END
BEGIN "net1"
Domain = "Inet6"
DstPort = "1234"
DstHost = "3ffe::12"
END
In this example :
- 3ffe::12 is the IPv6 address of the client,
- Inet6 tells vls to use IPv6.
Then, restart vls and start to stream a video to "net1".
2.4.3. Client configuration
On the client, run vlc with this command line :
% vlc udp6:
or
% vlc --ipv6 udp:
If you want to specify the port on the command line of vlc, for
example port 4321 :
% vlc udp6:@:4321
3. Using channel tools
Channel service tools are useful when you want to stream multiple
videos at the same time and enable the clients to change channel (i.e.
switching from one stream to another) easily without typing IP
addresses, but just using the interface and selecting a channel
number.
The channel service tool that you will use depends on your network :
- if your network supports multicast, you will use mini VideoLAN
Channel Server (miniVLCS) ;
- if your network doesn't support multicast but supports VLANs, you
will use a VLAN server (either the VLAN Server or the mini VLAN
Server), and if your router cannot filter between VLANs, you will
use a VLAN bridge in order for the clients to be able to
communicate with all the other machines when watching a stream.
- if your network doesn't support multicast nor VLANs, then you will
not be able to stream multiple videos at the same time to the
clients. You can broadcast all the streams on different ports and
use miniVLCS, but this is so dirty that you shouldn't even think
about it !
Warning : the network tools that will be presented in this section
have been tested only under Linux. We cannot guarantee they will work
with other operating systems.
3.1. Multicast and miniVLCS
If your network supports multicast, you will use the mini VideoLAN
Channel Server (miniVLCS) as your channel tool. This program sends the
parameters the VideoLan Clients need in order to receive the streams.
3.1.1. Building miniVLCS
Download the file miniVLCS-0.1.2.tar.gz from the Network download
page.
Then uncompress the archive and build the program :
% tar xvzf miniVLCS-0.1.2.tar.gz
% cd miniVLCS-0.1.2
% make
It creates an executable program named vlcs.
3.1.2. miniVLCS configuration
Edit the configuration file vlcs.conf.
The first line corresponds to channel 0, the second line corresponds
to channel 1, the third line to channel 2, and so on.
In each line, put what you would type on the command line of vlc,
except for the first line I: nostream. It means that you don't stream
anything in channel 0.
For example, if you have two multicast stream :
- Channel 1 : 239.255.12.42
- Channel 2 : 239.255.12.43
your vlcs.conf file would be :
I: nostream
udp:@239.255.12.42
udp:@239.255.12.43
3.1.3. Run mini-vlcs
As normal user, do :
% ./vlcs
You must restart vlcs every time you change the configuration file
vlcs.conf.
3.1.4. vlc configuration
The simplest solution is to use the interface of vlc : click on "Net",
select "Channel server", write its IP address or DNS name.
Then, you see a new section "Network Channel" on the interface.
Select the desired channel and click on Go!.
3.2. Broadcasting and VLANserver + VLANbridge
3.2.1. Overview
If your network doesn't support multicast but supports VLANs, you will
use a VLAN server. If your network supports multicast, you will
certainly NOT want to use this solution, because it is far more
complex to set up and far more dangerous for the stability of your
network. The VLAN solution has been tested on "our" previous network
(the network of the student residence of the Ecole Centrale Paris) and
worked well. But we now have a new network which supports multicast,
so the VLAN solution is not tested nor developed any longer.
In order to explain the VLAN solution, I will take the example of our
previous network. This network had :
- an ATM 155 Mbit/s backbone,
- on the periphery, 10 Mbit/s Ethernet switches with VLAN support.
As an MPEG stream needs a bandwith between 4 to 9 Mbit/s, we could
send multiple streams on our 155 Mbit/s backbone, but each student had
a 10 Mbit/s connection and therefore could only receive one stream at
the same time. It was out of the question to send the stream to
machines that didn't want to receive it.
So the idea was to broadcast each stream in a VLAN, different from the
regular VLAN. In order for a student to change channel, we needed to
change his machine of VLAN. This was the job of the VLAN Server. The
VLAN Server received the requests of the VideoLAN Clients and changed
the machines of VLAN by sending SNMP requests to the switches.
We had the following VLAN configuration :
- VLAN 1 : VLAN for the switches,
- VLAN 2 : regular VLAN with no stream broadcasted, called channel 0,
- VLAN 3 : one stream broadcasted, called channel 1,
- VLAN 4 : one stream broadcasted, called channel 2,
- VLAN 5 : one stream broadcasted, called channel 3,
The VLAN Server has a big database with the correspondence between the
MAC addresses of the clients Ethernet network cards and the couple
(switch, port) where the client machine is connected. The VLAN Server
can fill up his database and update-it automatically by sending
regularly SNMP requests to the switches.
Let's take the following scenario as an example :
- The VLAN configuration is as described above. All the computers are
in VLAN 2, which is the regular VLAN. Three streams are broadcasted
repectively in VLAN 3, 4 and 5.
- A student wants to watch channel 1. He starts vlc on its machine
and select channel 1. When he clicks on "Go!", his computer sends a
request to the VLAN Server. This requests contains the MAC address
of his Ethernet card and the number of the channel that he wants to
watch.
- The VLAN Server receives this request. It looks into its database
to see on which switch and which port of the switch the computer of
the student is plugged. It also knows that channel 1 is broadcasted
in VLAN 3. It sends an SNMP request to the switch telling it to put
the port on which the student's computer is plugged in VLAN 3.
- The student's machine receives the stream and his vlc displays it.
- The student can select channel 2 or 3. His computer will send a new
request to the VLAN Server. The VLAN Server will send another SNMP
request to the switch telling it to put the port of which the
student's computer is connected is VLAN 4 or 5.
- When the student quits vlc, his machine sends another request to
the VLAN Server asking to be put back to the regular VLAN (i.e.
VLAN 2). The VLAN Server receives the request and put the port
back to VLAN 2.
There is another problem : we want the machines in VLAN 3, 4 and 5 to
be able to communicate with all the other machines. If you have a good
router, you can configure it so as to let the different VLANs
communicate but without letting the streams broadcasted by vls in a
VLAN go to the other VLANs. But if you have a bad router like our old
router, you need to develop another solution, called VLANbridge. The
idea of the VLANbridge is to have a machine under Linux connected to
all the VLANs. This machine is configured so as to let the different
VLANs communicate, but it prevents the streams broadcasted by vls in a
VLAN go to the other VLANs.
3.2.2. The two versions of the tools
First, the VideoLAN team developed a VLAN Server and a VLANbridge in C
language. When a computer asked to go to channel 1, it sent a request
to the VLANserver. The VLANserver received this request, put the port
of the switch on which the computer was connecter in VLAN 3, and
transmitted this information to the VLANbridge so that the computer
was "bridged" with the other VLANs. The advantage of this solution was
that the computer hosting the VLAN Server could be a pretty modest
machine. But the VLAN Server was quite complex (all his database was
written from scratch in C language !), it segfaulted too often, there
was regularly MAC addresses missinig in its database, and there was
sometimes some problem of communicaction with the VLANbridge.
Then, in year 2001, the VideoLAN team started to develop a new set of
tools for the VLAN solution.
Marc Ariberti and Boris Dorès developped a new VLANbridge, called vlblinux.
The idea was that the VLANbridge sould learn the changes by
itself, and didn't need to communicate with the VLAN Server. They
developed a patch for the bridge module of the Linux kernel, so as to
serve the needs of VideoLAN. You just have to tell to the VLANbridge
the MAC addresses of the vls, and it automatically learn which machine
is in which VLAN, and enable the VLANs to communicate but it firewalls
the packets that have the source MAC address of a vls.
Marc Ariberti and Christophe Massiot developed a new VLAN Server,
called mini VLAN Server. The idea was to use a PostgreSQL database
instead of the "hand-made" database of the VLAN Server. The mini VLAN
Server is written in PHP (for the heart and all the requests to the
SQL database) and C (for the reception of the requests from the
VideoLAN Clients). It is more reliable, it never segfault, but it
needs a decent machine (we used a 300Mhz Pentium with 128Mo de RAM for
a network of 1000 machines). The mini VLAN Server cannot be used with
the old VLANbridge.
Eventually, if your network doesn't support multicast, we advise you
to use the mini VLAN Server. And if you router cannot make the VLANs
communicate with filtering functions (in order to stop the streams
broadcasted to go from a VLAN to another), we advise you to use vlblinux.
3.2.3. Installation and configuration of the VLAN solution
3.2.3.1. mini VLAN Server
The installation of the mini VLAN Server is not explained here because
it is quite complex and we think that most of you have a network with
multicast support. You can download it from the Network download page.
The "tarball" contains an "INSTALL" file with instructions in French.
If you want to use the mini VLAN Server and don't understand French,
you can ask for help in the mailing-list vlcs@videolan.org.
3.2.3.2. vlb-linux
You can download this version of the VLANbridge from the Network
download page. The "tarball" contains an file "vlanbridge-help" with
detailled explainations in English of the idea behind the VLANbridge
and, at the end, the instructions to install and configure this
version of the VLANbridge.
3.2.4. vlc configuration
The simplest solution is to use the interface of vlc : click on "Net",
select "Channel server", write its IP address or DNS name.
Then, you see a new section "Network Channel" on the interface.
Select the desired channel and click on Go!.
4. Video On Demand
4.1. Overview
4.1.1. What is Video On Demand ?
With Video On Demand (VOD), the client can start the video when he
wants, make pauses, go forward and go back in the video. It's of
course the best of video streaming and the dream for every client.
4.1.2. Hardware required
But VOD is a very big consumer of resources for the server and the
network. VOD is unicast, not multicast. This mean that if 50 clients
are doing VOD with the same server, watching a 5 Mbit/s MPEG 2 video,
the resources needed as a minimum are the following :
You can see that VOD needs huge resources for the server in term of
disk access and network connection, and for the backbone.
4.1.3. Design of the VOD solution
The design is very simple. The idea is to do HTTP streaming, i.e.
stream an MPEG video encapsulated in HTTP. The regulation of the
bitrate between the client and the server is done automatically by
TCP. With HTTP version 1.1, there is the possibility to seek in a file
downloaded, that we use to seek in the video.
On the VOD server, you need to install a Web server. For example, we
use a Linux server running Apache as HTTP daemon. But other O.S. and
other Web server should work too, but we have never tested. Make your
MPEG 1 or 2 files available to the clients on the Web server.
On the client, you only need vlc installed.
4.2. VOD with VideoLAN
4.2.1. On the server
For example, we have a Web server whose DNS name is vod.videolan.org.
On this server, there are two MPEG files video1.mpg and video2.mpg
available to the clients at the adresses
http://vod.videolan.org/test/video1.mpg and
http://vod.videolan.org/test/video2.mpg.
4.2.2. On the client
On the client, run vlc with this command line to view the first video
:
% vlc http://vod.videolan.org/test/video1.mpg
and this command line to view the second video :
% vlc http://vod.videolan.org/test/video2.mpg
You can also use the interface : click on "Net" and select HTTP and
enter the URL "vod.videolan.org/test/video1.mpg" or
"vod.videolan.org/test/video2.mpg".
4.2.3. Client launched by a Web browser
The idea is to have a Web page with the list of the videos available,
and, when you clic on a video, vlc starts to display it.
You have to write the Web page with regular hypertext links to the
video files and configure you Web browser to launch vlc when a file
with ".mpg" (and ".mpeg" and ".vob") extension is selected. Tell the
client that vlc accepts the URL as a command line : with this
configuration, the file will not be stored on the client's hard drive
but will be directly read by vlc.
4.2.4. Using a channel tool for VOD
You can use miniVLCS and enable the clients to select channel 1 to
view the first video, channel 2 to view the second video, and so on.
Install miniVLCS on a Linux machine (it can be the same machine as the
VOD server). Please, refer to the section describing ``the building of
miniVLCS''.
In the following example, the configuration file vlcs.conf should look
like that :
I: nostream
http://vod.videolan.org/test/video1.mpg
http://vod.videolan.org/test/video2.mpg
Then run miniVLCS as a normal user :
% ./vlcs
The simplest solution is to use the interface of vlc : click on "Net",
select "Channel server", write its IP address or DNS name.
Then, you see a new section "Network Channel" on the interface.
Select "1" and click on "Go!" to view the first video. Select "2" and
click on "Go!" to view the second video.
This function is broken in release 0.4.0 of vlc.
5. Designing a complete VideoLAN solution
This section talks about how to organise the servers needed for
VideoLAN in order to stream on a Local Area Network (LAN), or a Wide
Area Network (WAN). These are not precise technical procedures but
suggestions taken from our own experience.
5.1. The VideoLAN Servers
You can have as many VideoLAN Servers (vls) on your network as you
want. vlms should only be used for testing purposes. You may want to
specialise your VideoLAN Servers. For example, on our campus, we have
three VideoLAN servers located in three different places :
- one for MPEG encoding with an MPEG encoding card located in the
video studio of the campus in charge of streaming the live shows,
- one for Satellite streaming with a satellite card located in a
technical room near the satellite parabola,
- one for video streaming with a lot of disk space located in another
technical room where there is a fast network connection.
If you want to stream multiple DVDs (we suppose that you have the
legal right to do so) from the same machine, you may want to have big
disk drives instead of multiple DVD drives. You can copy the DVDs on
the hard drives and tell vls to read from the hard drive instead of
the DVD drive.
If you want to stream satellite channels (we again suppose that you
have the legal right to do so), you need a satellite card for every
transponder. On one transponder, you have up to around 10 channels. If
you want to stream 5 channels that are on 3 different transponders,
you will need 3 satellite cards inside the machine. We don't care if
those 3 transponders are on 3 different satellites, that's your
problem ! A satellite stream is around 4 Mbit/s. You will then stream
5 x 4 = 20 Mbit/s : a 100 Mbit/s Ethernet connection will be needed.
If you have want to stream channels from more transponders that PCI
slot available in the machine... you will need to find a second
computer !
If you want to do Video On Demand with a lot of potential clients, you
may want to set up a server specialized for VOD. This server would
have very fast disk access and be located in a technical room with a
fast network connection available. For example, you could set up a SAN
with disk drives connected in fibre channel and multiple 100 Mbit/s
Ethernet connections or a Gigabit connection to the network.
5.2. The VideoLAN Channel Servers
5.2.1. Multicast solution
If your network supports multicast, you will have to install a
miniVLCS in order to enable the clients to easily go from a channel to
another. This program doesn't need much resources in term of computer
power or network connection. Therefore, you can install it on a old
machine running Linux, or on one of your VideoLAN Servers.
Multicast allows you to stream a video to multiple machines on a Wide
Area Network (WAN). The network hardware of the WAN will need to have
a full multicast support. If it doesn't, you can link multicast
islands from one to another through IP tunnels. This is how the MBone
(a Multicast Backbone on the Internet) works.
5.2.2. VLANs solution
With the VLANs solution, you will only be able to stream on a LAN
where all the switches support VLANs. You will not be able to stream
on a WAN. With this solution, we advise you to have a Linux machine
dedicated to hosting the mini VLAN server. This machine is critical in
term of security because it will have in it's configuration files the
MIBs of all the switches of you LAN.
If your router is a bad router (i.e. you can't configure it so as to
let the different VLANs communicate but without letting the streams
broadcasted by vls in a VLAN go to the other VLANs), you may want to
set up a VLANbridge or buy a new router. If you want to set up a
VLANbridge and you have an Ethernet network, you need to have a Linux
machine with as many network cards as VLANs used. This machine will be
located in a place where you have a switch with as many ports
available as VLANs used. You will plug each network card to a port in
each VLAN used, and your VLANbridge will enable the different VLANs to
communicate but without letting the video streams go from a VLAN to
another. If you want to set up a VLANbridge and you have an ATM
backbone (like on our old network), the VLANbridge machine only needs
one ATM card connected to the ATM backbone : this card will enable the
VLANbridge to have an interface in every VLAN.
6. Conclusion
The VideoLAN solution works well now, but the VideoLAN team is always
eager to add new features and adopt new standards. Here are the new
features that we plan to develop and the new standards that we plan to
adopt :
- MPEG 4. We have already started to develop the DivX (a variant of
MPEG 4) support of vlc... and we would like to be able to stream
MPEG 4 as we do with MPEG 1 and 2.
- IPv6. vlc and vls already support IPv6, but we have only tested
unicast IPv6. We would like to test the multicast IPv6.
- SAP (Session Announcement Protocol). This protocol will allow the
clients to have the program of what is streamed on the network. We
have already started to study this standard.
- RTP and RTSP. Those protocol are certainly the futur of the network
solution of VideoLAN.
- vlc as a plug-in for Web browsers. The development has already
started.
|