Sur la page webcam, vous découvrez comment je fais pour me servir de la webcam que l'on m'a gentillement prèté. A présent, je vais la tester pour prendre des photo toutes les 3 minutes, par exemples, puis associer celles-ci en un unique fichier vidéo. Cela me permettra de montrer à mes enfants, l'ouverture d'une fleur le matin, au lever du jour...
Pour la prise de photo, ce sera camstreams, qui est le seul qui ne parasite pas les images lors des prises;
pour le montage, ce sera le paquet debian mjpegtools ( pour ma woody/sid: $ sudo apt-get install mjpegtools);
pour la visualisation, xine fera l'affaire!
Pour mes premiers essais, j'ai pris mes enfants en photo (toutes les secondes), puis j'ai monté le résultat.
J'ai pu tester les divers problèmes à résoudre:
d'abord, il vous faut des images dans l'ordre, et avec camstream, il faut faire attention de ne pas commencer la numérotation
à partir de n'importe quel numéro. Je me suis apperçut qu'il gardait le dernier numéro utilisé, attention donc.
(voyez dans ~/.camstream la ligne "<saveoption>0</saveoption>", si la valeur n'est pas à zéro, mettez là, puis
démarrez camstream: la méthode n'est pas orthodoxe, il y a surement plus simple!)
Ensuite, utilisez bien le format jpg pour la sauvegarde (cf plus bas).
A présent, il faut:
#!/bin/sh
# ------------------------------------- #
# transforme des images au format jpg #
# en flux video! #
# on pourra lire le résultat avec xine #
# par exemple! #
# ------------------------------------- #
# Par R. Suinot (rsuinux@gmx.fr) #
# --------------------------------------#
i=0
j=0
tempo="nico"
for element in `ls *.jpg` ; do
let "i+=1"
done
# nb d'images par secondes
NBIMAGES=25
# durée en seconde(s)
DUREE=6
# nb de trame =DUREE * NBIMAGES
NBTRAME=0
echo "il y a $i images"
let NBTRAME=(NBIMAGES*DUREE)
echo "nb de trame: $NBTRAME"
# on commence par transformer les images au format pnm, et dans l'ordre, s'il vous plait,
# en ajoutant des images de temporisations si besoin
i=0
for element in `ls *.jpg` ;
do
if (( $i < 10 ))
then
tempo="nico000"$i".pnm"
elif (( $i >= 10 ))
then
tempo="nico00"$i".pnm"
elif (( $i >= 100 ))
then
tempo="nico0"$i".pnm"
fi
jpegtopnm $element >$tempo
let "i+=1"
done
for element in `ls *.pnm` ; do cat $element ; cat $element ; cat $element ; cat $element ; done | ppmtoy4m -n $NBTRAME -F $NBIMAGES:1 | mpeg2enc -4 1 -2 1 -F3 -f0 -o output.m1v
# et on fini en faisant le ménage:
rm -f *.pnm
Voila! Il y a beaucoup à faire encore pour améliorer le script, comme par exemple, envoyer les images plusieurs fois pour ne pas avoir les
35 images (par exemples) en 1seconde de flux vidéo, mais plutôt , 3 ou 4 fois la meme images à chaque fois pour avoir un flux de 3 ou 4 secondes
en tout.
J'avance à petit pas, de l'aide sera la bienvenue...!
Il faut bien avoir une première image xxx0000.jpg, et ne pas avoir de coupure dans la numérotation des images, sinon, vous vous faites ejecter par jpeg2yuv. De plus, les options -Ix et -Lx sont obligatoire!