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:

Installer des alias pour les commandes unix sur macosx snow leopard

Installer des alias pour les commandes unix sur macosx snow leopard

Le dossier /usr/share/tcsh/examples
continent plein d'évolution pour étendre son shell

Voici le README qui est dans ce dossier:
This directory contains some useful tcsh files.

In order to use this configuration:

echo "source /usr/share/tcsh/examples/rc"     >> ~/.tcshrc
echo "source /usr/share/tcsh/examples/login"  >> ~/.login
echo "source /usr/share/tcsh/examples/logout" >> ~/.logout

To do this system-wide, do the same instead to /etc/csh.cshrc, /etc/csh.login, and /etc/csh.logout.

In order to customize tcsh:

mkdir -p ~/Library/init/tcsh

and create the following files there as necessary:

aliases.mine            - shell aliases
completions.mine        - completions
environment.mine        - environment
rc.mine                 - run commands
path                    - command search path

See the corresponding file in /usr/share/tcsh/examples for more information about the role of each file. You can easily extend or override the configuration provided by the default file. For example, you can add more aliases by adding the appropriate commands in aliases.mine.

-Fred
Massachusetts Institute of Technology
tritan@mit.edu

Les exemples ci-dessus montre comment utiliser des alias avec csh ou tcsh.
Avec le shell bash qui est par défaut dans macosx (mais qui ne l'était pas à la base d'ou la doc ci-dessus) la systaxe des alias n'est pas même.

Il faut utiliser:
alias l='ls -lg'

Moi je ne mets que ça, c'est juste pour lister d'une manière où il y a plus d'info. ça m'arrange.

Pour que ton shell s'en souvienne  et ne pas devoir le remettre à chaque fois.. il vaut mieux placer cette infos dans un fichier qui est lu à chaque démarrage de shell.

il y a un /etc/bashrc
il y a un /etc/profile
mais c'est des config globale. Pour ne faire qu'un seul utilisateur il y a
.bashrc et .profile

-bashrc n'est lu que si ce n'est pas une fenêtre de login interactive... selon le man bash
Donc ici je crée un fichier

sudo nano -w ~/.profile
dans lequel je met mon code d'alias:
alias l='ls -lg'

un petit control-x ... nano quitte et sauve.. c'est parfait !
Je relance une nouvelle fenêtre de shell et c'est gagné !

installer un environnement apache php mysql sur un mac avec snow leopard

Installer un environnement apache php mysql sur un mac avec snow leopard

On a de la chance sur mac, il y a déjà une partie des outils qui sont installé. C'est le cas pour apache et pour php.

Mais il faut les activer. Voilà mes notes en vrac pour faire cette démarche. C'est pas super propre.. un jour quand j'aurai le temps je ferai mieux 😀

sudo nano /etc/apache2/httpd.conf
décommenter:
#LoadModule php5_module libexec/apache2/libphp5.so
LoadModule php5_module        libexec/apache2/libphp5.so

installer mysql

http://dev.mysql.com/downloads/mysql/5.1.html#macosx-dmg
mysql-5.1.45-osx10.6-x86_64.dmg

installer tout ce qu'il y a sur l'image disque:
- mysql
- le startup item
- le prefpane

Puis activer mysql

Ensuite, il y a plein de warning quand on utilise la fonction strtotime...
Warning: strtotime() [function.strtotime]: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Berlin' for 'CEST/2.0/DST' instead in /Users/mdespont/Sites/yopyop/include/lib/application.php  on line 49

ici: http://maestric.com/doc/mac/apache_php_mysql_snow_leopard
On nous explique qu'il faut définir la timezone.
A choix une de celle-ci : http://www.php.net/manual/en/timezones.europe.php

Donc pour définir il faut ajouter un php.ini et compléter la ligne timezone en ajoutant le fuseau horaire voulu:

;date.timezone =Europe/Zurich

Puis.. subtilité.. il n'y a pas de php.ini par défaut.. il faut l'ajouter au besoin.. mais dedans les socket par défaut sont faux !!

Donc selon:
http://www.mac4ever.com/articles/creation/1153/php_mysql_sous_snow_leopard_et_xdebug_eclipse/

sudo cp /etc/php.ini.default /etc/php.ini

puis remplacer:
pdo_mysql.default_socket=/tmp/mysql.sock
mysql.default_socket = /var/mysql/mysql.sock
mysqli.default_socket = /var/mysql/mysql.sock

par

pdo_mysql.default_socket=/tmp/mysql.sock
mysql.default_socket = /tmp/mysql.sock
mysqli.default_socket = /tmp/mysql.sock

Donc petit rechercher remplacer: In /etc/php.ini, replace the three occurences of /var/mysql/mysql.sock  by /tmp/mysql.sock

Selon http://stackoverflow.com/questions/1293484/easiest-way-to-activate-php-and-mysql-on-mac-os-10-6-snow-leopard :
to complete your setup or mysql:

sudo vim /etc/profile

add alias

alias mysql=/usr/local/mysql/bin/mysql
alias mysqladmin=/usr/local/mysql/bin/mysqladmin

then set your root password

mysqladmin -u root password 'yourPassword'

then you can login with mysql -u root -p

Plusieurs virtual hosts pour apache

il faut décommenter la ligne qui permet à apache d'aller lire le fichier
/etc/apache2/extra/httpd-vhosts.conf
Fichier dans lequel j'ai mes virtual hosts.

J'ai les règles de ma réécriture d'url.

Voilà voilà.. tout va bien.. ça marche ! 😀

Reprendre les exemples du fichier exemple: httpd-vhosts-original.conf

#
# Use name-based virtual hosting.
#
NameVirtualHost *:80

#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for all requests that do not
# match a ServerName or ServerAlias in any <VirtualHost> block.
#
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot "/usr/docs/dummy-host.example.com"
ServerName dummy-host.example.com
ServerAlias www.dummy-host.example.com
ErrorLog "/private/var/log/apache2/dummy-host.example.com-error_log"
CustomLog "/private/var/log/apache2/dummy-host.example.com-access_log" common
</VirtualHost>

 

Installation de Xampp avec la même base de donnée mysql

Il faut télécharger xampp

Pour utiliser la même base de donnée que celle qui a été installé ci-dessus. Il suffit d'utiliser le même socket. Ainsi je crée un lien symbolique.

ln -s /tmp/mysql.sock /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock

Navigation au sein des articles

1 2 3 7 8 9 10 11 12 13 19 20 21
Remonter