Outils pour utilisateurs

Outils du site


tutoriels:conversion_par_lot_avec_vlc

Ceci est une ancienne révision du document !


Conversion par lot avec VLC media player

Le logiciel

Le logiciel utilisé pour la conversion est VLC media player. C'est un logiciel libre et gratuit.

Il est disponible sur le site officiel du projet VideoLAN ici. Le télécharger puis l'installer.

Conversion par lot

Pour effectuer la conversion par lot (sous Windows), il convient d'utiliser un script en ligne de commande, le logiciel VLC media player n'étant pas capable d'une telle opération nativement.

Pour cet exemple :

  • les fichiers sources sont au format AAC (extension de fichier .m4a). Plus d'informations ici.
  • les fichiers de sorties sont au format WAV (extension de fichier .wav). Plus d'informations ici.
  • les commandes de script utilisent l'interpréteur CMD de Windows. Plus d'informations ici.

Le script est écrit en batch. Le code est disponible ci-dessous.

convert_m4a_wav.bat
@ECHO OFF
CLS
SET /A _count=0
FOR %%G IN (*.m4a) DO SET /A _count+=1
SET /A _num=1
FOR %%G IN (*.m4a) DO (CALL :SUB_VLC "%%G")
IF NOT EXIST cdda MKDIR cdda
FOR %%G IN (*.m4a.wav*) DO (CALL :SUB_RENAME "%%G")
GOTO :eof
 
:SUB_VLC
 SET _firstbit=%1
 SET _qt="
 CALL SET _newnm=%%_firstbit:%_qt%=%%
 SET _commanm=%_newnm:,=_COMMA_%
 CALL "C:\Program Files (x86)\VideoLAN\VLC\vlc.exe" --intf dummy %1 --sout=#transcode{acodec="s16l",ab="128",channels="2",samplerate="44100"}:standard{access="file",mux="wav",dst="%_commanm%.wav"} vlc://quit
 ECHO fichier %_num%/%_count% converti
 SET /A _num+=1
GOTO :eof
 
:SUB_RENAME
 SET _origfnm=%1
 SET _origfpath=%~dp1
 SET _endbit=%_origfnm:*.m4a=%
 CALL SET _newfilenm=%%_origfnm:.m4a%_endbit%=.wav"%%
 CALL SET _newfilenm=%%_newfilenm:%_origfpath%=%%
 SET _newfilenm=%_newfilenm:_COMMA_=,%
 COPY %1 .\cdda\%_newfilenm%
 DEL %1
GOTO :eof
 
:eof

Explications du code

Un minimum de connaissance en batch est nécessaire pour appréhender la suite.
Par convention, les noms de variables commencent par le caractère _ (tiret bas, underscore) pour les différencier des variables du système.

SET /A _count=0

initialise une variable qui va contenir le nombre de fichiers à traiter.

FOR %%G IN (*.m4a) DO SET /A _count+=1

est une boucle qui va incrémenter la variable précédemment créée pour chaque fichier trouvé. Ici seuls les fichiers avec l'extension .m4a sont pris en compte. Le modificateur /A de la commande SET permet d'utiliser des expressions arithmétiques.

SET /A _num=1

initialise une variable qui va indiquer la position du fichier en cours de traitement.

FOR %%G IN (*.m4a) DO (CALL :SUB_VLC "%%G")

est une boucle qui va appeler la routine de conversion SUB_VLC pour chaque fichier avec l'extension .m4a. La routine reçoit un paramètre lors de son appel.

IF NOT EXIST cdda MKDIR cdda

crée le répertoire cdda s'il n'existe pas déjà.

FOR %%G IN (*.m4a.wav*) DO (CALL :SUB_RENAME "%%G")

est une boucle qui va appeler la routine qui va renommer les fichiers créés et les mettre dans le répertoire cdda. La routine reçoit un paramètre lors de son appel.

GOTO :eof

pour sortir du fichier de commandes à la fin du traitement.

Routine de conversion

 SET _firstbit=%1
 SET _qt="

récupère le paramètre passé à la routine et le place dans une variable. La deuxième variable contient un guillemet double.

 CALL SET _newnm=%%_firstbit:%_qt%=%%

L'appel à SET par l'intermédiaire de CALL autorise l'analyse de sous-chaîne dans une variable.
Ici, la variable _newnm va contenir le contenu de la variable _firstbit dans lequel les occurrences du contenu de la variable _qt seront remplacées par rien. La syntaxe est %variable:ChaineATrouver=NouvelleChaine%.

SET _commanm=%_newnm:,=_COMMA_%

remplace les caractères , (virgule) par le texte _COMMA_ afin de ne pas perturber la commande de conversion, le caractère , (virgule) ayant une signification particulière.

CALL "C:\Program Files (x86)\VideoLAN\VLC\vlc.exe" --intf dummy %1
 --sout=#transcode{acodec="s16l",ab="128",channels="2",samplerate="44100"}
 :standard{access="file",mux="wav",dst="%_commanm%.wav"}
 vlc://quit

appelle le programme externe VLC. Le chemin d'accès est à modifier en fonction du système.
L'option –intf dummy démarre VLC avec l'interface dummy c'est à dire aucune.
Le paramètre %1 ouvre le fichier dont le chemin est contenu dans la variable %1 c'est à dire celle passée en paramètre à la routine.
L'option –sout= définit la chaîne de sortie du flux.

  • #transcode{acodec=“s16l”,ab=“128”,channels=“2”,samplerate“44100”} indique que VLC va transcoder le flux d'entrée en utilisant le codec audio s16l (celui utilisé pour le wav), avec un débit de 128kbit/s, en stéréo et une fréquence d'échantillonnage de 44100Hz.
  • :standard{access=“file”,mux=“wav”,dst=“%_commanm%.wav”} indique à VLC d'utiliser une sortie standard en utilisant la méthode de sortie file (pour écrire un fichier), en utilisant le multiplexeur wav et la destination sera %_commanm%.wav. Le script remplace à la volée %_commanm% par le contenu de la variable.
  • vlc://quit indique à VLC de fermer son programme lorsque le travail est terminé.
ECHO fichier %_num%/%_count% converti
 SET /A _num+=1

pour afficher la progression de la conversion. Puis la variable indiquant le numéro de fichier est incrémentée.

tutoriels/conversion_par_lot_avec_vlc.1430931027.txt.gz · Dernière modification: 2015/05/06 18:50 de luc