Comment créer un fichier vidéo à partir d'un ensemble d'images jpg? [dupliquer]

31

J'essaie de créer un fichier vidéo à partir d'un ensemble d'images JPG. J'ai adapté les instructions données dans cette question mais ont connu quelques problèmes.

Premièrement, tous les paquetages requis ne sont pas disponibles, mais ils sont remplacés par libav-tools, qui est déjà installé - donc je pense que ce n’est pas un problème réel?

Mes fichiers sont nommés image-NN.jpg (NN étant un entier) et j'ai utilisé la commande

avconv -i "image-%d.jpg" -r 25 -c:v libx264 -crf 20  -pix_fmt yuv420p movie.mov

selon la question liée, mais cela donne juste une erreur No such file image-%d.jpg . Je

J'ai essayé de le changer pour

avconv -i "image-*.jpg" -r 25 -c:v libx264 -crf 20  -pix_fmt yuv420p movie.mov

et cela produit un fichier vidéo de longueur 0:00 qui semble ne contenir qu’une image. (Je suppose que le * a utilisé le premier match plutôt que chaque match).

Cette question donne une manière légèrement différente de formater le nom du fichier, alors j'ai essayé

avconv -i "image-%02d.jpg" -r 25 -c:v libx264 -crf 20  -pix_fmt yuv420p movie.mov

Cela produit un fichier plus volumineux et produit une vidéo qui dure environ 3 secondes (environ la longueur à laquelle je m'attendais), mais elle ne contient que la première image.

Une autre réponse à la première question liée suggère d’utiliser ImageMagick, alors j’ai essayé ceci

convert -delay 1 image-*.jpg output.mp4

Mais cela a généré une erreur

convert.im6: delegate failed '"ffmpeg" -v -1 -mbd rd -trellis 2 -cmp 2 -subcmp 2 -g 300 -i "%M%%d.jpg" "%u.%m" 2> "%Z"' @ error/delegate.c/InvokeDelegate/1065.

La version d’avconv est

[email protected] ~/Scott's stop-motion/1 $ avconv -version
avconv version 9.18-6:9.18-0ubuntu0.14.04.1, Copyright (c) 2000-2014 the Libav developers
built on Mar 16 2015 13:19:10 with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1)
avconv 9.18-6:9.18-0ubuntu0.14.04.1
libavutil     52.  3. 0 / 52.  3. 0
libavcodec    54. 35. 0 / 54. 35. 0
libavformat   54. 20. 4 / 54. 20. 4
libavdevice   53.  2. 0 / 53.  2. 0
libavfilter    3.  3. 0 /  3.  3. 0
libavresample  1.  0. 1 /  1.  0. 1
libswscale     2.  1. 1 /  2.  1. 1

Où est-ce que je me trompe et que dois-je faire?

Supplémentaire: Il a été suggéré que je liste chaque fichier individuellement, donc avec un peu de Python, j'ai généré ceci

avconv -i image-01.jpg image-02.jpg image-03.jpg image-04.jpg image-05.jpg image-06.jpg image-07.jpg image-08.jpg image-09.jpg image-10.jpg image-11.jpg image-12.jpg image-13.jpg image-14.jpg image-15.jpg image-16.jpg image-17.jpg image-18.jpg image-19.jpg image-20.jpg image-21.jpg image-22.jpg image-23.jpg image-24.jpg image-25.jpg image-26.jpg image-27.jpg image-28.jpg image-29.jpg image-30.jpg image-31.jpg image-32.jpg image-33.jpg image-34.jpg image-35.jpg image-36.jpg image-37.jpg image-38.jpg image-39.jpg image-40.jpg image-41.jpg image-42.jpg image-43.jpg image-44.jpg image-45.jpg image-46.jpg image-47.jpg image-48.jpg image-49.jpg image-50.jpg image-51.jpg image-52.jpg image-53.jpg image-54.jpg image-55.jpg image-56.jpg image-57.jpg image-58.jpg image-59.jpg image-60.jpg image-61.jpg image-62.jpg image-63.jpg image-64.jpg image-65.jpg image-66.jpg image-67.jpg image-68.jpg image-69.jpg image-70.jpg image-71.jpg image-72.jpg image-73.jpg image-74.jpg image-75.jpg image-76.jpg image-77.jpg image-78.jpg image-79.jpg image-80.jpg image-81.jpg image-82.jpg image-83.jpg image-84.jpg image-85.jpg image-86.jpg image-87.jpg image-88.jpg  -r 25 -c:v libx264 -crf 20  -pix_fmt yuv420p movie.mov

Cela a eu le même effet que précédemment - seule la première image est utilisée.

Supplémentaire: Cette question a été suggérée comme un possible doublon, mais elle concerne l'acquisition d'images à l'aide d'une webcam connectée à un PC. Ce n'est pas le problème que j'ai. J'ai déjà les photos; ils ont été pris avec un appareil photo numérique ordinaire.

    
posée Carl H 18.04.2015 - 17:36
la source

1 réponse

42

Ceci est la commande tous ensemble:

ffmpeg -framerate 25 -i image-%05d.jpg -c:v libx264 -profile:v high -crf 20 -pix_fmt yuv420p output.mp4

Permettez-moi de le décomposer:

-framerate

est le nombre d'images (images) par seconde

-i scene_%05d.jpg

cela détermine la séquence du nom de fichier recherché. image- signifie que tous les fichiers commencent par ceci. 0 est le nombre répété et 5 est le nombre de fois (il recherche donc tout fichier commençant à image-00000.jpg . Le d lui dit de compter les nombres entiers, donc les fichiers qu'il va détecter sont tout de image-00001 à image-99999 .

-c:v libx264 -profile:v high -crf 20 -pix_fmt yuv420p

-c:v libx264 - le codec vidéo est libx264 (H.264).

-profile:v high - utilisez H.264 High Profile (fonctionnalités avancées, meilleure qualité).

-crf 20 - mode de qualité constante, qualité très élevée (les nombres inférieurs sont de meilleure qualité, 18 est le plus petit que vous souhaitez utiliser).

-pix_fmt yuv420p - utilise le format de pixel YUV et 4: 2: 0 Sous-échantillonnage chroma

output.mp4

Le nom du fichier ( output.mp4 )

N'oubliez pas que ffmpeg a besoin d'une séquence continue d'images à charger. S'il passe de image-00001 à image-00003 , il s'arrêtera.

Si vos images sont comme ça:

image-1
image-2
...
image-35

changez ensuite la partie -i en -i image-%00d .

Mettre à jour Votre édition indique que le motif est image-01.jpg à image-02.jpg . Cela signifie que vous avez besoin du modèle image-%02d.jpg .

    
réponse donnée Tim 18.04.2015 - 20:31
la source

Lire d'autres questions sur les étiquettes