Serveur VOD avec VLC
Installation pour monter un VRAI serveur de vod avec du VRAI streaming avec vlc (Damien Vuillet)
Installation de la centos6 64 ou 32
Prendre l'option "Installer avec un driver vidéo basique"
Prendre installation minimale
Ne pas configurer l'interface réseau pendant l'installation
L'installation terminée faire:
vi /etc/selinux/config changer: SELINUX=disabled
shutdown -r now
vi /etc/sysconfig/network-scripts/ifcfg-eth0
ça doit ressembler à ceci (ne pas modifier la deuxième ligne de votre fichier, c'est l'adresse mac de votre carte eth0 !) :
DEVICE="eth0" HWADDR=00:30:05:E3:2A:B3 NM_CONTROLLED="no" ONBOOT=yes TYPE=Ethernet BOOTPROTO=none IPADDR=191.168.254.250 NETMASK=255.255.0.0 GATEWAY=191.168.1.10 DNS1=191.168.1.11 IPV4_FAILURE_FATAL=no IPV6INIT=no
adapter avec vos propres IP/mask/passerelle/dns
puis:
service network restart chkconfig network on service iptables stop chkconfig iptables off service ip6tables stop chkconfig ip6tables off
yum update
shutdown -r now
avec winscp copier la PJ dans /root (choisir celle correspondant à votre architecture centos choisie)
rpm -ivh rpmforge....(touche tab pour la complétion)
yum install vlc
service messagebus start chkconfig messagebus on
puis:
cd / mkdir vod
Copier vos vidéos dans /vod (copier les avec winscp dans un premier temps puis ensuite avec samba que vous installerez aussi sur le serveur vod) comme par exemple :
- video.mpg
repertoire_dvd (contenant les répertoires video et audio)
- video.mp4
- video.h264
- video.avi
- video.vob
Attention le conteneur wmv n'est pas adapté au streaming, ainsi que certains codecs compatibles avec le conteneur flv !
Faire ensuite:
useradd administrateur (ou autre nom d'utilisateur à votre convenance) passwd administrateur
entrer le passwd d'administrateur vlc ne peut pas être lancé en root, donc il faut créer un utilisateur (cet utilisateur pourra aussi vous servir afin de connecter le partage samba que vous mettrez en place sur le répertoire linux "vod" afin d'y déposer plus facilement vos vidéos)
cd /home/administrateur vi http_vlc
ça doit ressembler à ceci :
cvlc -vvv -I http --rtsp-host 191.168.254.250:5554
--> devant http c'est un i, adapter avec votre IP de serveur définie plus haut puis:
chmod 777 http_vlc
explication: avec ce petit script on lance donc sur le serveur de vod:
- un serveur web (sur le port 8080 qui est le défaut) qui va recevoir les instructions de montage (à la volée) d'objet video ainsi que de démarrage de la lecture de cet objet via des scripts xml fournis avec vlc mais dont personne ne sait à quoi ils servent ! Ce serveur web ne pourra pas héberger de page web, il sert juste au lancement des scripts xml intégrés. Le montage d'objet vidéo avant lecture est donc dynamique.
- un serveur rtsp (sur le port 5554, 5554 doit aussi être le defaut chez vlc mais je le précise quand même) qui va streamer l'objet vidéo monté préalablement
sur une deuxième console (appuyer sur alt-F2), se loguer en administrateur puis faire :
./http_vlc
Sur votre serveur web intranet/php, créer un répertoire (un nouveau site!) et placer le fichier php et le fichier html en PJ
Détails du fichier html en PJ, à modifier bien sur avant utilisation
<html> <head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <title>vod</title> <meta name="description" content=""> <meta name="keywords" content=""> <meta name="author" content=""> <meta name="generator" content="">
</head>
<body>
quelques exemples courants
<a href="vodvlc.php?url2=http://191.168.254.250:8080/requests/vlm_cmd.xml?command=new%7Cnom_objet_dvd%7Cvod%7Cenabled%7Cmux%7Cmp2t%7Cinput%7C
dvdsimple:///vod/repertoire_dvd&url=rtsp://191.168.254.250:5554/nom_objet_dvd">un dvd maison avec un seul vob dans le répertoire</a>
<a href="vodvlc.php?url2=http://191.168.254.250:8080/requests/vlm_cmd.xml?command=new%7Cles_tontons_flingueurs%7Cvod%7Cenabled%7Cmux%7Cmp2t%7Cinput%7C
dvdsimple:///vod/LES_TONTONS_FLINGUEURS&url=rtsp://191.168.254.250:5554/les_tontons_flingueurs">un dvd du commerce sans ar=16/9</a>
<a href="vodvlc.php?url2=http://191.168.254.250:8080/requests/vlm_cmd.xml?command=new%7Cles_tontons_flingueurs%7Cvod%7Cenabled%7Cmux%7Cmp2t%7Cinput%7C
dvdsimple:///vod/LES_TONTONS_FLINGUEURS&&url=rtsp://191.168.254.250:5554/les_tontons_flingueurs&ar=16:9">un dvd du commerce avec ar=16/9</a>
<a href="vodvlc.php?url2=http://191.168.254.250:8080/requests/vlm_cmd.xml?command=new%7Cnom_objet_vob%7Cvod%7Cenabled%7Cmux%7Cmp2t%7C
input|/vod/video.vob&url=rtsp://191.168.254.250:5554/nom_objet_vob">un fichier vob</a>
<a href="vodvlc.php?url2=http://191.168.254.250:8080/requests/vlm_cmd.xml?command=new%7Cnom_objet_avi%7Cvod%7Cenabled%7C
input|/vod/video.avi&url=rtsp://191.168.254.250:5554/nom_objet_avi">un fichier avi divx</a>
<a href="vodvlc.php?url2=http://191.168.254.250:8080/requests/vlm_cmd.xml?command=new%7Caustin_powers%7Cvod%7Cenabled%7Cmux%7Cmp2t%7Cinput%7C
dvdsimple:///vod/AUSTIN_POWERS&url=rtsp://191.168.254.250:5554/austin_powers">un dvd du commerce</a>
<a href="vodvlc.php?url2=http://191.168.254.250:8080/requests/vlm_cmd.xml?command=new%7Cnom_objet_mpg%7Cvod%7Cenabled%7Cmux%7Cmp2t%7C
input|/vod/video.mpg&url=rtsp://191.168.254.250:5554/nom_objet_mpg">un fichier mpg</a>
<a href="vodvlc.php?url2=http://191.168.254.250:8080/requests/vlm_cmd.xml?command=new%7Cnom_objet_mp4%7Cvod%7Cenabled%7C
input|/vod/video.mp4&url=rtsp://191.168.254.250:5554/nom_objet_mp4">un fichier mp4</a>
<a href="vodvlc.php?url2=http://191.168.254.250:8080/requests/vlm_cmd.xml?command=new%7Cnom_objet_h264|vod|enabled|
input|/vod/video.h264&url=rtsp://191.168.254.250:5554/nom_objet_h264">un fichier h264</a>
</body>
</html>
choisir la bonne ligne à modifier en fonction de votre type de vidéo, il y a des différences de paramètrage entre fichiers mpg/avi et rep_dvd en rouge: à changer obligatoirement en fonction de vos paramètres (je n'ai colorié que la dernière ligne mais c'est vrai pour toutes) en vert: à changer plus tard (je n'ai colorié que la dernière ligne mais c'est vrai pour toutes)
Si vous cliquez sur un lien dont par exemple le nom de fichier n'existe pas, l'objet sera quand meme monté, corriger le nom de fichier n'est pas suffisant, il faudra purger les noms d'objets en arretant le serveur de vod sur la console 2 en faisant CTRL-C et en relancant immediatement ./http_vlc (d'ailleurs il faudra faire cette manip de temps en temps afin de vider le cache des noms d'objets montés)
Bien sur la création de ces liens (et de cette page) peut se faire dynamiquement à partir d'une base mysql. (ce que j'ai ici dans mon bahut mais mon bricolage n'est pas transférable en l'état) En fait le top serait la création dynamique de ces liens apres listage du contenu du répertoire /vod...mais pour l'instant je n'ai pas le temps de m'y plonger.
Remarque importante: si vous cliquez sur un lien dont par exemple le fichier n'existe pas dans /vod ou son nom de fichier est erroné dans index.html, l'objet sera quand même monté avec son nom d'objet, corriger le nom de fichier n'est pas suffisant, il faudra alors purger les noms d'objets en arrêtant le serveur de vod sur la console 2 en faisant CTRL-C et en le relancant immédiatement avec ./http_vlc (d'ailleurs il faudra faire cette manip de temps en temps afin de vider le cache des noms d'objets montés)
Installer vlc sur vos PC clients réseau (windows ou linux) Naviguer vers la page index.html, cliquer sur le lien de votre vidéo
D(ynamiquement) V(od)