J'ai une séquence de fichiers:
file0.png, file1.png, ..., file10.png,... file100.png, ..., file1000.png, file1001.png, ..., file10000.png
Je veux faire une vidéo avec ffmpeg,
ffmpeg -framerate 30 -pattern_type glob -i '*.png' -c:v libx264 out.mp4
La convention de nom conduit à un ordre incorrect des fichiers lus en entrée. Comment puis-je résoudre ça?
la soi-disant solution "Comment renommer un groupe de fichiers dans l'invite de commande?" ne fonctionne pas!
linux
command-line
toto
la source
la source
Réponses:
C’est ce que l’on a fait pour renommer la séquence de fichiers.
la source
Au départ, j’ai examiné
ffmpeg
la documentation pour voir si les noms de fichiers en entrée peuvent être spécifiés dans un fichier distinct, où vous pouvez les trier à votre guise. Mais la documentation n'avait clairement pas une telle option. Je peux me tromper et ce serait ma recommandation si vous remarquiez une telle option.Au lieu de cela, vous devriez renommer vos fichiers pour les entrer dans l'ordre de votre choix. Je suppose que vous utilisez le shell bash, les fichiers sont dans le même répertoire, tous nommés
file1.png
àfile10000.png
vous préféreriez les ont appeléfile00001.png
àfile10000.png
.Sur une ligne comme:
for f in file*.png; do printf -v n "file%05d.png" "${f:4:-4}"; mv "$f" "$n"; done
ou peut-être juste:
Sur une ligne comme:
for (( i=0; i<10000; i++ )); do printf -v n "%05d" $i; mv "file$i.png" "file$n.png"; done;
Je ne sais pas ce qui est le plus rapide, mais je suppose que le second le serait.
la source