Suite d'image en video

Bonjour
j’ai une suite d’image que j’aimerais transformer en vidéo, j’ai trouvé des commandes du style:
avconv -i ./normal/*.jpeg -r 10 -s outputvideo.mp4
Voici un extrais de la fin:


Output #755, image2, to './normal/image_2017-03-06_18-35-55.jpeg':

Metadata:
encoder : Lavf56.1.0
Stream #755.0: Video: mjpeg, yuvj422p, 648x488 [PAR 1:1 DAR 81:61], q=2-31, 200 kb/s, 25 tbn, 25 tbc
Metadata:
encoder : Lavc56.1.0 mjpeg
Output #756, image2, to ‘./normal/image_2017-03-06_18-36-16.jpeg’:
Metadata:
encoder : Lavf56.1.0
Stream #756.0: Video: mjpeg, yuvj422p, 648x488 [PAR 1:1 DAR 81:61], q=2-31, 200 kb/s, 25 tbn, 25 tbc
Metadata:
encoder : Lavc56.1.0 mjpeg
Stream mapping:
Stream #0:0 -> #0:0 (mjpeg (native) -> mjpeg (native))
Stream #0:0 -> #1:0 (mjpeg (native) -> mjpeg (native))
Stream #0:0 -> #2:0 (mjpeg (native) -> mjpeg (native))
Stream #0:0 -> #3:0 (mjpeg (native) -> mjpeg (native))
Stream #0:0 -> #4:0 (mjpeg (native) -> mjpeg (native))
Stream #0:0 -> #5:0 (mjpeg (native) -> mjpeg (native))
Stream #0:0 -> #6:0 (mjpeg (native) -> mjpeg (native))
Stream #0:0 -> #7:0 (mjpeg (native) -> mjpeg (native))
Stream #0:0 -> #8:0 (mjpeg (native) -> mjpeg (native))
Stream #0:0 -> #9:0 (mjpeg (native) -> mjpeg (native))
Stream #0:0 -> #10:0 (mjpeg (native) -> mjpeg (native))
Press ctrl-c to stop encoding
frame= 1 fps= 1 q=6.8 Lq=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8 q=6.8
video:19492kB audio:0kB other streams:0kB global headers:0kB muxing overhead: unknown
[libx264 @ 0x2c05120] frame I:1 Avg QP:27.34 size: 12530
[libx264 @ 0x2c05120] mb I I16…4: 21.6% 52.7% 25.6%
[libx264 @ 0x2c05120] 8x8 transform intra:52.7%
[libx264 @ 0x2c05120] coded y,uvDC,uvAC intra: 49.9% 70.8% 30.6%
[libx264 @ 0x2c05120] i16 v,h,dc,p: 41% 34% 8% 17%
[libx264 @ 0x2c05120] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 34% 14% 18% 3% 6% 11% 4% 5% 5%
[libx264 @ 0x2c05120] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 44% 9% 15% 3% 8% 9% 5% 4% 3%
[libx264 @ 0x2c05120] i8c dc,h,v,p: 52% 17% 25% 6%
[libx264 @ 0x2c05120] kb/s:2506.00

avconv version 11.8-6:11.8-1~deb8u1, Copyright © 2000-2016 the Libav developers
built on Oct 1 2016 07:16:29 with gcc 4.9.2 (Debian 4.9.2-10)

Mais à la fin la vidéo fait 18KB et elle fonctionne pas, j’ai pas d’erreur pourtant.

Autre chose mes images ont des noms du style: image_2017-03-06_14-11-16.jpeg est ce qu’on peut avec une commande delete les fichier dont le nom à plus de deux jours ?

Merci

Bonjour LeRoutard

J’y suis arrivé avec ces lignes de commandes qui affichent la liste des fichiers plus vieux de 2 jours avant la date/heure actuelle :

prefix="image"; ext="jpg";
minDate="- 2 days"; minDate="${prefix}_$(date +'%F_%H-%M-%S' -d "today ${minDate}").${ext}"
find . -regextype posix-egrep -regex './'"${prefix}"'_[0-9]{4}-[0-9]{2}-[0-9]{2}_[0-9]{2}-[0-9]{2}-[0-9]{2}\.'${ext} | \
 while read fich; do [[ $(basename $fich) < $minDate ]] && echo $fich; done

Il te suffira de changer la dernière commande echo par la commande rm


Mais bon, je ne suis pas programmeur, et il y a sans doute mieux à proposer.

J’ai trouvé cette commande, pas encore testé car pas de fichier assez vieux:
find *.jpeg -type f -mtime +1 -exec /bin/rm -f {} ;
find *.jpeg -type f -mtime +1 -delete

Si la commande que j’ai trouvé fonctionne ton code a l’air bien compliqué^^.

Par contre pour créé ma vidéo je n’ai toujours pas réussi!!!
Merci pour ton aide

Ne sachant pas s’il y avait d’autres fichiers images dans ce répertoire, j’avais appliqué un filtre sur le nom de fichier beaucoup plus restrictif.
De plus, mes lignes de commandes n’utilisent pas la date de la dernière modification (mtime) du fichier
mais la date inscrite dans le nom du fichier.

A mince^^, je sais pas ce que ça regarde moi, après de toute façon la date de création est dans le le nom du fichier et vu que c’est des photos de caméra la date ne change pas, donc je pense pas que ça pose de problème.
Tu ne serais pas comment régler mon problème d’avconv sinon ? Je bloque toujours et je vois pas pourquoi

Je n’ai encore jamais utilisé avconv

salut
j’utilise un script que je mets dans le répertoire scripts de .config/mate :

#!/bin/sh
# $NAUTILUS_SCRIPT_CURRENT_URI | cut -d'/' -f3- | sed 's/%20/ /g' = répertoire absolu sans / à la fin avec espaces
# $NAUTILUS_SCRIPT_CURRENT_URI | cut -d'/' -f3- | sed 's/%20/\ /g' = répertoire absolu sans / à la fin avec \espaces

#teste si un fichier au moins est sélectionné

if [ $# -ne 0 ]; then
    #echo $1>>/tmp/aa
    #rm /tmp/aa
    nom=$1#drops-0001.jpg
    #IFS=$'\n'; noms=$1;nb=0;for i in $(ls |grep jpg$);do noms=${noms}','$i;done
    #tab=(${noms//,/ })
    #echo ${tab[2]}>>/tmp/aa
    prefixe=$(echo $i|sed -e 's/[0-9]//g' -e 's/--/-/')
    prefixe=$(echo $1|sed -e 's/[0-9]//g' -e 's/.jpg//')
    
    texte='mencoder "mf://*.jpg" -mf fps=25 -o '${prefixe}$(date +%s)'.avi -ovc x264 -lavcopts  vcodec=h264'
    echo $texte >>/tmp/$(basename $0)
    #mencoder "mf://*.jpg" -mf fps=25 -o ${prefixe}$(date +%s).avi -ovc divx4
    #mencoder "mf://*.jpg" -mf fps=25 -o jpg2avi$(date +%s).avi -ovc x264 -lavcopts  vcodec=h264
    mencoder "mf://*.jpg" -mf fps=25 -o ${prefixe}$(date +%s).avi -ovc x264 -lavcopts  vcodec=h264
    
    zenity --info --title="avi créer" --text="`echo $texte`"
fi

ce qui correspond à :
mencoder “mf://*.jpg” -mf fps=25 -o a1488899057.avi -ovc x264 -lavcopts vcodec=h264

je vais nettoyer un peu le script et le commenter :

 #!/bin/sh
if [ $# -ne 0 ]; then
nom=$1
prefixe=$(echo $1|sed -e 's/[0-9]//g' -e 's/.jpg//')
texte='mencoder "mf://*.jpg" -mf fps=25 -o '${prefixe}$(date +%s)'.avi -ovc x264 -lavcopts  vcodec=h264'
echo $texte >>/tmp/$(basename $0)
mencoder "mf://*.jpg" -mf fps=25 -o ${prefixe}$(date +%s).avi -ovc x264 -lavcopts  vcodec=h264
zenity --info --title="avi créer" --text="`echo $texte`"
fi

on clique sur un fichier machin.jpg
le programme recherche tous les fichiers .jpg dans le répertoire et crée le fichier machinUNCODE.avi, on affiche un truc, on crée le fichier /tmp/machin où on écrit la commande effectuée

J’ai pas mencoder:

Package mencoder is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source

E: Package ‘mencoder’ has no installation candidate

C’est pour ça que je voulais utiliser avconv. je desespère, ce que je comprends pas c’est que la commande a la fin m’affiche: video:118712kB audio:0kB other streams:0kB global headers:0kB muxing overhead: unknown

et 118712kB ca ferait 118,712mo et pas une video de 40kb qui fonctionne pas

salut
effectivement j’avais âs bien lu
mais ta commende utilise mjpeg
chez moi ca utilise x264
Metadata:
encoder : Lavf56.25.101
Stream #0:0: Video: h264 ([33][0][0][0] / 0x0021), yuv444p, 960x540 [SAR 1:1 DAR 16:9], q=-1–1, 10 fps, 10240 tbn, 10 tbc
Metadata:
peut etre pourrais-tu installer x264 ( video surr http://www.dindoun.lautre.net/spip.php?article64 )
encoder : Lavc56.1.0 libx264

Je l’ai non:
avconv -codecs | grep h264
avconv version 11.8-6:11.8-1~deb8u1, Copyright © 2000-2016 the Libav developers
built on Oct 1 2016 07:16:29 with gcc 4.9.2 (Debian 4.9.2-10)
DEV.LS h264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (encoders: libx264 )

Après je ne sais pas comment l’utiliser

j’ai lerreur:
Error while opening encoder for output stream #4634:0 - maybe incorrect parameters such as bit_rate, rate, width or height

Pour la commande:
avconv -i *.jpg -r 24 -c:v libx264 timelapse.mp4

EDIT: j’ai réussi!!!
J’ai fait:
avconv -f image2 -i img-%d.jpeg -r 10 timelapse.mp4

Par contre ça m’oblige a renommer toute mes images a chaque fois et je trouve ça galère, ya pas mieux ?

héhé
en fait
img-%d.jpeg peut etre remplacé par le nom de tes propres fichiers
par exemple avconv -i ‘02-B-%04d.png’ -r 10 out.mp4 regroupe les fichiers
02-B-0000.png ; 02-B-0001.png ; 02-B-0002.png …
car %04d signifie je prend des nombres de 0000 à 9999 avec des 0 devant ( on écrit 0050 et pas 50 )

Mais je dois quand même les renommer si mes images ont des noms comme ça ?

EDIT:
Voila le code que j’ai fait:

Il faudrait que je l’exécute a 23h59 comme ça j’aurais la bonne date dans le nom du fichier^^
Par contre la vidéo va très vite on peut faire avancer les images plus lentement ? C’est sans doute le paramètre -r 5 a modifier ou que j’ai pas assez d’image pour le test mais ça va trop vite

EDIT: projet résolut

sinon j’utilise souvent blender pour un travail simple sur les vidéos, images.

Moi je voulais que chaque soir une vidéo soit créer avec les images automatiquement et que ça aille pas trop vite genre une image par seconde et j’ai réussi et y envoyer sur dropbox.les tutos ne sont pas très clair je trouve.

Mon seul problème c’est que théoriquement je dois faire un screen par caméra autrement le délais entre chaque envoie sera trop long car mauvais débit chez moi et je veux pas un trop gros délais entre chaque image.
Il faudrait aussi que je fasse un autre script amélioré qui regroupe toutes les camera et qu’avec une boucle je crée chaque vidéo et ça j’ai pas encore essayé.

Bref j’ai réussi pratiquement tout ce que je voulais faire et c’est top et ça reste à améliorer

Dernière chose:
que veut dire cette erreur: [image2 @ 0x1761a60] max_analyze_duration 5000000 reached
?