IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

convertir liste de fichiers depuis son dossier avec un fichier .bat (Windows 10) [Batch]


Sujet :

Scripts/Batch

  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 425
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 425
    Points : 1 326
    Points
    1 326
    Par défaut convertir liste de fichiers depuis son dossier avec un fichier .bat (Windows 10)
    Bonjour à toutes et à tous,

    Avec une commande .bat et FFmpeg, je converti un fichier audio avec l'extension .wma en .mp3.

    Code Batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    @echo
    ffmpeg -i Sweet_Chariot.wma -f mp2 Sweet_Chariot.mp3
    pause
    echo

    Mais je suis obligé de nommé le fichier dans ma commande.

    J'ai aussi testé ceci :

    Code Batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    @echo
    for i in *.wma; do ffmpeg -i "$i" -ab 96k "${i%wma}mp3"; done
    pause
    echo

    Ne maitrisant pas le script, serait t'il possible de vérifier la liste des fichiers .wma dans le dossier et puis de les convertir tous.

    Si quelqu'un avait une idée, merci d'avance.

    @+,

    cincap

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur .NET en devenir
    Inscrit en
    Août 2017
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET en devenir
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2017
    Messages : 546
    Points : 1 084
    Points
    1 084
    Par défaut
    Bonjour,

    Tu peux tester comme cela :
    Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    @echo
    for %%A in (*.wma) do ffmpeg -i "%%~fA" -f mp2 "%%~nA.mp3"
    pause
    echo

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 425
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 425
    Points : 1 326
    Points
    1 326
    Par défaut
    Bonjour à toutes et à tous,

    @ barnabe0057, merci pour ta solution qui fonctionne en attendant j'étais parti sur une application Delphi en affichant la fenêtre dos sur un Tpanel.

    Il faudra que je vérifie si FFmpeg ne prévoit pas un paramètre de conversion pour mp3 car de 3724k on passe en mp3 à 11094k.

    Encore merci ce topic est résolut,

    @+,

    cincap

  4. #4
    Membre éprouvé
    Homme Profil pro
    Développeur .NET en devenir
    Inscrit en
    Août 2017
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET en devenir
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2017
    Messages : 546
    Points : 1 084
    Points
    1 084
    Par défaut
    Pour obtenir de meilleurs résultats, tu peux indiquer à FFmpeg d'utiliser la bibliothèque libmp3lame disponible ici : https://letmegooglethat.com/?q=libmp3lame

    Ce qui donnerait ("VBR Encoding") :
    Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    @echo
    for %%A in (*.wma) do ffmpeg -i "%%~fA" -codec:a libmp3lame -q:a 2 "%%~nA.mp3"
    pause
    echo

    Ou bien ("CBR Encoding") :
    Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    @echo
    for %%A in (*.wma) do ffmpeg -i "%%~fA" -codec:a libmp3lame -b:a 192k "%%~nA.mp3"
    pause
    echo

    Sources :
    - https://trac.ffmpeg.org/wiki/Encode/MP3
    - https://trac.ffmpeg.org/wiki/Encode/HighQualityAudio

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 425
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 425
    Points : 1 326
    Points
    1 326
    Par défaut
    @ barnabe0057, merci pour l'exemple en cherchant j'avais trouvé de mettre "-b:a 128k".

    Donc résolution topic 100%.

    Cordialement,

    @+,

    cincap

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 425
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 425
    Points : 1 326
    Points
    1 326
    Par défaut
    Bonjour à toutes et à tous,

    je reviens vers vous car j'aurai aimé créer un fichier de sortie qui reproduirait le processus de la conversion.

    Je sais que la commande pour FFmpeg est : -f ffmetadata in.txt.

    Mais je n'arrive pas à l'incorporer dans la commande qui regroupe plusieurs fichiers pour la conversion :

    Code Batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    @echo
    for %%A in (*.wma) do ffmpeg -i "%%~fA" -codec:a libmp3lame -q:a 2 "%%~nA.mp3"
    pause
    echo

    Avec mes essais, une fois créer ce fichier de données, et avant de commencer la conversion du deuxième fichier audio il m'est demandé de soit gardé soit effacer le fichier de données.

    Alors que j'ai besoin d'avoir les données de tous les fichiers que je convertis.

    Merci d'avance.

    @+,

    cincap

  7. #7
    Membre éprouvé
    Homme Profil pro
    Développeur .NET en devenir
    Inscrit en
    Août 2017
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET en devenir
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2017
    Messages : 546
    Points : 1 084
    Points
    1 084
    Par défaut
    Peut-être comme cela :
    Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    @echo
    (for %%A in (*.wma) do ffmpeg -i "%%~fA" -codec:a libmp3lame -q:a 2 "%%~nA.mp3") > sortie.txt
    pause
    echo

  8. #8
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 425
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 425
    Points : 1 326
    Points
    1 326
    Par défaut
    @ barnabe0057, bonjour et merci pour ta suggestion, je l'avais déjà essayé mais cela fonctionne pour certaines indications des fichiers (chemin, codec etc...) mais pas ce que l'on voit dans la fenêtre dos.

    Par contre avec un seul fichier, -f ffmetadata in.txt donne l'équivalent de la fenêtre dos.

    Code Batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    @echo
    for %%i in (*.wma) do ffmpeg -i "%%i" -f ffmetadata in.txt -acodec mp3 "MP3\%%~ni.mp3"
    pause
    echo

    Je cherche aussi de mon côté.

    @+,

    cincap

  9. #9
    Membre éprouvé
    Homme Profil pro
    Développeur .NET en devenir
    Inscrit en
    Août 2017
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET en devenir
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2017
    Messages : 546
    Points : 1 084
    Points
    1 084
    Par défaut
    Dans ce cas il suffit d'utiliser plusieurs fichiers in.txt en leur rajoutant un index, puis à la fin des opérations tu peux concaténer tous ces fichiers en un seul.

    Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    @echo
    setlocal enabledelayedexpansion
     
    set index=0
    for %%i in (*.wma) do (
    	set /a index+=1
    	ffmpeg -i "%%i" -f ffmetadata in_[!index!].txt -acodec mp3 "MP3\%%~ni.mp3"
    )
     
    type in_*.txt > sortie.txt
     
    pause
    echo

  10. #10
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 425
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 425
    Points : 1 326
    Points
    1 326
    Par défaut
    @ barnabe0057, Extra, j'ai un excellent résultat bravo.

    C'est quand même étonnant que la commande propre à FFmpeg ne fonctionne pas avec plusieurs fichiers ?

    Par contre j'ai fait l'essai avec 4 fichiers et le résultat prendra de la place si le dossier contient plus de fichiers audio ou mettre une instruction delete après la création du fichier de sortie final.

    Question, y a t'il un moyen de créer un espace séparant la conversion dans le dernier fichier de sortie pour une lecture plus facile ?

    Je traduit tout cela pour une application personnelle en langage Pascal.

    Cordialement,

    @+,

    cincap

  11. #11
    Membre éprouvé
    Homme Profil pro
    Développeur .NET en devenir
    Inscrit en
    Août 2017
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET en devenir
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2017
    Messages : 546
    Points : 1 084
    Points
    1 084
    Par défaut
    J'ai rajouté un espace entre chaque conversion :
    Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    @echo
    setlocal enabledelayedexpansion
     
    set index=0
    for %%i in (*.wma) do (
    	set /a index+=1
    	ffmpeg -i "%%i" -f ffmetadata in_[!index!].txt -acodec mp3 "MP3\%%~ni.mp3"
    )
     
    (for /L %%A in (1,1,!index!) do (
    	type in_[!index!].txt
    	echo.
    ) > sortie.txt
     
    del /q "in_*.txt"
    pause
    echo

    Puis à la fin j'ai mis un DEL pour faire un peu de nettoyage.

  12. #12
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 425
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 425
    Points : 1 326
    Points
    1 326
    Par défaut
    @ barnabe0057, en attendant la commande del je l'avais fait.

    Merci pour ton code mais après test il fonctionne à moitié.

    Les 4 fichiers se créent mais pas le fichier final.

    Et ces 4 fichiers ne sont pas effacés puisque le fichier final n'a pas été créé je suppose.

    Je regarde aussi pourquoi.

    @+,

    cincap

  13. #13
    Membre éprouvé
    Homme Profil pro
    Développeur .NET en devenir
    Inscrit en
    Août 2017
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET en devenir
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2017
    Messages : 546
    Points : 1 084
    Points
    1 084
    Par défaut
    Voilà une variation (à tester) :

    Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    @echo
    setlocal enabledelayedexpansion
     
    set index=0
    for %%i in (*.wma) do (
    	set /a index+=1
    	ffmpeg -i "%%i" -f ffmetadata in_[!index!].txt -acodec mp3 "MP3\%%~ni.mp3"
            echo. >> in_[!index!].txt
    )
     
    type in_*.txt > sortie.txt
     
    del /q "in_*.txt"
    pause
    echo

  14. #14
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 425
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 425
    Points : 1 326
    Points
    1 326
    Par défaut
    @ barnabe0057, chapeau bas mon ami cela fonctionne correctement.

    Chaque fichier est bien séparé avec le déroulement de la conversion.

    Exemple avec 2 fichiers audio.

    ;FFMETADATA1
    title=Kangivumanga [I Disagreed]
    artist=Ladysmith Black Mambazo
    genre=World
    album=The Best of Ladysmith Black Mambazo: The Star and the Wiseman
    WM/Track=4
    track=5
    WM/Year=1998
    composer=Joseph Shabalala
    album_artist=Ladysmith Black Mambazo
    WM/MediaPrimaryClassID={D1607DBC-E323-4BE2-86A1-48A42A28441E}
    WMFSDKVersion=12.0.7600.16385
    WMFSDKNeeded=0.0.0.0000
    PeakValue=31649
    AverageLevel=4475
    WM/EncodingTime=979797632
    WM/Provider=AMG
    publisher=Polygram
    WM/UniqueFileIdentifier=AMGa_id\=R 382066\;AMGp_id\=P 3325\;AMGt_id\=T 4461218
    WM/ProviderStyle=Pop/Rock
    DeviceConformanceTemplate=L1
    MediaFoundationVersion=2.112
    IsVBR=0
    encoder=Lavf58.13.100

    ;FFMETADATA1
    title=Sisesiqhingini (Everything Is So Stupid)
    artist=Ladysmith Black Mambazo
    genre=World
    album=The Best of Ladysmith Black Mambazo: The Star and the Wiseman
    WM/Track=5
    track=6
    WM/Year=1998
    composer=Joseph Shabalala\; Robin Batteau
    album_artist=Ladysmith Black Mambazo
    WM/MediaPrimaryClassID={D1607DBC-E323-4BE2-86A1-48A42A28441E}
    WMFSDKVersion=12.0.7600.16385
    WMFSDKNeeded=0.0.0.0000
    PeakValue=32417
    AverageLevel=4731
    WM/EncodingTime=1329797632
    WM/Provider=AMG
    publisher=Polygram
    WM/UniqueFileIdentifier=AMGa_id\=R 382066\;AMGp_id\=P 3325\;AMGt_id\=T 4461219
    WM/ProviderStyle=Pop/Rock
    DeviceConformanceTemplate=L1
    MediaFoundationVersion=2.112
    IsVBR=0
    encoder=Lavf58.13.100
    Un tout grand merci je peus commencer à créer mon application en Pascal pour embellir mon interface.

    Cordialement,

    cincap

  15. #15
    Membre éprouvé
    Homme Profil pro
    Développeur .NET en devenir
    Inscrit en
    Août 2017
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET en devenir
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2017
    Messages : 546
    Points : 1 084
    Points
    1 084
    Par défaut
    De rien, merci pour le retour et bonne continuation

  16. #16
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 425
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 425
    Points : 1 326
    Points
    1 326
    Par défaut
    Bonjour à toutes et à tous,

    Voici la photo du logiciel de conversion audio en langage Pascal grâce au code Batch et à l'aide de barnabe0057 pour correction astucieuse.

    Nom : JMC_Convertisseur.jpg
Affichages : 323
Taille : 102,5 Ko

    Merci,

    @+,

    cincap

  17. #17
    Membre éprouvé
    Homme Profil pro
    Développeur .NET en devenir
    Inscrit en
    Août 2017
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET en devenir
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2017
    Messages : 546
    Points : 1 084
    Points
    1 084
    Par défaut
    Joli ! J'espère avoir un jour l'honneur de l'utiliser

    En relisant la doc de FFMPEG j'ai vu un truc qui pourrait poser problème dans un futur proche :

    Note: the old undocumented way of specifying per-stream AVOptions by
    prepending v/a/s to the options name is now obsolete and will be
    removed soon.


    Ce qui signifie qu'il faudrait légèrement modifier ta syntaxe avant qu'elle devienne obsolète, voilà la modif :

    Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    @echo
    setlocal enabledelayedexpansion
     
    set index=0
    for %%i in (*.wma) do (
    	set /a index+=1
    	ffmpeg -i "%%i" -f ffmetadata in_[!index!].txt -codec:a mp3 "MP3\%%~ni.mp3"
            echo. >> in_[!index!].txt
    )
     
    type in_*.txt > sortie.txt
     
    del /q "in_*.txt"
    pause
    echo

  18. #18
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 425
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 425
    Points : 1 326
    Points
    1 326
    Par défaut
    Bonjour à toutes et à tous,

    @ barnabe0057 merci pour ta correction cela fonctionne.

    Quant au logiciel, la photo que tu vois dans le cadre du logiciel est la copie de ton fond d'écran du jour lorsque tu ouvres ce logiciel si tu as Windows 98 à Windows10 ?

    Il permet de convertir les fichiers audio .wma en .mp3.

    J'ai rajouté la possibilité de lire le fichier texte final depuis le logiciel.

    Dans le zip il n'y a pas FFmpeg.exe afin de ne pas augmenter le poids du transfert, mais dans le dossier du logiciel il le faut naturellement ainsi que les fichiers .wma à convertir.

    Un setup est prévu afin de l'enlever proprement si plus d'usage.

    @+,

    cincap

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 28/10/2011, 08h17
  2. Réponses: 2
    Dernier message: 27/02/2011, 10h11
  3. [Batch] Créer liste de fichiers-dossiers modifés depuis ..
    Par sechanbask dans le forum Scripts/Batch
    Réponses: 0
    Dernier message: 17/05/2009, 14h05
  4. Réponses: 1
    Dernier message: 06/02/2009, 17h58
  5. [E-03] ListBox avec liste des fichiers d'un dossier
    Par Daejung dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 01/11/2008, 01h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo