Conversion de centaines de photos du style de nommage «frame_0000.jpg», «frame_0001.jpg» en un fichier avi?

0

J'ai toutes ces images en jpeg et je veux les diffuser dans un fichier AVI. J'essaie d'utiliser ffmpeg avec la commande indiquée ici, mais le message d'erreur "Aucun fichier ou répertoire de ce type" n'existe.

Ma commande exacte est (à partir du dossier contenant tous ces fichiers):

ffmpeg -f image2 -i frame_%d.jpg view.avi

Comment puis-je faire cela? Aussi, comment puis-je faire cela pour une gamme spécifique d'images? Supposons que je ne souhaite que les images 500 à 1000, je souhaite donc que frame_0500.jpg soit envoyé à frame_1000.jpg?

l'eau
la source
Si vous le faisiez un par un, est-ce que cela fonctionne (en pensant à une solution de contournement)?
Soandos
Il ne fonctionne peut-être pas car il recherche frame_1 et vous avez frame_0001.
Soandos
Je pense que c'est la raison, vous avez raison :) Mais il est impossible que je renomme des milliers de fichiers pour supprimer ces zéros. Il doit y avoir un moyen ffmpeg peut gérer cela?
eau
Vous pouvez renommer les fichiers avec Bulk Renamer mais je ne pense pas qu'il soit possible de le faire sans cela
soandos
Vous pouvez utiliser frame_%04d.jpgpour gérer correctement les zéros non ffmpegsignificatifs tout en insistant pour que la séquence commence par 0001. Pour commencer, vous devez être 0500. Vous devez renommer en bloc.
Mike Fitzpatrick

Réponses:

2

La commande correcte devrait être

ffmpeg -f image2 -i frame_%04d.jpg view.avi

Le %04dmoyen le nombre est de 4 caractères, zéro rembourré (0000-9999).

Si vous voulez faire une plage, je déplacerais simplement les fichiers que vous voulez dans leur propre répertoire.

C'est facile avec un interface graphique, mais avec une ligne de commande, vous pouvez le faire.

mv frame_0[5-9]* newfolder
mv frame_1000* newfolder
Paul
la source
3

motif glob

Pour ceux d'entre vous qui utilisent une construction non ancienne du ffmpegmotif glob est la méthode la plus flexible:

ffmpeg -framerate 10 -pattern_type glob -i "*.png" -pix_fmt yuv420p output.mkv

séquence

Cela vous permet de convertir une série d'entrées numérotées, image-0001.png, image-0002.png, etc:

ffmpeg -framerate 30000/1001 -i image-%04d.png -pix_fmt yuv420p output.mkv
  • Ajoutez -start_number, par exemple -start_number 100, comme option de saisie si vous souhaitez commencer avec une image particulière.

cat

Vous pouvez également utiliser catpour diriger vos images vers ffmpeg:

cat *.jpg | ffmpeg -framerate ntsc -f image2pipe -c:v mjpeg -i - -pix_fmt yuv420p output.mp4

Remarques

  • La sortie utilisera la même fréquence d'images que l'entrée. Si vous ne déclarez pas, -frameratela valeur par défaut de 25 sera utilisée. Vous pouvez également ajouter -rune option de sortie, par exemple dans -r 25, si vous souhaitez ffmpeglire l'entrée à une certaine vitesse, puis supprimer ou dupliquer des images pour obtenir une fréquence de sortie différente.

  • En fonction de votre saisie, de votre ffmpegversion et de l'encodeur sélectionné, ffmpegvous éviterez ou minimiserez le sous-échantillonnage de la chrominance. Bien que cela puisse être bon sur le plan technique, il peut produire une sortie qui n'est pas lisible par les joueurs non basés sur FFmpeg. L'ajout vous -pix_fmt yuv420passurera que votre sortie est lisible lors de l'encodage en vidéo H.264.

  • Il est recommandé d'utiliser une version récente de ffmpegcar le développement est si actif et d'éviter les bogues déjà corrigés. Voir la page de téléchargement de FFmpeg pour des liens vers des versions pour Windows, OS X et Linux.

Regarde aussi

llogan
la source