Configuration pas à pas d’un serveur de streaming Flumotion

Date: 22/04/2010 | Catégories: Gstreamer,Open-source,Video,Web | Tags: ,,,,

Flumotion est un projet de serveur de streaming vidéo open-source distribué sous licence GPL. Développé en Python et basé sur les frameworks Twisted et GStreamer, il permet de diffuser sur un réseau des vidéos venant de sources lives (caméra, tv...) ou stockées dans des fichiers (on parle alors de VoD pour Video à la demande) en proposant un interface utilisateur de type Web (vous pouvez voir une démo ici).

Installation de Flumotion sous Ubuntu

A partir des dépôts (sous Ubuntu 9.04, 9.10 ou 10.04):

Ou alors en compilant depuis les sources.

Le serveur Flumotion qui se compose de deux daemon (flumotion-manager et flumotion-worker) devrait se lancer automatiquement à la fin de l'installation:

* Restarting Flumotion Streaming Server flumotion                       [ OK ]

Configuration de Flumotion

Nous allons configurer Flumotion pour faire de la vidéo à la demande (comme Youtube ou Daily Motion) . Pour celà il faut d'abord créer un répertoire sur le serveur dans lequel les vidéos seront mises à disposition (/home/flumotion/Videos dans mon cas).

Puis y copier quelques vidéos pour vos tests Par exemple j'ai récupéré sur le site HD-Trailer des bandes annonces HD 720p au format MOV/H.264/AAC que j'ai converti en utilisant les codecs libres Theora/Vorbis (le seul, l'unique / fin de troll).

L'interface graphique d'administration de Flumotion peut être lancé en lugne de commande (flumotion-admin) ou via le menu "Application > Son et vidéo > Flumotion Streamin server administration".

On commence par configurer l'administrateur pour se connecter sur le serveur actuellement lancé:

Puis rentre les informations sur le serveur (nom d'hôte et port, par défaut 7531):

Enfin on entre le login/password d'administration (par défaut user/test). Pour changer le login/password, il faut éditer les fichiers  /etc/flumotion/managers/default/planet.xml et /etc/flumotion/workers/default.xml puis relancer flumotion (# sudo /etc/init.d/flumotion restart).

La fenêtre suivante devrait apparaitre (sinon il faut aller cliquer dans le menu Controler > Lancer l'assistant):

On demande la création d'un serveur de vidéo à la demande (VoD):

On entre ensuite le répertoire ou se trouve les vidéos (/home/flumotion/Videos par exemple), le port sur lequel le serveur va répondre, un éventuel point de montage (si vous voulez que le serveur réponde à l'URL http://serveur:8800/pointdemontage) ainsi que l'emplacement du fichier de log.

Et enfin:

Test de Flumotion

Il ne reste plus qu'a pointer un navigateur Web sur l'adresse http://addresseserveur:8800/fichiervideo.ogg

Par exemple, si j'ouvre l'URL http://localhost:8800/shutterisland-240p.ogv avec un Firefox (compatible HTML5 et Theora) la video va s'afficher et il est possible d'utiliser les boutons de contrôle du playeur HTML5 (play / stop / pause / dépacement dans la vidéo).

J'ai testé sur un LAN jusqu'a des résolutions HD de 720p et même 1080p et la vidéo s'affiche rapidement (moins de 3 secondes entre l'affichage de la page HTML et le début du streaming) et de manière fluide (pas de coupure ou d'arrêt).

Si vous souhaitez heberger votre serveur Flumotion sur Internet, il faudra bien évidemment vérifier que le FAI autorise se genre de traffic de streaming dans le contrat et qu'il n'y a pas de  limite en terme de volume ni de goulet d'étranglement en terme de débit.

Conclusion

Il ne vous reste plus qu'a "web coder" la présentation autour des vidéos (avec du HTML/CSS /JS par exemple) et vous êtes fin prés pour concurrence Vimeo and co !

  • http://theclimber.fritalk.com theClimber

    Bête question peut-être, mais ce serveur flumotion change quoi par rapport au fait de placer simplement sa vidéo dans un répertoire de son serveur web … qu’est-ce que ça apporte en plus?
    Exemple: http://www.mon-serveur.com/ma-video.ogv

    Car si j’ai bien compris c’est finalement le navigateur qui fait le boulot de streaming … où est l’intervention de flumotion (à part le fait qu’il propose un serveur web … mais ça c’est assez trivial à faire en python).

    Ou alors j’ai pas tout compris
    Merci

  • http://www.econology.fr/ anne74

    Un grand merci pour cette article très détaillé.

  • http://blog.nicolargo.com NicoLargo

    @theClimber: il ne faut pas confondre serveur Web et serveur de streaming. Le navigateur ne fait pas “le boulot de streaming” mais affiche seulement la vidéo. Je te conseille la lecture de ce document (de Microsoft, comme quoi il font des choses pas mal quand ils ne font pas d’OS…):
    http://www.microsoft.com/windows/windowsmedia/compare/WebServVStreamServ.aspx
    ou alros ce billet:
    http://www.manuelangelini.info/2007/06/streaming-vs-progressive-downloadque.html

    A+

  • http://theclimber.fritalk.com theClimber

    Ok, merci Nico pour ces éclaircissements, je vois maintenant beaucoup plus précisément la différence … :-)
    By the way, merci pour ce tuto … du coup je me dis que je pourrais être intéressé pour mettre ça en place ^^ :-)

    A+

  • Guismo

    Merci Nico pour cet article.
    Est ce quelqu’un aurait essayé d’utiliser ce serveur de streaming pour rediffuser des flux TV depuis une freebox ?
    Est ce que ca serait possible ?

    Merci.

  • http://interog.free.fr/ z0rg>

    j’ai un soucis sous Karmic, j’ai une erreur avec python 2.6.
    d’après ce lien il y a un patch mais je ne vois pas comment l’appliquer :
    https://bugs.launchpad.net/ubuntu/+source/flumotion/+bug/350356

  • albert

    un petit soucis sous lucid, enfin que je viens d’installé
    le mot de passe n’est pas reconnu :/

  • Gaius

    Comment faire pour autoriser la diffusion vers le Web ? Dans l’assistant il est dit que par défaut la diffusion se fait que pour localhost… ?

  • JeyG

    @Nicolargo : Justement, lorsque l’on crée un flux à la demande sur flumotion, on n’a pas de vrai streaming mais du progressive download comme sur n’importe quel serveur HTTP. J’avoue avoir beaucoup de mal à saisir l’utilité…

  • http://blog.nicolargo.com NicoLargo

    @JeyG: c’est vrai si tu télécharges la vidéo directement avec l’URL (par exemple: ttp://serveur:8800/shutterisland-240p.ogv) dans ton navigateur Web. Tu as alors un débit réseau en pic (toute la bande passante libre sera utilisée) entre ton serveur et ton client, jusqu’à ce que la totalité de la vidéo soit chargée.

    Par contre si tu entre cette URL dans un player multimédia type VLC alors la bande passante consommée sera adapté au débit de la vidéo. Par exemple pour une vidéo OGG en 480p j’ai un débit moyen de 1.5 Mbps.

  • JeyG

    En passant par VLC le débit est aussi bien adapté avec apache, et donc je suppose n’importe quel serveur HTTP. Au final qu’on soit avec du flumotion ou de l’apache, on se retrouve avec un flux HTTP en progressive download sur Firefox ou en “vrai stream” sur VLC, c’est pour moi exactement la même chose.

    Je cherche donc toujours l’intérêt d’un tel serveur, mis à part sa plus grande accessibilité pour les novices qu’un serveur comme apache. Mais enfin quand on cherche a faire du streaming web, bien souvent on y a déjà touché…

  • Pingback: Dimanche lecture. | logive@machine:~$

  • Pingback: Mémo – Liens #1

  • http://cine-dvd.ch leglaude51

    Je signale que le site ci-dessus est en phase de test!
    Bon, ceci étant dit, il n’existe pas un panel comme chez Flumotion? Je trouve qu’il est vraiment génial et magnifique.
    Mise à part ça, étant un jeune hébergeur de sites web, je pense que pour Flumotion il lui faut un serveur dédié, si possible avec IP fixe. C’est du comfort pour l’utilisateur et pour l’admin.
    C’est ce que je vais faire ces prochains jours.
    Voilà, c’est tout pour ce soir.
    A bientôt

  • Nico83

    Bonjour je voudrais mettre un serveur de streaming et l’utiliser avec 3 boitiers multimédia (un pour chaque tv) afin que chacun puisse regarder le film qui lui plait. Est ce possible? et si oui quel boitier utiliser? Je n’ai rien trouve qui soit a moins de 100€
    Merci

    • http://cine-dvd.ch leglaude51

      Bonsoir,
      Alors là, je n’en sais rien du tout! Nous on utilise le serveur Streaming sur un serveur dédié pour internet!
      Quand aux boîtiers, je pense que c’est effectivement très cher!
      Mais posez votre question directement à NicoLargo, c’est un spécialiste.
      Bonne courage

  • Tony

    Merci beaucoup pour ce tuto très instructif et très complet.
    Petite question cependant. Est-il possible de l’installer sur un ubuntu server ?
    Tout se passe sans problème jusqu’à la configuration du serveur.
    En effet, sans interface graphique je ne peux pas accéder à la configuration. Y a t’il une alternative en ligne de commande ?
    Merci d’avance !

    • http://cine-dvd.ch leglaude51

      Il existe une façon de le configurer en mode texte.
      Mais le plus simple, c’est d’installer un interface graphique minimum sur le serveur. Ce que j’ai fait.Voici une commande:
      $ sudo apt-get install gdm gnome-core xfonts-base xserver-xorg
      Cela installe le minimum graphique.

      • Tony

        Merci beaucoup pour cette information je vais essayer ça !

    • arzmael

      Ou sinon, sur un ubuntu/debian Desktop, tu install flumotion-admin, et tu paramètre ton serveur flumotion depuis le réseau :
      sudo flumotion-admin

      Dans la fenêtre qui s’ouvre tu coche “connexion à un manager actif” et y a plus qu’à configurer l’IP de ton serveur et login/pass!

      Merci Nicolargo pour ce tuto, juste un blème qui reste dans le fil de Tony : flumotion-admin-text ne permet que de gérer les flux déjà lancés depuis flumotion-admin, ou bien je me goure et on peu tout aussi bien créer un flux ?

  • frederic

    bonjour,
    Nous travaillons sur un projet vod et souhaiterions étudier la possibilité de passer par une solution open source comme celle que vous présentez.
    Le front serait sous magento.
    Accepteriez vous de nous accompagner sur un tel projet ? Pourriez-vous nous contacter pour que nous en discutions plus avant.
    Merci.

  • geronimo

    bonjour,
    merci pour ton tuto, c’est clair & précis, je m’y suis retrouvé :)
    cependant j’ai une petite question, il est indispensable de passer par la case ‘graphique’ lors du paramétrage de fluxmotion? car j’ai une ubuntu server et pas d’interface graphique, je suis donc bien embêté :p

  • geronimo

    je me réponds à moi même quelques minutes après, c’est possible en lançant la commande “fluxmotion-admin-text”
    merci nico!

  • http://www.sylvaindeloux.com Sylvain

    Merci pour le tuto :)
    J’essaie de faire une installation entièrement en ligne de commande, et j’ai un peu de mal.
    Je suis sous Ubuntu 10.04 (Lucid) et j’ai installé la version fournie par apt.
    J’ai bien flumotion-manager et flumotion-worker qui tournent mais je n’arrive pas à me connecter à l’interface d’administration avec flumotion-admin-text et j’obtiens cette erreur :

    Traceback (most recent call last):
    File “/usr/bin/flumotion-admin-text”, line 54, in sys.exit(main(sys.argv))
    File “/usr/lib/flumotion/python/flumotion/admin/text/main.py”, line 104, in main _runInterface(options)
    File “/usr/lib/flumotion/python/flumotion/admin/text/main.py”, line 79, in _runInterface greeter = AdminTextGreeter(stdscr)
    File “/usr/lib/flumotion/python/flumotion/admin/text/greeter.py”, line 51, in __init__ curses.curs_set(0)
    _curses.error: curs_set() returned ERR

    De plus un nmap sur mon localhost m’indique que les ports 7531 et 8800 sont fermés. Quelqu’un a déjà eu cette erreur?

  • astux57

    Bonjour nicolargo,

    J’ai installé flumotion sur Fedora15 et l’installation c’est faite sans problèmes. Mais impossible de se connecter avec ou sans SSL avec user/test

    [root@localhost ~]# service flumotion start
    Starting flumotion (via systemctl): [ OK ]

    [root@localhost ~]# service flumotion status
    manager default not running
    worker default not running

    ps auxw | grep flumotion
    root 23775 0.0 0.0 111180 884 pts/0 S+ 14:28 0:00 grep –color=always flumotion

    [root@localhost ~]# tail -vf -n 200 /var/log/flumotion/service.log
    ==> /var/log/flumotion/service.log <==
    INFO [21845] servicer Sep 07 14:06:44 Starting manager default (flumotion/service/service.py:404)
    INFO [21845] servicer Sep 07 14:06:44 Loading planet /etc/flumotion/managers/default/planet.xml (flumotion/service/service.py:411)
    ERROR: could not create run dir directory /var/run/flumotion: [Errno 13] Permission denied: '/var/run/flumotion'
    WARN [21845] servicer Sep 07 14:06:45 manager default could not start (return value 1) (flumotion/service/service.py:454)
    INFO [21853] servicer Sep 07 14:06:45 Starting worker default (flumotion/service/service.py:464)
    INFO [21853] servicer Sep 07 14:06:45 Loading worker /etc/flumotion/workers/default.xml (flumotion/service/service.py:483)
    ERROR: could not create run dir directory /var/run/flumotion: [Errno 13] Permission denied: '/var/run/flumotion'
    WARN [21853] servicer Sep 07 14:06:46 worker default could not start (return value 1) (flumotion/service/service.py:503

    Je ne connait pas flumotion, est spécifique à UBUNTU ?
    Est il fonctionel sous Fedora ?

    Merci pour vos réponses.

  • und3r

    Bonjour,
    J’obtient cette erreur quand j’essaye de lancer l’admin sur flumotion.

    /usr/lib/pymodules/python2.6/gtk-2.0/gtk/__init__.py:57: GtkWarning: could not open display
    warnings.warn(str(e), _gtk.Warning)

  • celmar

    c’est surement le meme probleme que moi a savoir que tu es sur un ubuntu server et donc tu na pas d0interface graphique or tu lance flumotion en mode graphique.

    le plus ennuyant est qu’il n’y a pas l’air d’y avoir de tuto en mode console sur le net…

    si quelqu’un sait ou se trouve les fichier de configuration afin de le faire manuel avec nano…

    merci d’avance

  • Moi

    En console tu as flumotion-admin-text, mais il me laisse perplexe…
    La conf esst dans /etc/flumotion.

  • gilles

    bonjour au webmaster ,serai interessé pour plusieurs sources video ,style camera ip est que cette configuration peut convenir ,si cest le cas ,plus de detail par mail merci
    cordialement gilles

  • Mak

    quelqu’un peut-il m’aider
    g connection failed pour le couple user/test
    je ne sais pas ou se trouve le problem

  • Missinhoun

    bjr nico, pour mon memoire de licence jai choisir le streaming live avec flumotion … jai veux donc installé flumotion sur ubuntu 10.04 sans interface graphique , dans tes tuto ,pour lancer flumotion sur un serveur sans interface graphique il faut faire flumotion-admin-test ce que jai fais resultat:
    Main Menu

    Components:

    Prompt:
    Available Commands: startall stopall quit

    jai l’impression que tout marche mais je veux que tu m’aides pour la suite des config comment faire nico aides moi

    • patrick

      y a personne pour m’aider svp ….

  • Missinhoun

    comment personnaliser l’interface web sur laquelle s’affiche la diffusion live avec le serveur flumotion

  • http://www.lassipourlesnuls.fr mmayen

    Geek

    • http://www.lassipourlesnuls.fr mmayen

      J’ai bien réussi à installer la bête, mais je ne vois comment on fait pour obtenir le joli portail avec les différentes vidéos disponible.

      Faut-il le coder soi-même ?

  • Pingback: Zapping de la semaine #17 • SynerGeek.fr

  • Pingback: web | Pearltrees

  • kati

    Bonjour ,je viens d’installer Flumotion sur Ubuntu , ma question est : est ce qu’il y’a moyen de contrôler ou modifier les paramètres de l’envoie de vidéo (contrôle de l’envoie des trames , de la bande passante etc …) ? merci d’avance

  • Be-manager.fr

    Bonjour, et merci pour ce tuto. Voulant me lancer dans la diffusion vidéo, y-a-t’il un tableau récapitulant les ressources nécessaires d’un serveur en fonction du trafic. Car je ne sais quel serveur prendre pour des essais, et de la petite diffusion , merci