nree Skrevet 18. februar 2011 Del Skrevet 18. februar 2011 (endret) Scriptet skal hente ett bilde (en frame) fra en mjpeg stream og lagre denne til cam.jpg og i en mappe for permanent lagring, siden dette scriptet kjøres hvert minutt som cron job skal scriptet kjøres 75 ganger (0.8 fps EDIT: 1.25 fps) for deretter å bli kjørt på nytt av cron. <?php function slaap($seconds) { $seconds = abs($seconds); if ($seconds < 1): usleep($seconds*1000000); else: sleep($seconds); endif; } $i = 0; echo "<ul>\n"; while($i <= 75) { $camurl="http://admin:**@**/img/video.mjpeg"; $boundary="\n--"; $f = fopen($camurl,"r"); $path = "****"; if($f) { while (substr_count($r,"Content-Length") != 2) $r.=fread($f,512); $start = strpos($r,'ÿ'); $end = strpos($r,$boundary,$start)-1; $frame = substr("$r",$start,$end - $start); $time = time(); $date = date("Y-m-d"); // Sjekker om datomappe finnes, hvis ikke opprett og chmod if(!file_exists("$path/save/$date")) { mkdir("$path/save/$date"); chmod("$path/save/$date", 0777); echo "<li>Opprettet mappe save/$date</li>\n"; } // Lagre for logg $fh1 = fopen("$path/save/$date/cam-$date-$time.jpg", "w"); if(fwrite($fh1, $frame)) { echo "<li>Lagret save/$date/cam-$date-$time.jpg</li>\n"; } fclose($fh1); if(chmod("$path/save/$date/cam-$date-$time.jpg", 0777)) { echo "<li>Chmod save/$date/cam-$date-$time.jpg 0777</li>\n"; } // Lagre siste versjon $fh2 = fopen("$path/save/cam.jpg", "w"); if(fwrite($fh2, $frame)) { echo "<li>Lagret cam.jpg</li>\n"; } fclose($fh2); if(chmod("$path/save/cam.jpg", 0777)) { echo "<li>Chmod cam.jpg 0777</li>\n"; } } fclose($f); $i++; slaap(0.8); } echo "</ul>\n"; ?> Det som nå skjer er at samme bildet blir lagret 75 ganger, så kjører cron scriptet på nytt, henter nytt bilde fra kameraet og lagrer dette bildet 75 ganger. Er det noen som ser grunnen til at bildet ikke blir oppdatert fra kameraet inni while løkken? Endret 14. mars 2011 av Goggen90 Lenke til kommentar
xqus Skrevet 19. februar 2011 Del Skrevet 19. februar 2011 (endret) Jeg anar det er pga. du aldri nullstiller $r i while løkken. Hva skjer dersom du prøver å sette $r = '';helt i starten av while løkken? Endret 19. februar 2011 av xqus Lenke til kommentar
MirusMentis Skrevet 20. februar 2011 Del Skrevet 20. februar 2011 Jeg skjønner ikke hvordan du får 75 bilder i løpet av ett minutt til å være 0.8 fps. Blir det ikke 1.25? Lenke til kommentar
nree Skrevet 21. februar 2011 Forfatter Del Skrevet 21. februar 2011 Jeg anar det er pga. du aldri nullstiller $r i while løkken. Hva skjer dersom du prøver å sette $r = '';helt i starten av while løkken? Tusen takk, den hadde jeg oversett Jeg skjønner ikke hvordan du får 75 bilder i løpet av ett minutt til å være 0.8 fps. Blir det ikke 1.25? 60 sek / 0.8 fps = 75 stk Lenke til kommentar
Ernie Skrevet 21. februar 2011 Del Skrevet 21. februar 2011 Jeg skjønner ikke hvordan du får 75 bilder i løpet av ett minutt til å være 0.8 fps. Blir det ikke 1.25? 60 sek / 0.8 fps = 75 stk Feil. I dette tilfellet skal du gange, ikke dele. Du har 0.8 bilder pr. sekund. For å få bilder pr. minutt må du gange 0.8 med 60. I løpet av et minutt får du altså 48 bilder. Lenke til kommentar
nree Skrevet 22. februar 2011 Forfatter Del Skrevet 22. februar 2011 Takk for det, semtex og Ernie. Dere har selfølgelig helt rett. 1.25 fps var det jeg ville ha, altså litt over 1 bilde pr sek Scriptet venter 0.8 sekund mellom hver gang de henter bildet, da blir det 1.25 fps og 60 sek totalt (utenom tiden det tar for scriptet å kjøre). Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå