Transcoder avec VLC

Transcoder un fichier audio ou vidéo avec VLC

VLC est un logiciel qui permet non seulement de lire des vidéos ou de la musique, mais aussi d'effectuer un grand nombre d'opérations de transcodage afin d'adapter le mieux possible les formats aux technologies de l'utilisateur.

Transcoder dans un Batch/Shell

Transcoder dans un batch (Windows) ou un shell (UNIX/Linux) possède l'avantage de pouvoir est facilement automatisé puisqu'il suffit d'exécuter le script. Cependant, cette méthode n'est pas générique car non seulement elle dépend du système d'exploitation, mais elle dépendant aussi de la façon dont est installé VLC.

Première notation

Globalement, le transcodage dans un batch/shell (ou ligne de commande) est de la forme suivante :

vlc flux_d'entrée --sout-module1-option1=... --sout-module1-option2=... --sout-module2-option1=... ...

Par exemple :

vlc --extraintf=http --http-host=:8080 --http-charset=ISO-8859-1 --sout="#std" --sout-standard-access=udp --sout-standard-mux=ts --sout-standard-dst=212.27.38.253:1234 --sout-ts-pid-video=68 --sout-ts-pid-audio=69 --sout-ts-pid-spu=70 --sout-ts-pcr=80 --sout-ts-dts-delay=400 --no-playlist-autostart --subsdec-encoding=ISO-8859-1 --sout-transcode-maxwidth=720 --sout-transcode-maxheight=576 --play-and-stop --http-src="/usr/local/freeplayer//share/http-fbx/" -I ncurses dummy --config="~/.vlc/vlcrc-fbx" --open="$1"

Attention

Cette notation fixe de façon définitive (jusqu'à la prochaine modification délibérée) les paramètres passés à VLC.

Par exemple, pour définir la langue des menus en français, si cela n'est pas fait automatiquement, vous pouvez utiliser la commande :

vlc --language=fr

Deuxième notation

Plutôt que de noter par module-option, on peut aussi tout factoriser :

vlc flux_d'entrée --sout "#module1{option1=param1{param-option1}, option2=param2}:module2{option1=...,}:..."

Par exemple :

echo off
REM Convertion d'un fichier video avec VLC
REM convertion wmv pour PocketPC
E:\Programmes\VideoLAN\VLC\vlc.exe "Z:\Documents\transcode\Dragonball_Z_20080428.mpg"
--sout=#transcode{vcodec="WMV2", vb="768", width="320", height="240", deinterlace,acodec="wma", ab="64", channels="2"}:std{access="file", mux="asf", dst="Z:\Documents\transcode\Dragonball_Z_20080428.wmv"} vlc://quit

Remarque

Contrairement à ce que pourrait laisser penser l'affichage, la ligne E:\Programmes\VideoLAN\VLC\vlc.exe... est sur une seule ligne.

On voit donc que ce qui était --sout-transcode-vcodec, --sout-transcode-vb, etc., est devenu :

#transcode{vcodec="WMV2",vb="768", width="320", height="240", deinterlace,acodec="wma", ab="64", channels="2"}

de la même manière, ce qui était --sout-std-access, etc., est devenu :

:std{access="file", mux="asf", dst="fichier cible"}

Quelques exemples

Convertir en Theora/OGG

Très utile pour disposer de vidéos compatible HTML5

vlc %1 :sout=#transcode{scale=1, deinterlace, vcodec=theo, vb=1500, acodec=vorb, ab=128, channels=2, samplerate=44100}:std{access=file, mux=ogg, dst=%1.ogv} vlc://quit

Convertir en Webm

Très utile pour disposer de vidéos compatible HTML5

vlc %1 :sout=#transcode{scale=1, deinterlace, vcodec=VP80, vb=1500, acodec=vorb, ab=128, channels=2, samplerate=44100}:std{access=file, dst=%1.webm} vlc://quit

Remarque

La compression webm est assez lente si les paramètres employés sont mauvais. Il ne faudra pas hésiter à modifier les paramètres d'encodage vidéo afin d'obtenir le meilleur ratio qualité/temps de compression.

Convertir en Pocket PC

vlc %1 :sout=#transcode{deinterlace, vcodec=WMV2, vb=300, scale=1, width=320, height=240, acodec=wma, ab=64, channels=2}:std{access=file, mux=asf, dst=%1.wmv} vlc://quit

Convertir en mp4

vlc %1 :sout=#transcode{deinterlace, vcodec=mp4v, vb=1024, acodec=mp4a, ab=96, channels=2}:std{access=file, mux=mp4, dst=%1.mp4} vlc://quit

Cependant, le codec mp4v pouvant parfois poser des problèmes ("coud not find the encoder"), l'encodage suivant est plus performant :

vlc %1 :sout=#transcode{deinterlace, venc=x264{profile=baseline,level=13,crf=24}, acodec=mp4a, ab=96, channels=2}:std{access=file, mux=mp4, dst=%1.mp4} vlc://quit

Convertir en mpeg-2 (DVD)

vlc %1 :sout=#transcode{deinterlace, vcodec=mp2v, vb=800, acodec=a52, ab=128,channels=2, samplerate=44100}:std{access=file, mux=ps, dst=%1.mpeg} vlc://quit

Convertir en XviD

vlc %1 :sout=#transcode{deinterlace, vcodec=xvid, vb=1500,acodec=mpga, ab=92,channels=2, samplerate=48000}:std{access=file, mux=avi, dst=%1.avi} vlc://quit

Diffuser sa webcam en mms

vlc dshow:// --sout=#transcode{width=320, height=240, vcodec=WMV2, vb=384, no-audio}:std{access=mmsh, mux=asfh, dst=:80}

VLC envoie sur la machine (ici en local pour un intranet), port 80, le flux mms. Il suffit de le récupérer sur le client, en ouvrant une URL dans le lecteur vidéo :

mms://ip_du_serveur_VLC:80

Diffuser sa webcam en rtsp

vlc dshow:// --sout=#transcode{fps=30, vcodec=mp4v, vb=1024, width=640, height=480, acodec=mp4a, ab=64, channels=1}:rtp{mux=ts, ttl=10, port=1234, sdp=rtsp://:80/test.sdp}

Convertir en iPad

vlc %1 :sout=#transcode{deinterlace, vcodec=h264, vb=700,acodec=mp4a, ab=92, channels=2, samplerate=48000}:std{access=file, mux=mp4, dst=%1.mp4} vlc://quit

Cependant, l'encodage suivant est plus performant :

vlc %1 :sout=#transcode{deinterlace, venc=x264{profile=baseline,level=13,crf=24}, acodec=mp4a, ab=96, channels=2, samplerate=48000}:std{access=file, mux=mp4, dst=%1.mp4} vlc://quit

Convertir en iPod Touch

vlc %1 :sout=#transcode{deinterlace,vcodec=mp4v,vb=512,scale=1,width=480,height=320,acodec=mp4a,ab=128,channels=2}:std{access=file,mux=mp4,dst=%1.mp4} vlc://quit

Convertir en iPod classic

vlc %1 :sout=#transcode{deinterlace,vcodec=mp4v, vb=512, scale=1, width=320, height=240, acodec=mp4a, ab=128, channels=2}:std{access=file, mux=mp4, dst=%1.mp4} vlc://quit

Extraire une piste audio précise

Dans le cas d'un enregistrement multipiste (par exemple DVB), il peut être utile de n'extraire qu'une seule piste audio.

vlc %1 --audio-track-id=331 :sout=#transcode{scale=1, deinterlace, vcodec=h264, vb=2000, acodec=mp4a, ab=92, channels=2, samplerate=44100}:std{access=file, mux=mp4, dst=%1.avi} vlc://quit

L'identifiant de la piste audio (331) est obtenu par le menu Outils/Informations sur les codecs de VLC, qui donne le type, la définition et l'identifiant de chaque piste (audio, video, sous-titres).

Extraire toutes les pistes

Par défaut, VLC n'extrait qu'une seule piste audio. Pour forcer l'extraction de toutes les pistes, il faut préciser --sout-all.

vlc %1 --sout-all :sout=#transcode{scale=1, deinterlace, vcodec=h264, vb=2000, acodec=mp4a, ab=92, channels=2, samplerate=44100}:std{access=file, mux=mp4, dst=%1.avi} vlc://quit

Les modules disponibles

La commande vlc --longhelp --advanced --help-verbose donne accès à l'aide complète de VLC, les modules, leurs valeurs possibles et le contexte d'utilisation.

Cette aide est disponible dans le flux atom associé à cette page.

VLC