Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente |
tutoriels:conversion_par_lot_avec_vlc [2015/05/06 18:50] – [Explications du code] luc | tutoriels:conversion_par_lot_avec_vlc [2015/05/06 20:19] (Version actuelle) – luc |
---|
CALL SET _newnm=%%_firstbit:%_qt%=%% | CALL SET _newnm=%%_firstbit:%_qt%=%% |
SET _commanm=%_newnm:,=_COMMA_% | 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 | 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 | ECHO fichier %_num%/%_count% converti |
SET /A _num+=1 | SET /A _num+=1 |
<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>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. | <code>GOTO :eof</code> pour sortir du fichier de commandes à la fin du traitement. |
=== Routine de conversion === | === Routine pour convertir === |
<code> SET _firstbit=%1 | <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. | 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> 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>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 | <code>CALL "C:\Program Files (x86)\VideoLAN\VLC\vlc.exe" --intf dummy %1 |
--sout=#transcode{acodec="s16l",ab="128",channels="2",samplerate"44100"} | --sout=#transcode{acodec="s16l",ab="128",channels="2",samplerate="44100"} |
:standard{access="file",mux="wav",dst="%_commanm%.wav"} | :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.\\ | vlc://quit</code> appelle le programme externe VLC. Le chemin d'accès est à modifier en fonction du système.\\ |
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.\\ | 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.\\ | 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. | * ''#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. | * '':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é. | * ''vlc:%%//%%quit'' indique à VLC de fermer son programme lorsque le travail est terminé. |
<code>ECHO fichier %_num%/%_count% converti | <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. | 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]]. |
| |