Comment créer une vidéo à partir d'images avec FFmpeg?

ffmpeg -r 1/5 -start_number 2 -i img%03d.png -c:v libx264 -r 30 -pix_fmt yuv420p out.mp4

Cette ligne a bien fonctionné mais je veux créer un fichier vidéo à partir d'images dans un autre dossier. Les noms d'Image dans mon dossier sont:

img001.jpg
img002.jpg
img003.jpg
...

Comment puis-je entrer des fichiers images à partir d'un autre dossier? Exemple: C:mypics

j'ai essayé cette commande mais ffmpeg a généré une vidéo avec la première image (img001.jpg) seulement.

ffmpeg -r 1/5 -start_number 0 -i C:myimagesimg%03d.png -c:v libx264 -r 30 -pix_fmt yuv420p out.mp4
61
demandé sur Community 2014-07-25 21:18:21

2 réponses

voir le créer un diaporama vidéo à partir d'images – FFmpeg

si votre vidéo ne montre pas les images correctement si vous rencontrez des problèmes, tels que la première image est sautée ou montre seulement pour une image, puis utiliser le filtre vidéo fps au lieu de - r pour le framerate de sortie

ffmpeg -r 1/5 -i img%03d.png -c:v libx264 -vf fps=25 -pix_fmt yuv420p out.mp4

alternativement le filtre vidéo format peut être ajouté au filtre filterchain pour remplacer - pix_fmt yuv420p comme " fps=25,format=yuv420p " . L'avantage de cette méthode est que vous pouvez contrôler quel filtre passe en premier

ffmpeg -r 1/5 -i img%03d.png -c:v libx264 -vf "fps=25,format=yuv420p" out.mp4

j'ai testé ci-dessous les paramètres, ça a marché pour moi

"e:\ffmpeg\ffmpeg.exe" -r 1/5 -start_number 0 -i "E:\images\padlock%3d.png" -c:v libx264 -vf "fps=25,format=yuv420p" e:\out.mp4

ci-dessous paramètres ont également fonctionné, mais il toujours sauter la première image

"e:\ffmpeg\ffmpeg.exe" -r 1/5 -start_number 0 -i "E:\images\padlock%3d.png" -c:v libx264 -r 30 -pix_fmt yuv420p e:\out.mp4

faire de la vidéo à partir d'images placées dans des dossiers différents

ajoutez D'abord les chemins d'image à imagepaths.txt comme ci-dessous.


# this is a comment details https://trac.ffmpeg.org/wiki/Concatenate

file 'E:\images\png\images__%3d.jpg'
file 'E:\images\jpg\images__%3d.jpg'

exemple d'utilisation comme suit;


"h:\ffmpeg\ffmpeg.exe" -y -r 1/5 -f concat -safe 0 -i "E:\images\imagepaths.txt" -c:v libx264 -vf "fps=25,format=yuv420p" "e:\out.mp4"

- sûr 0 paramètre prevents nom de fichier Non Sécuritaire erreur

liens connexes

FFmpeg réalisation vidéo à partir d'images placées dans différents dossiers

FFMPEG Un Guide Intermédiaire/séquence d'images

Concaténate-FFmpeg

74
répondu khan 2017-05-23 11:54:44

-pattern_type glob

cette grande option rend plus facile de sélectionner les images dans de nombreux cas:

ffmpeg -framerate 1 -pattern_type glob -i '*.jpg' -c:v libx264 \
  -r 30 -pix_fmt yuv420p out.mp4

cette commande crée une vidéo de diaporama qui montre chaque image pendant une seconde. Voici une démo .

vos images devraient alors être classées par ordre alphabétique, typiquement comme:

0001-first-thing.jpg
0002-second-thing.jpg
0003-and-third.jpg

et ainsi de suite.

notez cependant que malgré le nom, -glob ce n'est pas aussi général que des marques de gangrène shell, par exemple: -i '*' échoue: https://trac.ffmpeg.org/ticket/3620 (apparemment parce que le type de fichier est déduit de l'extension).

-r 30 rend la vidéo 30 FPS pour surmonter les bugs dans les lecteurs comme VLC pour les framerates bas: VLC gèle pour la vidéo bas 1 FPS créé à partir d'images avec ffmpeg donc, ce serait répéter chaque image 30 fois pour conserver l'effet désiré de 1 image par seconde.

voir aussi:

Ensuite, vous voudrez aussi:

testé sur ffmpeg 2.8.6, Ubuntu 16.04.

42