Comment créer une vidéo timelapse à partir d'une collection de photographies sous Linux?


19

Je veux créer un timelapse à partir d'une collection d'images, sous Ubuntu. J'aimerais faire des vidéos HD et idéalement ajouter une bande son.


Je n'ai pas vu ça. Je peux supprimer cette question et y poster ma réponse. Est-ce que ça va?
Frederico Schardong

Je ne suis même pas sûr que ce soit le meilleur site de stackexchange pour cela. Je veux juste partager ce que j'ai fait.
Frederico Schardong

Il y a une question similaire sur askubuntu.com . Les réponses sont principalement couvertes ici au moment de la rédaction, mais cela pourrait changer à l'avenir, bien sûr.
anarcat

Réponses:


11

Ffmpeg le fera. Si vous avez des images img001.jpg, img002.jpg, img003.jpg, ..., faites en ligne de commande:

ffmpeg -i img*.jpg output.mpeg

D'autres options sont disponibles dans les ffmpeg --helppages de manuel ou sur le Web. Ceux-ci permettent de contrôler la fréquence d'images et le format de sortie.


L'utilisation de cela génère une erreur pour moi, car elle considère les derniers .jpgfichiers comme le fichier de sortie. Je reçois File 'DSCF6134.JPG' already exists. Overwrite ? [y/N]- pas si bien. Ma solution était de générer une liste de fichiers avec \ls *.JPG | sed "s/^/file '/;s/$/'/" > files.txtpuis de la charger avec ffmpeg -f concat -i files.txt output.mpeg.
anarcat

Avec les autres versions de ffmpeg, la version suivante fonctionne sans essayer de remplacer les images:ffmpeg -pattern_type glob -i "picture*.jpg" output.mpeg
Patrick R.

9

Nous renommons d'abord tous les fichiers * .JPG en fonction de leur date de création. Parfois, les caméras changent le nom du fichier ou simplement les commander n'est pas ce que nous voulons. Cependant, les renommer par la date de création fonctionne toujours:

jhead -n%Y%m%d-%H%M%S *.JPG

Après cela, nous mettons cette liste dans un fichier:

ls -1tr | grep -v files.txt > files.txt

Et puis utilisez mencoderpour créer une AVIvidéo en utilisant 20 ips. Notez que cela générera un énorme fichier vidéo, généralement autour de la même taille de toutes les images résumées.

mencoder -nosound -noskip -oac copy -ovc copy -o output.avi -mf fps=20 'mf://@files.txt'

Je prends généralement des photos en accéléré avec la résolution la plus basse de mon appareil photo (5 MP), qui a un rapport aspec de 4: 3. Pour générer une vidéo 1080p correcte, l'image est d'abord recalibrée à 1920 pixels de largeur, puis je la recadre à 1080 de hauteur. De cette façon, je ne modifie pas le contenu des photos, je recadre juste:

ffmpeg -i output.avi -y -sameq -vf scale=1920:1440,crop=1920:1080 output-final.avi

La raison pour laquelle j'utilise mencoder pour assembler les photos est parce que j'ai obtenu segmentation faultavec ffmpeg.


Pour le segfault, il serait utile de connaître votre version de ffmpeg.
Unapiedra

Si comme moi vous avez tourné en 3: 2 (mes images fixes D750 sont 6016x4016) et en avez besoin en 16: 9 (pour la vidéo 4k) 3840x2160, vous pouvez utiliser FFMPEG pour Pillerbox la vidéo et garnir les lignes de tramway noires sur les côtés avec cette commande - ffmpeg -i output.avi -qscale 0 -vf "scale = 3840: 2160: force_original_aspect_ratio = diminuer, pad = 3840: 2160: (ow-iw) / 2: (oh-ih) / 2" output-final.avi - Vidéo sera plus grand mais sans perte de qualité car il s'agit d'une réduction d'échelle
Rob

dans votre ffmpegcommande, l' -sameqoption est maintenant remplacée par-qscale 0
transang

3

Blender est une bonne solution si vous avez affaire à un timelapse de mouvement (hyperlapse) ou à un métrage instable. Il a des capacités de suivi de mouvement afin que vous puissiez choisir un point fixe à suivre tout au long de l'accéléré. Vous pouvez également résoudre les problèmes de rotation.



0

Vous pouvez utiliser mencoder. Les options sont assez explicites:

  • liste tous vos fichiers images.

S'ils sont tous dans le répertoire courant avec des noms ordonnés et que vous voulez la liste dans le fichier /tmp/files.txt:

ls -1 *jpg > /tmp/files.txt

  • Utilisez mencoder avec l'option appropriée.

Si vous voulez que le fichier de sortie soit /tmp/test.avi avec 30fps:

mencoder -nosound -ovc lavc -lavcopts vcodec=mpeg4 -o /tmp/test.avi -mf type=jpeg:fps=30 mf://@/tmp/files.txt


0

Kdenlive peut également générer des timelapses en utilisant le Add Slideshow Clipmenu, comme expliqué dans ce tutoriel .

Selon le même site , Openshot a une fonctionnalité similaire mais ne la recommande pas car elle est "bien trop boguée". Néanmoins, s'il s'agit de votre éditeur vidéo préféré, vous serez heureux de savoir que vous pouvez simplement faire glisser et déposer une séquence de fichiers correctement nommés (001.jpg vers NNN.jpg) dans une fenêtre Openshot pour les importer également en timelapse.


Ce guide date de 2014. OpenShot a fait ses preuves ces dernières années, il est désormais beaucoup plus fiable.
vclaw
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.