Dans la lignée de mes billets sur l’auto-hébergement, j’ai regardé également ce que je pouvais faire pour monter un serveur de streaming vidéo. L’idée de base est que notre appareil photo peut faire des vidéos, mais elles se retrouvent du coup noyées dans les dossiers photos. Une recherche permet de toutes les retrouver, mais je voulais centraliser le tout pour faire un équivalent youtube avec nos vidéos persos afin qu’elles soient également accessible depuis n’importe quelle machine à la maison, voire de l’extérieur.

Déjà, si vous avez raté les billets précédents, voici les liens qui récapitulent le choix et l’installation de mon serveur domestique, l’installation et le paramétrage d’ownCloud pour une synchronisation et un partage de photos ainsi que l’installation et le paramétrage de Subsonic pour du streaming musical.

Installation et paramétrage de serveur de streaming vidéo

Alors je sais que Subsonic permet le streaming vidéo, mais je cherchais une solution dédiée pour ne pas mélanger les choux et les carottes.
flumotion serveur streaming videoJ’ai donc fait quelques recherches, et je suis tombé sur une solution avec Flumotion, un serveur de streaming open source. L’installation et le paramétrage sont très simples, je vous renvois notamment sur le site Elliptips où tout est très bien expliqué, avec de nombreuses captures d’écrans. Pour résumer brièvement, il vous faut :

  • installer Flumotion (un apt-get et c’est bon). Votre serveur est alors accessible à l’adresse http://ip:8800
  • si ça n’est pas fait, encoder vos vidéos (vous avez une solution dans le tuto via webm, le rendu est très bon, pour un poids convenable, par contre faudra être patient sur la phase d’encodage si vous avez de nombreuses vidéos).
  • lancer le serveur de streaming vidéo qui va aller chercher dans un dossier les vidéos.

A partir de là, vous aurez des url pour chacune des vidéos, un copier coller de l’url que vous donne Flumotion vers un browser, et votre vidéo se lit.

C’est une solution qui me suffit actuellement, même si j’aurai préféré quelque chose de plus automatisé. Il faudra que je regarde à l’occasion si Arista peut s’automatiser (par exemple écouter un dossier et s’il voit un fichier l’encoder pour le déposer dans mon répertoire Flumotion) ou si une autre solution logicielle permet de le faire. J’imagine en tout cas que cela existe.

A noter que, cerise sur le gâteau, Flumotion permet également de gérer un flux en direct live ce qui est très intéressant si vous avez un site et organisez de temps en temps des évènements que vous aimeriez diffuser sur le web. Je n’ai pas encore testé cette partie là, mais vous pouvez trouver des tutos et retour d’expérience sur le net, cela fonctionne plutôt bien (après il faudra surtout que votre serveur accepte la charge en fonction du nombre de web-spectateurs attendus).

Création d’un mini-site pour lister les fichiers en streaming vidéo

Par contre, je voulais enrober le tout dans un mini site, histoire de ne pas avoir à chercher tout le temps les url des vidéos, et pouvoir facilement de n’importe quel poste de mon réseau lire les vidéos.
Ce qu’il faut savoir, c’est que si vous mettez un fichier html dans le dossier où se trouvent vos vidéos, vous y aurez accès en tapant l’url http://ip:8800/index.html.
Mais le mieux est encore de créer un site dans /var/www, dans lequel vous pourrez créer votre site comme d’habitude, en utilisant les url des vidéos.

Pistes d’amélioration

Plusieurs choses peuvent être améliorées dans la solution que j’ai mise en place pour l’instant :

  • Encodage automatique des vidéos.
  • Création automatique des vignettes, cela sera plus sympa d’avoir des images et pas que des liens.
  • Ouverture de la vidéo au travers de la balise video html5.
  • Ajout d’un contrôle d’accès via htaccess lorsque je souhaiterai ouvrir la page en question à l’extérieur.

Je m’y pencherai sans doute incessamment, et je vous donnerai des informations complémentaires sur cette page. De votre côté, si vous avez des retours d’expérience, notamment sur l’automatisation et la création d’un site pour Flumotion, n’hésitez pas à en faire part dans les commentaires.

Mise à jour du 22/05/2013 : Améliorations réalisées

  • Pour la génération des vignettes, j’ai utilisé ffmpeg via un script
#! /bin/bash
videowaitdir=/dossierDesVideos/
capturedir=/dossierDesVignettes/

numberscreens=1

#--- Traitement des vidéos

for video in `ls $videowaitdir`; do
 if [ -f $videowaitdir$video ]; then
 ffmpeg -i $videowaitdir$video -vframes 1 -s 110*62 $capturedir$video.jpg
 fi
done
  • Pour le lecteur html5, j’ai intégré un lecteur, et via jQuery je change la source de la vidéo au clic sur un lien.
  • Pour les contrôle d’accès, j’ai commencé par ajouter un htaccess dans le dossier du site. Mais si cela contrôlait bien l’accès à la page listant les vidéos, cela permettait tout de même avec le lien des vidéos de pouvoir les lire. N’ayant pas réussi à contrôler l’accès au port 8800 par un virtualhost (c’est surement possible mais je n’ai pas réussi), je suis passé par un reverse proxy via un virtualhost, comme pour Subsonic qui permet de rediriger pour Flumotion le port 80 vers le port 8800. Ainsi je n’ai pas besoin d’ouvrir le port 8800 sur le routeur. Et dans ce virtualhost, j’ai ajouté un contrôle d’accès par htpasswd.