Aller au contenu

Serveur VOD avec VLC

De TIC Enseignement Agricole BFC
Version datée du 1 février 2024 à 11:10 par Cv5lw (discussion | contributions) (1 version importée)
(diff) ← Version précédente | Version actuelle (diff) | Version suivante → (diff)


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)