Bon, je confirme que ça marche bien.
surtout que j avais aucune idée de la facon de la réaliser
Ben moi non plus !
Lancement de la génération de jpeg à 25 images par seconde :
Code : Tout sélectionner
raspivid -n -t 0 -b 500000 -fps 25 -w 250 -h 250 -o - | gst-launch-1.0 fdsrc ! video/x-h264,framerate=25/1,stream-format=byte-stream ! decodebin ! videorate ! video/x-raw,framerate=25/1 ! videoconvert ! jpegenc ! multifilesink max-files=100 location=/run/shm/automate/run/img_%02d.jpg &
Ensuite, en python, sélection de l'image la plus récente....
Code : Tout sélectionner
def get_oldest_file(files, _invert=False):
""" Find and return the oldest file of input file names.
Only one wins tie. Values based on time distance from present.
Use of `_invert` inverts logic to make this a youngest routine,
to be used more clearly via `get_youngest_file`.
"""
gt = operator.lt if _invert else operator.gt
# Check for empty list.
if not files:
return None
# Raw epoch distance.
now = time.time()
# Select first as arbitrary sentinel file, storing name and age.
oldest = files[0], now - os.path.getctime(files[0])
# Iterate over all remaining files.
for f in files[1:]:
try:
age = now - os.path.getctime(f)
except:
continue
if gt(age, oldest[1]):
# Set new oldest.
oldest = f, age
# Return just the name of oldest file.
return oldest[0]
J'observe une certaine latence, que je n'ai pas mesurée. Pour la baisser : baisser la taille du buffer côté raspivid, et baisser le nombre de fichiers (ici 100) pour que l'algo python de recherche du plus récent soit plus rapide (de l'ordre de 0.15s pour 100 fichiers).
EDIT : pour trouver le fichier le plus recent, un script bash sera surement plus performant...
Cdt.