Comment convertissez-vous un répertoire entier avec ffmpeg?

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