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.