Il arrive parfois que l'on possède ou enregistre pour des raisons diverses un fichier vidéo d'un côté, ne contenant que l'image et de l'autre, une ou plusieurs bandes son (une part doublage, par exemple). Le problème est d'arriver à lire la vidéo et la bande son choisie.
Avec VLC, c'est possible sous certaines conditions.
Pour séparer des flux avec VLC, il faut utiliser le filtre es. Par exemple :
vlc mon_fichier_source --sout=#es{access=file,mux=ps,url_audio=audio-%c.%m,url_video=video-%c.%m}
cette simple commande va créer deux fichiers séparés, un avec la bande son (stream-0-mpga.ps), l'autre avec la vidéo (stream-0-mpgv.ps).
Pour lire ensuite avec VLC ces deux flux en même temps, il faut utiliser l'option input-slave. Malheureusement, cette option étant encore expérimentale, elle ne fonctionne pas avec tous les formats. Elle ne fonctionne pas avec les formats encapsulées en PS.
Il faut donc convertir le son en un autre format.
Un format compatible est, par exemple le ogg. On convertira alors le fichier audio de la façon suivante :
vlc stream-0-mpga.ps --sout=#transcode{acodec=vorb,ab=128}:std{access=file,mux=ogg,dst=stream-0.ogg}
Nous obtenons ainsi un fichier ogg compatible avec input-slave.
Ou encore, le format mp4a :
vlc stream-0-mpga.ps --sout=#transcode{acodec=mp4a,ab=128,channels=2}:std{access=file,mux=mp4,dst=stream-0-mpga.mp4}
Nous obtenons ainsi un fichier mp4 compatible avec input-slave.
Il peut arriver que la lecture du flux d'origine en mpeg soit saccadée au moment de la lecture (problème de débit et d'accès au disque). Il faudra donc peut-être aussi convertir le fichier vidéo. Par exemple en mp4 :
vlc stream-0-mpgv.ps :sout=#transcode{deinterlace,vcodec=mp4v,vb=1024}:std{access=file,mux=mp4,dst=stream-0-mpgv.mp4}
Pour lire deux flux en même temps (vidéo + audio), rien de plus facile ensuite, si toutefois le format d'entrée de l'option input-slave est accepté :
vlc stream-0-mpgv.ps --input-slave=stream-0.ogg
Si cette méthode permet de réaliser un mixage ad hoc, il faut cependant l'utiliser avec précautions. Cette méthode ne fonctionnera pas parfaitement si :