Transformer une séquence d’image de webcam en film

Transformer une séquence d'image en film

Il m'arrive souvent de prendre des images de webcam régulièrement et de faire des films en vitesse accélérée.

J'utilise un script shell pour aller chercher les images d'une webcam et les stocker dans un dossier avec un nom qui correspond à la date et l'heure de prise de vue.

Voici le script que j'utilise:

#!/bin/bash
#Capture une image de la vue dedevant chez moi toute les 3 s
while true; do
    curl http://axis-00408c77db21.local/axis-cgi/jpg/image.cgi?resolution=640x480 -o `/bin/date +"%y%m%d%H%M%S"`.jpg
    sleep 3
done

ça me permet d'appeller ma webcam qui se signale en local par le protocole bonjour.

Puis, après avoir fait tourner mon script pendant quelques semaines, il m'arrive souvent d'avoir des milliers ou plutôt des centaines de milliers de fichiers qu'il faut traiter.

Pour faire le film sur mac à partir des images, j'ai tester plusieurs logiciel:

  • Quicktime player pro version 7 a une fonction d'importation de séquence d'image.
  • iStopMotion
  • mencoder

Mencoder pour mac osx peut être télécharché ici:

http://prdownloads.sourceforge.net/mplayerosx/ffmpegXbinaries20060307.zip

mencoder est un outils en ligne de commande, mais c'est le plus robuste que j'ai trouvé pour gérer les centaines de milliers de fichiers et en plus il est gratuit.

Si mencoder est placé dans le dossier /Applications du mac, pour faire le film, il faut aller dans le dossier qui contient les images et lancer la commande suivante:

/Applications/mencoder "mf://*.jpg" -mf fps=50 -ovc x264 -o output264.avi

Un film sera créé au format h.264 dans le dossier avec le nom: output264.avi

Il existe plusieurs codec utilisable par défaut.

La commande:

mencoder -ovc help

permet de voir les codec disponibles:

Available codecs:
copy     - frame copy, without re-encoding. Doesn't work with filters.
frameno  - special audio-only file for 3-pass encoding, see DOCS.
raw      - uncompressed video. Use fourcc option to set format explicitly.
nuv      - nuppel video
lavc     - libavcodec codecs - best quality!
libdv    - DV encoding with libdv v0.9.5
xvid     - XviD encoding
x264     - H.264 encoding

Mise à jour en 2017 en utilisant ffmpeg

De 2010 à 2017.. les choses ont changées... mais pas les besoins.

timelapse avec ffmpeg

Inspiration:

Procédure:

  • créer un dossier
  • RESIZED_PHOTO_DIRECTORY
  • dans les dossier des photos

Depuis le dossier lancer la commande:

for FILE in `ls *.JPG`; do \

  mogrify -resize 1280x720^ -gravity center -crop 1280x720+0+0 +repage -write RESIZED_PHOTO_DIRECTORY/$FILE $FILE; \

done

Créer la vidéo:

ffmpeg -start_number 1 -i _DSF%04d.JPG -c:v libx264 -pix_fmt yuv420p video.mp4

ou....

ffmpeg -r 24 -pattern_type glob -i '*.JPG' -i DSC_%04d.JPG -s hd1080 -vcodec libx264 timelapse.mp4

Du coup j'utilise:

ffmpeg -r 24 -pattern_type glob -i '*.JPG' -vcodec libx264 timelapse.mp4

Je me fait insulter car la manière de passer en paramètre le codec est deprecated et que j'ai pas préciser la taille des pixel... il prend pas défaut yuv.. comme dans l'exemple...

mais ça marche sans soucis et c'est beau !

alternative pour gérer le resize..

convert input.jpg -resize '1920x1080^' -gravity center -crop '1920x1080+0+0' output.jpg

Exemple de timelapse avec ffmpeg

Voici un exemple de timelapse que j'ai fait:

Remonter