Streaming VLC

Dans ce tutoriel je vais vous montrer comment faire du streaming sur un réseau local avec VLC Media Player.

 

Qu’est ce que VLC ?

Vlc est un projet développé par Videolan qui permet de lire des fichiers multimédias (vidéos,sons). Il permet aussi de faire de l’acquisition via une carte TV/DVB, de faire de la conversion et ce qui nous intéresse, de la diffusion.

J’utilise un serveur Ubuntu 10.04 LTS et un pc sous Windows pour faire mes test, Vlc dans sa version 1.1.13 Luggage.

Je me connecte via un client SSH Putty fait très bien le travail (Putty). On se connecte au serveur dont l’ip est 192.168.16.102. On rentre notre identifiant et mot de passe (Vlc ne s’exécute pas en session root)

Il nous faut maintenant mettre a jour les sources et les paquets via la commande :

apt-get update

(les commandes apt-get ne s’exécute qu’en session root, nous changeons donc l’utilisateur qui est connecté via la commande « su root ») Il nous est demander un mot de passe root, le rentrer et appuyer sur entrer. Nous voilà en session root.

Nous mettons la commande pour mettre a jour les sources

 

Les sources se télécharges et se mettes à jour.

Nous pouvons maintenant passer a l’installation de Vlc.

II) Installation de VLC :

Nous pouvons maintenant installer Vlc en y entrant la commande apt-get install vlc (toujours en session root). On valide, on met « y » pour confirmer l’installation, le téléchargement et l’installation se déroule. Vlc est installer sur le serveur.

1) Diffusion d’un fichier vidéo sur le réseau & transcodage.

Entrer la commande

cvlc -vvv video.avi --sout '#transcode{vcodec=x264,vb=300}:standard{access=http,mux=ts,dst=192.168.16.102:8085}'

Détails de la commande :

cvlc : lance vlc en ligne de commande sans interface graphique.

-vvv : lance le verbose mode pour identifier les erreurs s’il y’en a.

–sout : active la sortie du flux transcodé.

Transcode : active le transcodage.

vcodec = nous choisissons ici le codec vidéo utilisé pour le transcodage.

vb = on règle ici le bitrate vidéo du transcodage.

standard : envoie le flux dans le protocole choisis.

acces : on choisis ici le mode d’accès au flux, Http est très bien, c’est le seul que j’ai pu utiliser sans avoir des erreurs.

Mux = on choisis ici le mux pour le flux streamé, ts est parfait pour le Streaming.

dst = on règle ici l’adresse ip du destinataire du flux, en l’occurrence nous choisissons le serveur Ubuntu où nous sommes déjà connecté.

192.168.16.102:8085 : C’est l’ip du destinataire suivie de « :8085 », ce qui signifie que pour lire le flux nous devrons nous connecté via le port 8085, via la commande a entrer dans Vlc : « http://192.168.16.102:8085 ».

 

Une fois la commande entré, la vidéo est en cours de transcodage, nous pouvons lire le flux qui en est sortie en ouvrant Vlc sur un poste Windows.

Le transcodage de la vidéo et la diffusion sont en cours.

 

 

Lecture du flux :

Ouvrir Vlc sur un pc Windows.

Cliquer sur Média puis sur ouvrir un flux réseau.

 

Cliquer sur Lire.

 

Le flux est ouvert et lu.

 

2) Création d’une mosaïque de vidéos :

 Nous pouvons créer une mosaïque de vidéo pour voir plusieurs vidéos différentes dans le même flux.

Pour faire une mosaïque il nous faut un fichier de background au format jpg ou png (un fichier de taille 640×480 est un juste milieu).

N.B : la diffusion de mosaïque consomme énormément de ressources.

Il faut pour faire fonctionner la mosaïque il nous faut un fichier de configuration pour Vlc.

Ouvrir un fichier texte via le bloc note et y coller la matrice suivante :

# Comment the following line if you don’t want to reset your VLM configuration del all # Options du fond d’écran: new bg broadcast enabled setup bg input « fake:///home/soufiane/bg.jpg » option « fake-file=/home/soufiane/bg.jpg » setup bg option sub-filter=mosaic # setup bg output #bridge-in{offset=100}:display setup bg output #transcode{vcodec=h264,vb=150,scale=1,sfilter=mosaic}:bridge-in{offset=100}:duplicate{dst=std{access=http{ttl=30},mux=ts,dst=192.168.16.102:1234,sap,name= »bg »}} option sout-all # Options de la Mosaïque : setup bg option mosaic-alpha=255 setup bg option mosaic-height=500 setup bg option mosaic-width=400 setup bg option mosaic-align=5 setup bg option mosaic-xoffset=10 setup bg option mosaic-yoffset=10 setup bg option mosaic-vborder=5 setup bg option mosaic-hborder=10 setup bg option mosaic-position=1 setup bg option mosaic-rows=2 setup bg option mosaic-cols=2 setup bg option mosaic-order=Chan1,Chan2 setup bg option mosaic-delay=0 setup bg option mosaic-keep-picture # Options des entrées : new Chan1 broadcast enabled setup Chan1 input http://demo:@192.168.16.13/img/video.mjpeg option « access-filter=timeshift » setup Chan1 output #duplicate{dst=mosaic-bridge{id=Chan1,width=180,height=141},select=video,dst=bridge-out{id=0},select=audio} new Chan2 broadcast enabled setup Chan2 input http://192.168.16.102:8085 option « access-filter=timeshift » setup Chan2 output #duplicate{dst=mosaic-bridge{id=Chan2,width=180,height=141},select=video,dst=bridge-out{id=1},select=audio} # Lancement de tout (fond d’écran + chan) control bg play control Chan1 play control Chan2 play

 

N.B : En entrées dans le fichier de configuration nous ne pouvons mettre que des flux de streaming et non des vidéos directement.

Explications du fichier en détail :

# Comment the following line if you don’t want to reset your VLM configuration

del all

(Commenter la ligne del all en y mettant un # au début de la ligne pour qu’elle ne soit pas exécuter.)

# Options du fond d’écran:

new bg broadcast enabled

setup bg input « fake:///home/soufiane/bg.jpg » option « fake-file=/home/soufiane/bg.jpg »

setup bg option sub-filter=mosaic

# setup bg output #bridge-in{offset=100}:display

setup bg output #transcode{vcodec=h264,vb=150,scale=1,sfilter=mosaic}:bridge-in{offset=100}:duplicate{dst=std{access=http{ttl=30},mux=ts,dst=192.168.16.102:1234,sap,name= »bg »}} option sout-all

Ici nous réglons les paramètres du fond d’écran :

new bg broadcast enabled : créer un nouvel objet qui se nomme bg (bg pour background), enabled active l’objet.

setup bg input « fake:///home/soufiane/bg.jpg » option « fake-file=/home/soufiane/bg.jpg » : ici nous réglons l’emplacement du fichier de background.

setup bg option sub-filter=mosaic : active le filtre de mosaïque sur le fond d’écran.

# setup bg output #bridge-in{offset=100}:display : créer la sortie pour la mosaïque.

setup bg output #transcode{vcodec=h264,vb=150,scale=1,sfilter=mosaic}:bridge-in{offset=100}:duplicate{dst=std{access=http{ttl=30},mux=ts,dst=192.168.16.102:1234,sap,name= »bg »}} option sout-all : C’est surement la ligne la plus importante du fichier de configuration.

Ici on règle les paramètres de sortie de la mosaïque, transcode : active le transcodage.

Vcodec : on choisis le codec de transcodage de la mosaïque.

Vb : on règle ici le bitrate vidéo de la mosaïque

scale = 1 : ici on règle l’échelle de la mosaïque, 1 signifie que c’est la taille d’origine 1:1)

sfilter=mosaic : on active le filtre mosaïque

:bridge-in{offset=100} : créer la mosaïque

:duplicate{dst=std{access=http{ttl=30},mux=ts,dst=192.168.16.102:1234,sap,name= »bg »} : :duplicate : duplique le flux

{access=http{ttl=30} : utiliser le protocole Http pour avoir accès au flux avec un ttl (time to live) de 30, le ttl n’est utile que pour le multicast.

mux=ts : on choisis le type de mux, ts est parfait pour le streaming.

,dst=192.168.16.102:1234,sap,name= »bg »}} : on choisis la destination du flux avec le port; on a comme nom de serveur sap « bg »

# Options de la Mosaique :

setup bg option mosaic-alpha=255

setup bg option mosaic-height=500 (on règle la hauteur de la mosaïque)

setup bg option mosaic-width=400 (on règle la largeur de la mosaïque)

setup bg option mosaic-align=5

setup bg option mosaic-xoffset=10

setup bg option mosaic-yoffset=10

setup bg option mosaic-vborder=5 (on règle le bord vertical)

setup bg option mosaic-hborder=10 ( on règle le bord horizontal)

setup bg option mosaic-position=1

setup bg option mosaic-rows=2 (on règle le nombre de lignes)

setup bg option mosaic-cols=2 (on règle le nombre de colonnes)

setup bg option mosaic-order=Chan1,Chan2 (on règle l’ordre des vidéos dans la mosaïque)

setup bg option mosaic-delay=0

setup bg option mosaic-keep-picture

# Options des entrées :

new Chan1 broadcast enabled

setup Chan1 input http://demo:@192.168.16.13/img/video.mjpeg option « access-filter=timeshift »

setup Chan1 output #duplicate{dst=mosaic-bridge{id=Chan1,width=180,height=141},select=video,dst=bridge-out{id=0},select=audio}

on créer un nouvel objet qui s’appelle Chan1, on active le broadcast (broadcast enabled)

setup Chan1 input http://demo:@192.168.16.13/img/video.mjpeg option « access-filter=timeshift »

On règle ici le flux d’entrée du Chan1

# Lancement de tout (fond d’écran + chan)

control bg play (Lance le background)

control Chan1 play (lance le chan1)

control Chan2 play (lance le chan2)

 

Le fichier de configuration est terminé, on l’enregistre sous le nom « vlm.conf »

On le place dans le même dossier que le fond d’écran. Ici ce dossier est « /home/soufiane/

Exécution de la mosaïque : On lance la mosaïque dans le terminal avec la commande :

cvlc -vvv --vlm-conf /home/soufiane/vlm.conf

 

Le transcodage et la diffusion de la mosaïque est lancé. Nous pouvons y accéder via la commande dans Vlc « http://192.168.16.102:1234 »

 

La Mosaïque est afficher.

 

 N.B:– Si la mosaïque est saccadé, il faut diminuer le bitrate dans le fichier de configuration, ainsi que mettre une scale plus petite que 1 (0.75 est un bon réglage pour le rapport qualité d’image/vitesse), il ne faut pas oublier que les capacités du serveur rentre en compte (Plus il y’a de vidéos de bonnes qualité dans la mosaïque plus le serveur devra être puissant).

 Dans le fichier de configuration les entrées ne peuvent être que des flux de streaming et non des fichiers vidéo.

Transcodage : Pourquoi transcoder ? Pour avoir un lien de streaming pour pouvoir le mettre ensuite dans le fichier de configuration de Vlc comme entrée ou bien pour permettre a Vlc de le diffuser si il ne parvient pas a lire le fichier d’origine.

Le codec idéal pour le transcodage est le h264 (si celui la est mal supporté ou trop lourd, utiliser le x264 qui lui est plus léger).

Sources : J’ai utiliser ces liens pour parvenir a faire fonctionner vlc :

http://wiki.videolan.org/Mosaic (Wiki officiel sur la Mosaïque Vlc)

http://www.emule-zenzone.com/topic18663.html (Configuration de la mosaïque)

http://www.videolan.org/doc/streaming-howto/en/index.html (L’utilisation de Vlc en ligne de commande)

On peut faire répéter la diffusion d’un flux en rajoutant le paramètre « –repeat » dans la commande de diffusion d’un fichier vidéo.

Le protocole UDP renvoie des erreurs quand je l’utilise :

([0x829d7d4] access_output_udp access out debug: late packet for UDP input (2955)

[0x829d7d4] access_output_udp access out warning: send error: Connection refused)

 J’utilise donc tout le temps le protocole HTTP qui lui ne renvoie pas d’erreurs.

 Je pense qu’il doit y’avoir un problème au niveau de la sortie des packet udp.

 

3 comments

    • Antoine B - Répondre

      Bonjour,

      Ce na va pas beaucoup nous avancer. Qu’est ce qui fonctionne et qu’est ce qui ne fonctionne pas ?

      Antoine

Leave Comment

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