Comment convertir un répertoire / dossier entier avec ffmpeg via une ligne de commande ou avec un script batch?
La réponse précédente créera seulement 1 fichier de sortie appelé out.mov. Pour créer un fichier de sortie distinct pour chaque ancien film, essayez ceci.
for i in *.avi; do name=`echo $i | cut -d'.' -f1`; echo $name; ffmpeg -i "$i" "${name}.mov"; done
Pour Linux et MacOS, cela peut se faire en une seule ligne et vous n’avez pas besoin d’ echo
, de cut
ou de nom de basename
comme indiqué dans les autres réponses Bash,
for i in *.avi; do ffmpeg -i "$i" "${i%.*}.mp4"; done
Pour Windows, voir cette réponse par lxs.
Et sous Windows:
FOR /F "tokens=*" %G IN ('dir /b *.flac') DO ffmpeg -i "%G" -acodec mp3 "%~nG.mp3"
Un script bash sur une ligne serait facile à faire – remplacez *.avi
par votre type de fichier:
for i in *.avi; do ffmpeg -i "$i" -qscale 0 "$(basename "$i" .avi)".mov ; done
Pour convertir avec des sous-répertoires, utilisez par exemple
find . -exec ffmpeg -i {} {}.mp3 \;
Si vous voulez une interface graphique pour traiter par lots avec ffmpegX, essayez Quick Batcher . C’est gratuit et prendra vos derniers parameters ffmpegX pour convertir les fichiers que vous y déposez.
Notez que vous ne pouvez pas faire glisser des dossiers dans Quick Batcher. Alors, sélectionnez les fichiers, puis placez-les dans Quick Batcher.
Pour tous ceux qui souhaitent convertir par lots quelque chose avec ffmpeg mais souhaiteraient avoir une interface Windows pratique, j’ai développé cette interface:
https://sourceforge.net/projects/ffmpeg-batch
Il ajoute à ffmpeg une interface de mode de fenêtre, des barres de progression et des informations sur le temps restant, fonctionnalités que j’ai toujours manquées en utilisant ffmpeg.
for i in *.flac; do name=`echo "${i%.*}"`; echo $name; ffmpeg -i "${i}" -ab 320k -map_metadata 0 -id3v2_version 3 "${name}".mp3; done
Traitement par lots de fichiers flac
en mp3
(sans danger pour les noms de fichiers comportant des espaces) en utilisant [1] [2]
Si vous avez GNU parallèle, vous pouvez convertir tous les fichiers .avi sous vid_dir
en mp4 en parallèle, en utilisant tous les cœurs de votre processeur sauf
find vid_dir -type f -name '*.avi' -not -empty -print0 | parallel -0 -j -1 ffmpeg -loglevel fatal -i {} {.}.mp4
Pour convertir de / vers différents formats, modifiez '*.avi'
ou .mp4
selon les besoins. GNU parallèle est répertorié dans la plupart des référentiels de dissortingbutions Linux dans un package généralement appelé parallel
.
petit script php pour le faire:
#!/usr/bin/env php