VOD avec Flumotion
Date: 25/06/2008 | Catégories: Open-source,Web | Tags: flumotion,theora,vod
Il y a quelques temps, je vous avez parlé de Flumotion, une solution libre de streaming audio/vidéo. Nous allons nous re-pencher sur cette solution en nous focalisant sur l'utilisation de Flumotion pour un serveur de vidéo à la demande (VOD).
Le but étant de diffuser vers des clients des vidéos stockés sur un serveur. Le client accédera au serveur via un navigateur Web (pour avoir la liste des vidéos disponibles) et plugin VLC (pour lire les vidéos). Sur ce dernier point, il existe également une applet Java (Cortado) que vous pouvez ajouter à votre serveur pour vous passer du plugin VLC.
Installation de Flumotion
Si ce n'est pas déjà fait, je vous laisse installer Flumotion en suivant cette procédure.
Configuration de Flumotion pour de la VOD
Nous allons partir d'un fichier de configuration fournie dans les sources: /usr/src/flumotion-0.5.2/conf/examples/ondemand.xml.
sudo cp /usr/src/flumotion-0.5.2/conf/examples/ondemand.xml /usr/local/flumotion/vod.xml
Nous allons éditer ce fichier pour que Flumotion puisse diffuser des vidéos stockées dans le répertoire /home/nicolargo/videos (à adapter à votre configuration) en utilisant le port TCP/8800:
<?xml version="1.0" ?>
<planet>
<atmosphere>
<component name="ondemand" project="flumotion" type="http-server" worker="localhost">
<property name="path">/home/nicolargo/videos/</property>
<property name="port">8800</property>
</component>
</atmosphere>
</planet>
Il faut ensuite lancer flumotion-admin et importer le fichier vod.xml:
SCREENSHOT
Premier test
Flumotion permet de streamer des fichiers de différents types. Pour ce premier test, je vous propose donc de télécharger des vidéos libres au format OGG/Theora sur le site suivant: Big Buck Bunny.
Par exemple:
cd /home/nicolargo/videos
wget http://mirror.bigbuckbunny.de/peach/bigbuckbunny_movies/big_buck_bunny_480p_stereo.ogg
et ensuite créer un fichier d'index:
# vi /home/nicolargo/videos/index.html
<html>
<head>
<title>Liste des vidéos disponibles</title>
</head>
<body>
<a href="http://192.168.29.222:8800/big_buck_bunny_480p_stereo.ogg">Big Buck Bunny (480p)</a><br/>
</body>
</html>
Nous pouvons alors tester la solution en saisissant l'URL suivante dans un navigateur disposant du plugin VLC:
http://<adresseipserveur>:8800/index.html
Analyse du trafic réseau
Protocole: TCP du serveur vers le client (port source: 8800, port destination: dynamique)
Mise en place de l'applet Java Cortado
Dans notre configuration, il faut que les clients disposent d'un plugin (je conseille VLC plugin pour Firefox) pour lire les vidéos diffusées par le serveur Flumotion. Pour palier à ce problème, il est possible d'inclure une applet Java Cortado au serveur Flumotion. Ainsi, n'importe quel navigateur compatible Java pourra lire les vidéos.
Il faut se rendre sur cette page pour télécharger la dernière version de l'applet: cortado-ovt.
cd /home/nicolargo/videos/
wget http://www.flumotion.net/jar/cortado/cortado-ovt-stripped-0.2.2.jar
ln -s cortado-ovt-stripped-0.2.2.jar cortado.jar
Puis créer un fichier applet.html:
<html>
<head>
<title>VOD</title>
</head>
<body>
<applet code="com.fluendo.player.Cortado.class"
archive="cortado.jar"
width="864" height="480">
<param name="url" value="http://192.168.29.222:8800/big_buck_bunny_480p_stereo.ogg"/>
<param name="local" value="false"/>
<param name="duration" value="232"/>
<param name="keepAspect" value="true"/>
<param name="video" value="true"/>
<param name="audio" value="true"/>
<param name="bufferSize" value="200"/>
<param name="userId" value="user"/>
<param name="password" value="test"/>
</applet>
</body>
</html>
Il ne reste plus qu'a tester l'applet en saisissant l'URL suivante:
http://<adresseipserveur>:8800/applet.html
Pour conclure, juste une remarque sur le choix coté client entre VLC plugin ou Applet Java Cortoda. Lors de mes tests, les deux solutions sont semblables en terme de consommation mémoire et CPU. Par contre, je trouve que le plugin VLC génère un image plus propre et une vidéo plus fluide.