====== 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 [[http://www.videolan.org/vlc/|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 [[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 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. @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 pour convertir === 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 **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é. 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. === Routine pour renommer === SET _origfnm=%1 récupère le paramètre passé à la routine et le place dans une variable. SET _origfpath=%~dp1 ne conserve que le lecteur et le chemin du fichier du paramètre ((%~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)). SET _endbit=%_origfnm:*.m4a=% ne garde que la partie du nom de fichier après //m4a//. CALL SET _newfilenm=%%_origfnm:.m4a%_endbit%=.wav"%% remplace l'extension du fichier par ''.wav'' et ajoute un guillemet double. CALL SET _newfilenm=%%_newfilenm:%_origfpath%=%% supprime le chemin pour ne garder que le nom de fichier. SET _newfilenm=%_newfilenm:_COMMA_=,% remplace le texte ''_COMMA_'' par une '','' (virgule) pour obtenir le nom de fichier d'origine. COPY %1 .\cdda\%_newfilenm% DEL %1 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]].