Installer un module de pseudo-streaming H264 (mp4) sur un serveur CentOS / Plesk 10

Le pseudo-streaming http permet d’une part d’économiser de la bande passante et d’autre part cela permet à vos visiteur de démarrer une vidéo au milieu sans charger le début du fichier…

Je ne suis pas un Linuxien diplômé, loin de là, mais il faut bien que je m’occupe de mes serveurs.

Alors puisque je viens d’ajouter un module de pseudo-streaming à mon serveur, je vous fais profiter de la manip:

Systeme : CentOS 64bit / Panel : Plesk 10

Tout d’abord installez les librairies de développement httpd depuis un shell (loggué en root de préférence):

sudo yum install httpd-devel
sudo yum install httpd mod_ssl

Ensuite, téléchargez la dernière version du module 2.2.7 (au jour ou j’écris ces lignes):

wget http://h264.code-shop.com/download/apache_mod_h264_streaming-2.2.7.tar.gz

Décompressez l’archive, puis allez dans le dossier et compilez:

tar -xvzf apache_mod_h264_streaming-2.2.7.tar.gz
cd ./mod_h264_streaming-2.2.7
./configure
make
make install

Si la compilation est OK, il faudra ajouter 2 lignes de directives dans votre fichier de configuration apache: httpd.conf
Ce fichier peut se trouver à différents endroits dans votre système. Généralement /etc/apache/httpd.conf , mais sur un système CentOS avec plesk, il se trouve ici:
/etc/httpd/conf/httpd.conf

Pour éditer ce fichier, utiliser l’éditeur nano avec cette commande:
nano /etc/httpd/conf/httpd.conf

Descendez dans le fichier jusqu’à la série de commandes

....
LoadModule cache_module modules/mod_cache.so
LoadModule suexec_module modules/mod_suexec.so
LoadModule disk_cache_module modules/mod_disk_cache.so
LoadModule file_cache_module modules/mod_file_cache.so
LoadModule mem_cache_module modules/mod_mem_cache.so
LoadModule cgi_module modules/mod_cgi.so
LoadModule version_module modules/mod_version.so
...

et ajoutez les 2 lignes suivantes juste après:

Loadmodule h264_streaming_module modules/mod_h264_streaming.so
AddHandler h264-streaming.extensions .mp4

Enregistrez le fichier (ctrl-o , Enter)

Et pour finir, redémarrez le service HTTP Apache avec la commande:
sudo /etc/init.d/httpd restart

Si vous avez une erreur au redémarrage du service apache c’est qu’il y a une erreur dans les directives que vous avez ajoutez au fichier httpd.conf, ou que la compilation du module de streaming à générée une erreur.

Plus d’infos sur l’installation sur le site Code-Shop.

Pour ce qui est de l’utilisation de ce module de pseudo streaming, cela dépend du player vidéo que vous utilisez sur votre site web.

  1. as tu testé toi meme car tout les tutp qui son donné son bidon et ne marche pas donc je vais tester en esperan que cela ne soi pas la béte copie de code shop sans aucun teste je rediré koi

    Répondre

    1. Carlos Matias 15/05/2012 at 07:33

      Bonjour.
      Ce n’est pas une « bête copie » provenant de codeshop.
      J’ai fais une install sur un serveur ovh en CentOS/plesk10, et j’ai noté ce que j’ai fait pour que ça marche, et ensuite j’ai publié cet article qui est plus pour mémoire personnel que pour les lecteurs mais je me doutais doutais bien que ça servirai un jour à quelqu’un.
      Dis-moi si ça fonctionne pour toi.
      salut!

      Répondre

  2. ben je fait les teste en chez moi et je galére deja a installer centos car sur ubuntu pas myen sa ne fonctionne pas le fichier htppd.config ne fonctionne pas je sais plus ou se trouve le vrai pour les module car ce n’est pas dans etc/apache2/celui ci reste vide par defaut et donc je ne sais plus c le quel dossier du coup des que je v reussir a installer ceci je te confirme

    Répondre

  3. mon souci avec centos et rien d’autre que un souci de pilote donc je devrai voire cela se soir ou demain mais voila si tu ve ecrit moi sur mon email je te repondrais on pourras plus par en priver

    Répondre

  4. alors je préfére bien sur bossé sur ubuntu plus solide je trouve et donc j’ai enfin reussi et cela marche trés bien

    Répondre

  5. Bonjour,
    quelle version de centos utilises-tu?
    Centos 5.4 ou 6.2 et en 64bits?
    codeshop préconise l’utilisation de la version 2.2.5 du module h264 pour centos. Moi la 2.2.7 ne marche pas à l’execution de la commande ./configure sur un centos 6.2 et plesk 11
    merci pour cette précision.

    Répondre

    1. Carlos Matias 12/09/2012 at 16:15

      Bonjour. Je suis sur Centos 5.x en 64bits.
      Mais qu’elle est l’erreur affiché par la commande ./configure ?
      En général c’est qu’il manque un composant dans le system, comme le compilateur GCC, ou le maker (MAKE).
      il suffit de les installer avec la commande « sudo yum install gcc », ou « sudo yum install make ».
      Tenez moi au courant.
      Salut.
      Carlos

      Répondre

  6. install sans encombres après l’ajout du compilateur et du maker comme tu l’indiquais. Je débute encore plus que toi sous linux tu vois ;). Donc sous Centos 6.3 64bits avec plesk 11, impec.
    J’ai testé aussi sous centos 5.7 et plesk 9.4.3 et ça fonctionne aussi. Donc tout bon.
    Par contre le plesk 10, j’ai abandonné c’est une vraie usine à gaz, ca deconne de partout, impossible d’avoir un système stable sur une petite config alors que plesk 11 tourne parfaitement. Bref je deconseil fortement. Vais enfin pouvoir pseudo-streamer en http!
    merci

    Répondre

    1. Carlos Matias 13/09/2012 at 08:35

      Salut!
      Merci d’être venus donner tes conclusions.
      Et ça fait toujours plaisir d’avoir de bonnes nouvelles !
      A+

      Répondre

  7. Bon finalement très déçu par ce module dont j’attendais beaucoup. Trop sans doute.
    J’étais tellement content du fonctionnement que la désillusion fut encore plus lourde.
    En effet, sur des vidéos inférieurs à 12 ou 15mn, pas de problèmes, c’est vraiment parfait. Mais moi j’avais que des vidéos de 45mn, des reportages. Du coup, lorsqu’on se ballade dans la vidéo, il faut attendre 10 secondes à chaque fois.
    J’ai lu cet inconvénient que ce matin sur le site de longtailvideo.
    Et impossible de découper mes séquences pour morceler tout ça en créant des playlist. C’est une contrainte. Bref, je me suis tourné sur Red5. Mais on croirait un vrai gag tellement les dev font tout pour compliquer la tâche pour que ça marche. C’est peût-être ça linux… ne surtout pas donner envie. dommage. Je vais continuer à me flageller mais je comprend pourquoi personne n’est capable d’expliquer clairement l’installation et la configuration d’un systeme de stream de A à Z. Trop de linux tue linux.

    Répondre

    1. Carlos Matias 14/09/2012 at 08:34

      Salut. Tu baisse les bras un peu trop vite non ? En fait, ce délai pour l’envoi du stream quand on prend un fichier vidéo au milieu dépend de plusieurs choses:
      – vitesse des disques dur du serveur
      – liaison internet
      – encodage des fichiers.
      Pour les 2 premiers je ne peux rien faire pour toi, mais le troisième est très important et il s’avère que j’obtiens de très bon résultats (entre 2 et 4 secondes de délai) en encodant mes fichiers vidéo avec TMPGenc Xpress (ou TMPGenc Video Mastering Works).
      La structure du fichier mp4 est très importante : Il vaut mieux que le Metadata de la vidéo soit au début du fichier, et la taille des GOP (Group of Pictures) doit être revu à la baisse pour augmenter la vitesse de réponse quand on lit un fichier mp4 au milieu.

      J’ai plein de vidéos qui font plus d’une heure sur mon blog zeroabsolu, tu peux tester.
      Par contre c’est moi qui ai développé le player flash.
      A+

      Répondre

  8. Je n’ai pas le droit de baisser les bras car j’ai l’obligation d’installer un système de streaming. Et je ne souhaite pas passer par windows ni par adobe.
    Pour info, j’ai fais des tests avant de balancer mes infos 😉 et je cite le créateur du plugin : « The drawbacks of HTTP Pseudostreaming compared to Flash’s official RTMP Streaming are its reduced security (HTTP is easier to sniff than RTMP) and long loading times when seeking in large videos (> 15 minutes) ».
    J’ai testé un fichier de 45mn sur un serveur basic celeron monocore, 9sec à chaque clic sur la timeline. Sur un serveur plus musclé quadcore et 8Go de ram, 9sec aussi. bizarre.
    J’ai respecté toutes les procédures du plugin, idem pour la compression de la vidéo et le test des metadonnées est bon.
    Tu as quoi comme caractéristiques de serveur? un bi-xeon derniere gen avec des disques ssd? Pour l’encodage, j’ai utilisé ce que j’ai payé, adobe media live encoder. Après j’avoue ne pas m’être penché sur cette histoire de GOP mais je vais testé. De toute facon, même 4sec je trouve ça encore beaucoup. Pour info j’utilise JWplayer que je trouve plutot pratique à utiliser et à exploiter. Je vais aller voir ton blog… 🙂

    Répondre

    1. Carlos Matias 14/09/2012 at 09:42

      Mon serveur est un i5 avec 16GB de Ram et 2 x 2TB disque en RAID1.

      Si tu veux pas te prendre la tête il y a une offre pro chez Vimeo qui permet de stocker 50GB de fichier video + 250 000 vues par année pour 199$.
      Les tranches de stockage/play supplémentaires sont au même prix.
      L’avantage c’est que les serveurs de vimeo vont convertir des version pour mobiles/ tablettes à partir du fichier HD.
      Avec un compte pro on peux restreindre les vidéos à n’apparaitre que sur les URL que l’on souhaite, et leur player est facile à intégrer.

      Le site WebTV d’un de mes clients est en prod avec VimeoPro, et ça fonctionne très bien around the world.

      Répondre

    2. Carlos Matias 14/09/2012 at 09:44

      J’ai oublié: sinon j’utilise un serveur WOWZA sur un autre projet. C’est un peu complexe au départ, mais ça marche nickel.

      Répondre

  9. pour info, j’ai testé d’encoder en CBR au lieu du VBR, effectivement même sur petit serveur basic, ça marche beaucoup mieux. y’a même plus d’attente.
    Donc c’etait l’info du jour pour aller avec du stream http, encodez vos videos en CBR.

    Répondre

    1. Carlos Matias 14/09/2012 at 12:03

      Je suis content que tu ais trouver une solution à ton problème. Merci pour l’info en tout cas.

      Répondre

Leave a reply

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *