VLC en ligne de commande

Date: 15/02/2007 | Catégories: Uncategorized | Tags: ,,,

Nous allons regarder d'un peu plus prés le logiciel VLC (VideoLAN Media Player) dans sa version 0.8.6a et notamment son utilisation en ligne de commande. Les exemples suivants sont effectuée sous MacOS X, mais ils doivent fonctionner sans problème sous Linux.

En premier lieu on créé un alias vers l'executable vlc:

# alias vlc='/Applications/VLC.app/Contents/MacOS/VLC'

Ensuite on lance la commande suivante pour vérifier que tout va bien...

# vlc -h
-> Affichage de l'aide en ligne

Jouer une video sur son écran

C'est la fonction de base de VLC, on prend en entrée un fichier video et on lance la commande suivante:

# vlc Elephants_Dream_HD.avi
-> Joue le fichier Elephants_Dream_HD.avi

On pointe déjà l'avantage de VLC par rapport aux autres "Player". En effet, pas besoin de télécharger des codecs tous les jours. En effet, VLC inclue un grand nombre de codecs et à chaque version la liste s'agrandie.

Quelques touches racourcies quand une vidéo est en train de jouer:
- Touche "Espace": Pause ou Play (si on est en pause)
- Touches "A": Change l'aspect ratio
- Touches "T": Affiche le temps écoulé/total
- Touches "S": Active ou desactive les sous-titres (si disponible)
- Touches "D": Active ou desactive les desentracellements
- Touche "ALT-F or POMME-F": Pour passer en full-screen
- Touches "C": Change le rognage

Flux de sortie de VLC

Nous allons enter dans le coeur du sujet de ce post: Les flux de sortie de VLC.
En effet, nous pouvons faire beaucoup plus que jouer une video, pour cela nous allons utiliser l'option --sout de la ligne de commande de VLC. Celle-ci permet d'utiliser des modules comme:
- standard: streaming sur le réseau ou encodage dans un nouveau fichier.
- transcodage: permet de changer à la volée le débit de sortie, le codec audio et/ou vidéo. Attention, cette option est grourmande en CPU...
- duplicate: permet de créer un nouveau flux de sortie (pouvant être traité de manière différente).
- display: permet de jouer la vidéo sur l'écran.
- rtp: streaming en RTP (compatible RTSP).
- es: Séparation du flux (par exemple pour un traitement différent du son et de la vidéo).

En ligne de commande, un transcodage, suivi d'un streaming se traduit par:
# vlc fichiersource.avi --sout '#transcode{options}:standard{options}'

La liste des options est disponible ici.

Streaming HTTP

Dans ce premier exemple, nous allons streamer (diffuser sur un réseau) une vidéo entre deux PC en utilisant le protocole HTTP.

Attention, pour streamer en utilisant le protocole HTTP, il faut que le fichier source soit encapsuler en: ps, mpeg1, ogg, asf ou mpjep.

Il faut donc passer par une phase de transcodage avant de pouvoir le streamer. Nous allons donc le transcoder en ogg. Le mux ogg est compatible avec les codecs MEPG 1/2/4, MJPEG, WMV 1/2 et Theora pour la vidéo et vorbix, flac, speex, a52 et l'audio MPEG pour l'audio. Notre fichier source d'exemple étant encodé en DIVX, il faut donc passer par une phase de transcodage avant de pouvoir le streamer. La commande à lancer sur le serveur est:

# vlc -vvv Elephants_Dream.avi --sout \ '#transcode{vcodec=mp4v,acodec=mpga,vb=800,ab=128}:standard{access=http,mux=ogg,dst=:8080}'

Comme vous pouvez le voir dans la ligne de commande nous avons également fixé la bande passante (800 Kbps pour la vidéo et 128 Kbps pour l'audio).

Cette commande permet donc de créer l'équivalent d'un "serveur web" écoutant les requêtes sous le port TCP/8080 (il faut changer l'adresse IP par celle de votre PC). Il ne reste plus qu'a lancer sur une machine distante (cliente) la commande suivante:

# vlc http://:8080

Streaming UDP Multicast

Pour un streaming multicast utilisant le protocole UDP (on doit dans ce cas la encapsuler en ts).

Sur le serveur:

# vlc -vvv Elephants_Dream.avi --sout '#transcode{vcodec=mp4v,acodec=mpga,vb=800,ab=128}:standard{access=udp,mux=ts,dst=239.10.11.12}'

Sur le client:

# vlc udp://@239.10.11.12:1234

Les combinaisons sont donc très grandes... à vos claviers !

Partager ce billet