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:51]
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 code est disponible ci-dessous. Le script est écrit en batch. Le code est disponible ci-dessous.
-<code>+<code DOS convert_m4a_wav.bat>
 @ECHO OFF @ECHO OFF
 CLS CLS
-SET _count=0+SET /A _count=0
 FOR %%G IN (*.m4a) DO SET /A _count+=1 FOR %%G IN (*.m4a) DO SET /A _count+=1
 SET /A _num=1 SET /A _num=1
Ligne 30: Ligne 31:
  SET _firstbit=%1  SET _firstbit=%1
  SET _qt="  SET _qt="
- REM CALL SET permet de remplacer un nom de variable par son contenu, de manière récursive 
- REM http://ss64.com/nt/set.html 
- REM remplacer une chaine par une autre : %variable:StrToFind=NewStr% 
- REM http://ss64.com/nt/syntax-replace.html 
  CALL SET _newnm=%%_firstbit:%_qt%=%%  CALL SET _newnm=%%_firstbit:%_qt%=%%
  SET _commanm=%_newnm:,=_COMMA_%  SET _commanm=%_newnm:,=_COMMA_%
- REM ECHO %_commanm% + 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
- CALL "C:\Program Files (x86)\VideoLAN\VLC\vlc.exe" --intf dummy -vvv %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  ECHO fichier %_num%/%_count% converti
  SET /A _num+=1  SET /A _num+=1
Ligne 55: Ligne 51:
 :eof :eof
 </code> </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.1430923865.txt.gz · Dernière modification: 2015/05/06 16:51 de luc