Flumotion, le streaming libre

Date: 12/06/2008 | Catégories: Open-source | Tags: ,

Flumotion est un serveur de streaming vidéo et audio libre sous licence GPL. Il a comme principal avantage par rapport à la concurrence d'utiliser le gstreamer, ce qui lui permet d'être multiformats (Ogg, Vorbis, Thetra, MP3 mais aussi Windows Media Player ou Flash). On peut voir une démonstration des capacité de Flumotion sur leur site de démonstration.

On peut "streamer" (diffuser sur le réseau) depuis une source qui peut être une webcam, une caméra vidéo ou Firewire (LIVE) ou bien un fichier (VOD).

Dans ce billet, nous allons détailler l'installation et configurer Flumotion sur un OS GNU/Linux (Ubuntu dans mon cas).

Installation de Flumotion sous Ubuntu

Le développement de ce serveur est fait en Python. Il faut donc, préhalablement à la compilation installer les packages suivants:

sudo apt-get install python-dev
sudo apt-get install python-kiwi
sudo apt-get install python-gtk2
sudo apt-get install python-gtk2-dev
sudo apt-get install python-twisted
sudo apt-get install python-imaging

Ensuite on passe "à la classique" phase de compilation de Flumotion (la compilation se fait à partir de la version 0.5.2 de Flumotion, je vous laisse voir si il n'y a pas une nouvelle version):

cd /usr/src
sudo wget http://www.flumotion.net/src/flumotion/flumotion-0.5.2.tar.bz2
sudo bzip2 -d flumotion-0.5.2.tar.bz2
sudo tar xvf flumotion-0.5.2.tar
./configure
make
sudo make install

Si vous avez des problèmes de compilation de Flumotion, je vous coseille de jeter un coups d'oeil à la mailing list.

Premier lancement de Flumotion

Nous allons d'abord créer un répertoire ou nous stockerons l'ensemble des fichiers de configuration:

sudo mkdir /usr/local/flumotion
cd /usr/local/flumotion
sudo cp /usr/src/flumotion-0.5.2/conf/managers/default/planet.xml manager.xml

Le fichier par défaut définie un serveur nommé "planet" avec un couple login/password: "user/test".

Si vous vouler changer le login/password par défaut, il faut utiliser la ligne de commande suivante pour générer ce couple:

htpasswd -c /tmp/pw.tmp user
New password:
Re-type new password:
Adding password for user user

cat /tmp/pw.tmp
user:oIil5E5qnB4bM

rm /tmp/pw.tmp

sudo vi /usr/local/flumotion/manager.xml
Remplacer la ligne:
user:PSfNpHTkpTx1M
par:
user:oIil5E5qnB4bM

La première chose à faire est de lancer le Manager avec les commandes suivantes:

flumotion-manager -T tcp -d 3 /usr/local/flumotion/manager.xml

PS: le mode SSL (-T ssl, mode par défaut) ne marche pas sur ma configuration Ubuntu, je rencontre l'erreur flumotion.common.errors.NoSSLError...

On lance ensuite le Worker:

flumotion-worker -T tcp -d 3 -u user -p test

Et enfin (qui a dit ouf ?) l'interface d'administration:

flumotion-admin

Il faut alors sélectionner les options suivantes dans l'assistant qui va s'afficher:

  • Connexion à un contremaître actif
  • Localhost / Port 8642 (sans SSL)
  • Username: user
  • Password: test

Au prochain démarrage de flumotion-admin, il suffira de sélectionner ce contremaître prédéfini.

Pour faire un premier test de streaming, vous pouvez suivre le deuxième assistant (cliquez ici si vous voulez voir les screenshots correspondants):

Video: Test video source (c'est en fait une mire)
Audio: Test audio source (c'est un bip...)

Les caractéristiques de la vidéo (résolution, fps...)

Les textes et/ou images à incruster dans la vidéo (overlay)

Les caractéristiques de l'audio (fréquence, volume...)

Les codecs (conteneur, vidéo et audio): Ogg/theora/vorbis

Le débit des codecs video (Theora) et audio (vorbis)

et enfin le protocole réseau (HTTP) avec notamment le port (8800) et le point de montage (/)

Ensuite il suffit d'ouvrir un navigateur Web et de saisir l'adresse: http://localhost:8800/ (ou http://adresseipduserveur/) pour voir apparaître la mire. J'ai testé positivement depuis Firefox, Safari... par contre je n'ai pas essayé depuis IE.

Si c'est le cas c'est que votre installation marche !

Automatiser le lancement de Flumotion au démarrage de l'OS

Flumotion n'est pas livré avec un script de démarrage (rc), en voici donc un basique à mettre dans votre répertoire /etc/init.d avec les droits d'accès qui vont bien:

#! /bin/sh -e
#
# Start the Flumotion Manager and Worker
#
# Author: Nicolas Hennion <nicolas-pasdespam-@nicolargo.com>
#
# Distributed under GPL licence
#
set -e

PATH=/bin:/usr/bin:/sbin:/usr/sbin

MANAGER=/usr/local/bin/flumotion-manager
MANAGEROPT="-T tcp /usr/local/flumotion/manager.xml"
MANAGERLOG=/var/log/flumotion-manager

WORKER=/usr/local/bin/flumotion-worker
WORKEROPT="-T tcp -u user -p test"
WORKERLOG=/var/log/flumotion-worker

test -x $MANAGER || exit 0
test -x $WORKER || exit 0

. /lib/lsb/init-functions

case "$1" in
start)
log_daemon_msg "Starting Flumotion Manager" "flumotion-manager"
start_daemon $MANAGER $MANAGEROPT > $MANAGERLOG &
log_end_msg $?
log_daemon_msg "Starting Flumotion Worker" "flumotion-worker"
start_daemon $WORKER $WORKEROPT > $WORKERLOG &
log_end_msg $?
;;
stop)
WORKERPID=`echo $(ps ax | grep "flumotion-worker" | awk '{ print $1 }' | head -n 1)`
log_daemon_msg "Stopping Flumotion Worker" "flumotion-worker"
kill $WORKERPID
log_end_msg $?
MANAGERPID=`echo $(ps ax | grep "flumotion-manager" | awk '{ print $1 }' | head -n 1)`
log_daemon_msg "Stopping Flumotion Manager" "flumotion-manager"
kill $MANAGERPID
log_end_msg $?
;;
force-reload|restart)
$0 stop
$0 start
;;
*)
echo "Usage: /etc/init.d/flumotion {start|stop|restart|force-reload}"
exit 1
;;
esac

exit 0

La VOD...

La VOD (Video à la demande), est également disponible en standard dans Flumotion. Vous pouvez trouver un exemple dans le fichier /usr/src/flumotion-0.5.2/conf/examples/ondemand.xml que l'on peut charger à partir de flumotion-admin. Ce fichier de configuration permet de partager les fichiers vidéos/audios se trouvant dans le répertoire /tmp (format .ogg).

Par exemple: http://localhost:8800/monfichier.ogg

J'ai fait des tests avec des gros fichiers HDTV (sur réseau local)... et cela marche nickel !

Et ensuite, le live...

J'ai testé le serveur avec ma Webcam logitech. Cette dernière est reconnue mais pas supportée par Flumotion, idem avec ma carte Osprey (connectée à une caméra anologique)...

Bref un produit prometteur, à suivre "à la culotte" dans ses prochaines versions...

Promis, un prochain billet sur la configuration avancée de la VOD...

Partager ce billet