Bonjour Benoit,
Je viens de tenter à nouveau le passage de la 4.40.1 à la 4.44.2 mais le pb d'entête des jpeg est toujours d'actualité.
Pourrais-tu préciser dans quel répertoire doit se trouver le script upload.php et snapshot.sh ?
En fait, je ne comprend pas bien où il faut mettre ton script ..., faut-il que je l'intègre dans mon /etc/snapshot.script (moyennant les adaptations nécessaires) ?
Merci d'avance, à bientôt
EDIT:
Après réflexion, et si j'ai bien tout compris, il me semble que snapshot.sh contienne le code ci-dessous et doivent être ajouté dans le répertoire de base de la caméra (.\)
L'objectif de snapshot.sh est de rebooter la caméra en cas d'échec répétitif d'exécution du script upload.php.
#!/bin/sh
#check if the counter file doesn't exist (first call of the script)
if [ ! -e /tmp/nb_upload_err.txt ]; then
#create the file
echo "0" > /tmp/nb_upload_err.txt
#log
logger -p user.crit "Upload script init"
fi
#get counter value
COUNTER=$(cat /tmp/nb_upload_err.txt)
#switch the led to yellow
statusled off
statusled yellow
#get the image
shttpclient -o /tmp/image.jpg -u root -w PASSWORD_CAM http://127.0.0.1/axis-cgi/jpg/image.cgi?resolution=640480
#switch the led to green
statusled green
#upload the image
shttpclient -i /tmp/image.jpg http://votre.site.web/webcam/upload.php
#if upload has been succesfull
if [ $? = 0 ]; then
# and if counter is not nul
if [ $COUNTER -ne 0 ]; then
#reset it
echo "0" > /tmp/nb_upload_err.txt
logger -p user.crit "Upload is OK : Reset Upload Error Counter"
fi
#switch the led off
statusled off
#if upload has raised an error
else
#switch the led to red
statusled red
#increment the counter
COUNTER=$(($COUNTER + 1))
echo $COUNTER > /tmp/nb_upload_err.txt
logger -p user.crit "Nb Erreur Upload $COUNTER"
#if the error counter raise 10
if [ $COUNTER -ge 10 ]; then
#reboot the cam
logger -p user.crit "Reboot"
reboot
fi
fi |
Pour ce qui est de upload.php, je pense qu'il ne doit pas être mis dans la caméra mais sur un serveur web équipé de PHP.
<?php
echo "upload OK";
//sauvegarde des entêtes
$file_handle=fopen("headers-".date("Y-m-d_His" ).".txt",'w');
foreach($_SERVER as $key=>$value) {
fwrite($file_handle,"$key: $value \n" );
}
fclose($file_handle);
//sauvegarde de l'image
$file_handle=fopen("axis-".date("Y-m-d_His" ).".jpg",'w');
//ajout de l'entête manquante avec la version 4.44 du soft axis
fwrite($file_handle,chr(0xff).chr(0xd8).chr(0xff).chr(0xe0).chr(00));
fwrite($file_handle,file_get_contents('php://input'));
fclose($file_handle);
//suppression des fichiers vieux de plus de 1h
$dirhandle = opendir("." );
while (($file = readdir($dirhandle)) !== false)
{
$ext = strtolower(strrchr($file,"." ));
if(is_file("$file" ) )
if ( ($ext==".jpg" ) && (filemtime("$file" ) <= (mktime()- 3600)) ) unlink("./$file" );
if ( ($ext==".txt" ) && (filemtime("$file" ) <= (mktime()- 3600)) ) unlink("./$file" );
}
closedir($dirhandle);
return $result;
?> |
La correction de l'entête des JPEG se fait donc par l'exécution du script upload.php et ne convient pas si on envoie les photos directement par FTP depuis la caméra. Il faudrait pouvoir corriger les entêtes directement dans les scripts de la caméra.
Message édité par Nicolas 2 le 01-04-2010 à 15:20:51