Flumotion, le streaming libre

Publié le 12 juin 2008 par Nicolargo

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 Fluymotion 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 pygtk
# 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
# ./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 pw.tmp user
New password:
Re-type new password:
Adding password for user user
# cat pw.tmp
user:oIil5E5qnB4bM
# rm pw.tmp
# 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…