Outils pour utilisateurs

Outils du site


tutoriels:conversion_par_lot_avec_vlc

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
tutoriels:conversion_par_lot_avec_vlc [2015/05/06 16:47]
luc
tutoriels:conversion_par_lot_avec_vlc [2015/05/06 20:19] (Version actuelle)
luc
Ligne 14: Ligne 14:
   * les fichiers sources sont au format AAC (extension de fichier ''.m4a''). Plus d'informations [[http://fr.wikipedia.org/wiki/Advanced_Audio_Coding|ici]].   * les fichiers sources sont au format AAC (extension de fichier ''.m4a''). Plus d'informations [[http://fr.wikipedia.org/wiki/Advanced_Audio_Coding|ici]].
   * les fichiers de sorties sont au format WAV (extension de fichier ''.wav''). Plus d'informations [[http://fr.wikipedia.org/wiki/WAVEform_audio_format|ici]].   * les fichiers de sorties sont au format WAV (extension de fichier ''.wav''). Plus d'informations [[http://fr.wikipedia.org/wiki/WAVEform_audio_format|ici]].
 +  * les commandes de script utilisent l'interpréteur CMD de Windows. Plus d'informations [[http://ss64.com/nt/|ici]].
  
-Le script est écrit en batch.+Le script est écrit en batch. Le code est disponible ci-dessous. 
 +<code DOS 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 
 +</code> 
 +==== 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. 
 + 
 +<code>SET /A _count=0</code> initialise une variable qui va contenir le nombre de fichiers à traiter. 
 +<code>FOR %%G IN (*.m4a) DO SET /A _count+=1</code> 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. 
 +<code>SET /A _num=1</code> initialise une variable qui va indiquer la position du fichier en cours de traitement. 
 +<code>FOR %%G IN (*.m4a) DO (CALL :SUB_VLC "%%G")</code> 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. 
 +<code>IF NOT EXIST cdda MKDIR cdda</code> crée le répertoire ''cdda'' s'il n'existe pas déjà. 
 +<code>FOR %%G IN (*.m4a.wav*) DO (CALL :SUB_RENAME "%%G")</code> 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. 
 +<code>GOTO :eof</code> pour sortir du fichier de commandes à la fin du traitement. 
 +=== Routine pour convertir === 
 +<code>SET _firstbit=%1 
 +SET _qt="</code> récupère le paramètre passé à la routine et le place dans une variable. La deuxième variable contient un guillemet double. 
 +<code> CALL SET _newnm=%%_firstbit:%_qt%=%%</code>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%''
 +<code>SET _commanm=%_newnm:,=_COMMA_%</code> 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. 
 +<code>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</code> 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 **128**kbit/s, en stéréo et une fréquence d'échantillonnage de **44100**Hz. 
 +  * '':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é. 
 + 
 +<code>ECHO fichier %_num%/%_count% converti 
 + SET /A _num+=1</code> pour afficher la progression de la conversion. Puis la variable indiquant le numéro de fichier est incrémentée. 
 + 
 +=== Routine pour renommer === 
 +<code>SET _origfnm=%1</code> récupère le paramètre passé à la routine et le place dans une variable. 
 +<code>SET _origfpath=%~dp1</code> ne conserve que le lecteur et le chemin du fichier du paramètre ((<code>%~I         - étend %I en supprimant les guillemets (") 
 +%~fI        - étend %I en nom de chemin d'accès reconnu 
 +%~dI        - étend %I en lettre de lecteur uniquement 
 +%~pI        - étend %I en chemin d'accès uniquement 
 +%~nI        - étend %I en nom de fichier uniquement 
 +%~xI        - étend %I en extension de fichier uniquement 
 +%~sI        - chemin étendu contenant uniquement des noms courts 
 +%~aI        - étend %I en attributs du fichier 
 +%~tI        - étend %I en date/heure du fichier 
 +%~zI        - étend %I en taille du fichier 
 + 
 +Vous pouvez combiner les modificateurs pour obtenir des résultats composés : 
 +%~dpI       - étend %I en lettre de lecteur et chemin d'accès uniquement 
 +%~nxI       - étend %I en nom de fichier et extension uniquement 
 +%~fsI       - étend %I en nom de chemin complet avec noms courts uniquement 
 +%~ftzaI     - étend %I en DIR comme ligne en sortie</code>)). 
 +<code>SET _endbit=%_origfnm:*.m4a=%</code> ne garde que la partie du nom de fichier après //m4a//. 
 +<code>CALL SET _newfilenm=%%_origfnm:.m4a%_endbit%=.wav"%%</code> remplace l'extension du fichier par ''.wav'' et ajoute un guillemet double. 
 +<code>CALL SET _newfilenm=%%_newfilenm:%_origfpath%=%%</code> supprime le chemin pour ne garder que le nom de fichier. 
 +<code>SET _newfilenm=%_newfilenm:_COMMA_=,%</code> remplace le texte ''_COMMA_'' par une '','' (virgule) pour obtenir le nom de fichier d'origine. 
 +<code>COPY %1 .\cdda\%_newfilenm% 
 +DEL %1</code> copie le fichier dans le sous-répertoire ''cdda'' en lui affectant un nouveau nom puis efface le fichier transcodé. 
 + 
 +==== Pour aller plus loin ==== 
 +Documentation de VLC pour l'utilisation en ligne de commande [[https://wiki.videolan.org/Documentation:Command_line/|ici]].\\ 
 +Conversion vers le format **wav** avec VLC [[https://wiki.videolan.org/WAVE|ici]].
  
tutoriels/conversion_par_lot_avec_vlc.1430923660.txt.gz · Dernière modification: 2015/05/06 16:47 de luc