Installation et test de Flumotion 0.8

Date: 5/11/2010 | Catégories: Gstreamer,Open-source,Planet-libre,Video,Web | Tags: ,,,,

Flumotion est un serveur de streaming open-source sous licence GPL. Il permet de diffuser à des utilisateurs ne disposant que d'un simple navigateur Web des contenus audio et vidéo.

La dernière version disponible (la 0.8) apporte une fonctionnalité que je trouve intéressante de tester: le support du conteneur WebM et du codec vidéo VP8 que gOOgle à libéré il y a quelques mois.

Nous allons voir dans ce billet comment installer et configurer Flumotion 0.8 sur une distribution GNU/Linux Ubuntu Desktop 10.10.

Compilation de Flumotion 0.8

Récupération des sources:

mkdir ~/src

cd ~/src

wget http://www.flumotion.net//src/flumotion/flumotion-0.8.0.tar.gz

tar zxvf flumotion-0.8.0.tar.gz

cd ~/src/flumotion-0.8.0

Installation des librairies (en plus de mon installation standard d'Ubuntu), j'ai du ajouter:

sudo aptitude install python-all-dev python-kiwi

Configuration et compilation:

./configure

make

sudo make install

sudo mkdir /usr/local/etc/flumotion/

sudo cp conf/default.pem /usr/local/etc/flumotion/

Configuration de Flumotion 0.8

Le serveur Flumotion utilise deux processus: flumotion-manager et flumotion-worker.

Le premier processus (flumotion-manager) à besoin d'un fichier de configuration nommé planet.xml. Je vous propose donc de partir du fichier de configuration fourni avec les sources et de le copier dans un répertoire de votre machine.

mkdir ~/flumotion

mkdir ~/flumotion/conf

cp ~/src/flumotion-0.8.0/conf/managers/default/planet.xml ~/flumotion/conf/

Puis de l'éditer:

gedit ~/flumotion/conf/planet.xml

La ligne vraiment intéressante à modifier est celle-ci:

user:PSfNpHTkpTx1M

Elle défini l'utilisateur user avec le mot de passe par défaut test (encodé).

Remarque: Pour générer un nouveau couple login/password, le plus simple est de ce rendre sur ce site et de remplacer le résultat dans le fichier ~/flumotion/conf/planet.xml.

On lance ainsi le processus avec la commande suivante:

flumotion-manager ~/flumotion/conf/planet.xml &

On vérifie que le processus est bien lancé:

ps auxw | grep flumotion

labo    16352 10.4  0.3  18300 12724 pts/3    S    15:41   0:00 /usr/bin/python /usr/local/bin/flumotion-manager /home/labo/flumotion/conf/planet.xml

Le deuxième processus (flumotion-worker) n'a pas besoin d'un fichier de configuration. Il faut juste passer en paramètre l'utilisateur user avec le mot de passe test (clair) à utiliser pour se connecter au processus flumotion-manager:

flumotion-worker -v -u user -p test

Utilisation de Flumotion 0.8

On va utiliser le programme flumotion-admin pour administrer notre serveur Flumotion:

flumotion-admin &

La fenêtre suivante devrait s'afficher :

Remarque: si vous installez Flumotion sur un serveur sans interface graphique, il faudra utiliser flumotion-admin-text en lieu et place de flumotion-admin.

On clique sur Suivant:

On clique sur Suivant puis on entre le login user et le password test:

Après avoir cliqué sur Suivant, un assistant de configuration (wizard) va s'afficher:

On arrête de cliquer quelques instant pour voir que Flumotion propose deux scénarios:

  • configuration d'un streaming "live" à partir d'une camera / webcam
  • configuration d'un streaming "on demand" à partir d'un fichier

Configuration d'un "streaming live"

Comme un des objectifs de ce billet est de tester la diffusion live en WebM/VP8, on choisi la première option dans la fenêtre suivante:

Si vous n'avez pas de caméra digitale ou de Webcam sur votre machine, vous pouvez utiliser le "test video producer"  qui est en fait une mire de test (je rappelle de Flumotion se base sur GStreamer et cette mire est en fait généré par le plugin videotestsrc).

On configure la mire:

Il est ensuite possible de configurer un texte ou un logo qui sera affiché en overlay sur la vidéo:

On passe ensuite à la configuration de la "mire audio":

Puis on défini les paramètres du streaming: conteneur, codec vidéo et codec audio:

Au niveau du codec vidéo VP8, on peut soit définir un débit fixe (CBR) ou bien une qualité fixe (VBR). Pour du streaming live, je conseille plutôt du CBR, par exemple à 400 Kbps:

De même pour le codec audio Vorbis:

On défini ensuite si l'on veut streamer sur HTTP (seule option disponible pour l'instant) et/ou sauver le résultat du streaming dans un fichier local sur le serveur (cette option peut être intéressante pour relire la vidéo de manière offline).

Enfin, on défini le point de montage (URL) ainsi que le port TCP à partir duquel le serveur sera accessible. Il est également possible de limiter le streaming (nombre d'utilisateur max, bande passante max...):

On peut également préciser la licence de diffusion de votre streaming:

Et voilà le travail, votre serveur de streaming est opérationnel:

Pour le tester il suffit de ccopier l'URL de l'onglet Statistiques dans (attention pour voir la vidéo depuis une autre machine, il faut remplacer le nom d'hôte avant le :8800 par l'adresse IP de la machine):

  • un navigateur Web compatible WebM/VP8: Chromium
  • un lecteur multimedia compatible WebM/VP8: Totem sous Ubuntu

La vidéo devrait s'afficher:

Pour sauvegarder cette configuration de streaming, il suffit de cliquer sur Connexion > Exporter la connexion puis de sauvegarder le fichier au format XML (Connexion > Importer pour la réimporter dans Flumotion).

Les sources vidéos possibles pour un streaming live sont:

  • la mire (pour les tests)
  • webcam (j'ai rencontré un problème avec la mienne, voir le dernier chapitre de ce billet)
  • TV card
  • Loop video (prend en entrée un fichier OGG et génère une boucle infini à partir de cette vidéo)
  • Firewire

Configuration d'un streaming on-demand (VoD)

Avant de tester la vidéo à la demande, il faut disposer de fichiers vidéos encodés au format WebM (pour la VoD, la version communautaire de Flumotion supporte également le format OGG). Pour produire de tel fichier, je vous conseille la lecture de ce billet. Une fois les vidéos localisées dans un répertoire de votre machine faisant tourner le serveur Flumotion, il suffit de faire appel à l'assistant via le menu Contrôler > Lancer l'assistant de flumotion-admin.

Il faut seulement définir le répertoire ou sont stockées les vidéos:

Puis identifier la liste des vidéos disponibles et leurs URLs dans l'onglet Browser. Là encore, il faut adapter l'adresse en remplaçant le nom logique par l'adresse IP de votre machine Flumotion si vous voulez consulter ces vidéos sur d'autres machines du réseau.

Enfin, vous pouvez ouvrir cette URL soit dans un navigateur Web qui prend en charge WebM (par exemple Chromium):

Soit dans votre lecteur multimédia par défaut (par exemple Totem, ouvrir en utilisant CTRL+L):

Pour une intégration plus "web design compliant" de vos vidéos dans des pages Web (plutôt qu'un bête affichage en full-screen), il faut utiliser le tag HTML5 <video> dont j'ai donné plusieurs syntaxe d'utilisation dans ce billet.

Problèmes rencontrés...

Lors de mes tests, j'ai rencontré un problème lors de la détection de ma WebCam Logitech QuickCam Pro 4000 (qui marche très bien par ailleurs). La détection des informations n'aboutie pas...

Un autre problème est l'ouverture des fichiers VoD à partir de VLC qui supporte pourtant le format WebM. Le son passe correctement mais la vidéo reste désespérément noire...

  • http://cine-dvd.ch leglaude51

    Salut NicoLargo,
    J’ai eu un problème de carte de réseau hier soir sur mon serveur de test, j’ai donc changé la carte et refait à neuf le serveur.
    J’ai installé Ubuntu 10.10 Serveur avec interface minimum.
    J’ai réinstallé flumotion 0.8.0, mais il bloque toujours lorsque je lance ‘flumotion-admin &’.
    J’ai vérifié que le processus était bien lancé, et tout était OK!
    Une petite idée?
    Merci

  • naseeb

    je suis ubuntu 10.10 avec flumotion 0.8 lors de la configuration d’une VOD si je garde le répertoire par defaut /tmp/ , tout fonctionne bien parcontre si je change de répertoire par exemple /home/video/ j’ai une erreur :

    File /root/.flumotion/scenario-steps/0613b974b48d620b96a81414051bfc3c/flumotion/scenario/steps/ondemandstep.py, line 243, in response
    self._verify()
    AttributeError: ‘OnDemandStep’ object has no attribute ‘_verify’

    j’ai testé avec chmod 777 et le répertoire appartenant a root:root et flumotion:flumotion sans succès.

    vous pouvez m’aidez svp ?

    • naseeb

      Edit : Il faut entré l’adresse manuellement, sans passé par le bouton parcourir…

    • http://pages42.wordpress.com Guap

      Personnellement l’erreur est apparue aussi mais le service a fonctionné correctement …

  • http://cine-dvd.ch leglaude51

    salut NicoLargo,

    J’ai une petite question toute bête…
    Peut-on avoir plusieurs répertoires avec les vidéos dans Flumotion?
    En effet, mon ciné-club à des répertoires comme Aventure, Comédie, Policier, etc… ou dois-je tout mettre dans un seul répertoire?

    Entre-nous, encore merci pour Handbrake, car je peux convertir mes dvd en HD Mp4, c’est génial.

    Salutations de la Suisse

    LG

    • http://www.nicolargo.com NicoLargo

      Bonsoir,

      je n’ai jamais essayé mais je pense que c’est jouable en travaillant sur des ports TCP différents. Mais la solution la plus propre pour classer tes films est peut être d’utiliser les tags interne aux conteneurs MPEG-4 (MP4 ou AVI). Il doit être possible de spécifier le “genre” du film puis de faire un script (par exemple en PHP) qui filtre sur ce tag.

      • http://cine-dvd.ch leglaude51

        Merci de ta réponse. Et je ne sais même pas comment je n’y ai pas pensé. Les tags sur les films.
        Je vais m’y mettre de suite et mettre les tags sur les films.
        Je verrai après pour le script PHP.

        Merci, tu es toujours de bons conseils.

        A bientôt.

        LG

  • http://cine-dvd.ch leglaude51

    Bon, ben moi, j’ai réinstallé mon serveur complet,avec Ubuntu 10.04LTS Server, mais Flumotion refuse catégoriquement de se réinstaller! Même le 6.1.1 livré avec Ubuntu, ne fonctionne pas! J’ai pourtant installé le minimum graphique sur le serveur, mais rien! Déjà la première fois c’était la galère, mais il avait fini par fonctionner, mais maintenant plus rien! Zéro…
    Et je ne sais pas de quoi cela provient. J’ai installé toutes les dépendances à Flumotion, mais il refuse.
    Si quelqu’un à une astuce… Je prends.

    • http://www.nicolargo.com NicoLargo

      SAlut,

      tu devrais regarder du coté de la commande flumotion-admin-text qui permet de configurer en mode texte ton serveur Flumotion (donc pas besoin d’interface graphique…).

      A+

  • fabien

    Bonjour
    Je début avec flumotion et j’ai une erreur pour laquelle j’ai besoin de votre aide car je ne trouve rien sur internet.
    Lorsque je veux lancer flumotion-manager
    J’ai une erreur:
    ImportError: No module named ‘flumotion.manager.main.main’
    Je ne sais pas quoi faire, un peu d’aide s’il vous plaît

  • teddy

    bonjour

    j’ai voulu installer flumotion dur debian mais des que je fais la commande flumotion-worker -v -u user -p test j’ai sa qui apparait et puis plus rien

    root@stream:/usr/local/flumotion# INFO [ 2483] jelly Jun 16 11:36:43 GnomeVFS registered (flumotion/common/vfsgnome.py:126)
    INFO [ 2483] jelly Jun 16 11:36:44 GIO registered (flumotion/common/vfsgio.py:141)
    INFO [ 2483] jelly Jun 16 11:36:44 VFS registered (flumotion/common/vfs.py:96)
    INFO [ 2483] worker Jun 16 11:36:44 Starting worker ‘localhost’ (flumotion/common/process.py:54)
    INFO [ 2483] worker Jun 16 11:36:44 Started worker ‘localhost’ (flumotion/common/process.py:59)
    INFO [ 2483] worker Jun 16 11:36:44 Connecting to manager user@localhost:7531 using SSL (flumotion/worker/main.py:269)
    INFO [ 2483] worker Jun 16 11:36:44 Logged in to manager (flumotion/worker/medium.py:87)

    la première fois j’ai eu un message avec acces denied mais depuis je ne l’ai plus. Si je fais la commande flumotion-admin-text & rien ne se passe
    Est ce que quelq’un a la solution a ce problème?

    • teddy

      j’ai réglé mon problème mais je souhaite configurer flumotion sans interface et il y a pas toutes les options que dans votre tuto avec interface ? est-ce normal?

  • alcor

    Bonjour et merci pour ce tuto. J’ai installé la version 0.10 du mois d’octobre 2011 et il apparait dans le dépot PPA d’autres paquets aux noms significatifs … mais une fois installés on ne sait pas trop s’ils sont actifs ou s’ils remplissent ce qu’on s’est imaginé : flumotion-flash, flumotion-flashmedia, flumotion-transcoder, etc. Savez-vous où il est possible d’avoir plus d’info à leurs sujet ?

    D’autre part, flumotion en VOD ne me semble pas beaucoup plus utile qu’un serveur http classique ou alors seulement s’il est couplé à un client intelligent. Mais existe-t-il un client Web (HTML5 si possible, Flash, etc) capable de gérer proprement le contrôle du flux (chargement en respect du débit du fichier lu, déplacement dans la vidéo hors buffer, etc) ?

  • seseb

    bonsoir,
    j’ai installé flumotion sur une version ubuntu serveur.
    je demarre mon ordi par wakeonlan.
    je ne comprends pas ce que je dois faire pour que quand mon ordi demarre flumotion soit lancé, avec aussitot les videos en lignes. C’est de la vod que je veux.
    j’ai modifier un script trouvé sur un forum qui me créer une page html avec la liste des videos de mon dossier videos. je lance la lecture des videos en cliquant sur le lien de ma page html.
    car en lancant flumotion via une interface graphique tres minial cela fonctionne.
    mais je ne souhaiterai ne pas avoir a passer par une interface graphique.

  • patrickmiss

    Salut NicoLargo,
    j’ai installé flumotion sur une version ubuntu avec succes,mais je ne sais pas comment faire pour avoir acces a mes videos via une autre machines…jai copier @ ip et du poste sur lequel jai installé flumotion auquelle jai ajouté 8800/ dans le navigateur d’une autre machine,je recoit cette erreur:404- No Such Ressource
    aidez-moi svp

    • patrickmiss

      c’est bon les gars fallait just mobifier le nom des fichiers videos…

  • Johnny

    Salut peux tu proposer un exemple avec une source RTSP venant d’une caméra IP par exemple?