Kamera www wrzuca mi co ok 5 sek obrazek output.jpeg na zewnętrzny serwer ftp. Zdjęcia oglądam "live" na stronie ze skryptem (odświeżanie co 3 sek):
1.
<script language=javascript>
2.
var image="output.jpeg";
3.
var refreshrate=3;
4.
var imgwidth=320;
5.
var imgheight=240;
6.
function refresh(){
7.
document.images["pic"].src=image+"?"+new Date();
8.
setTimeout('refresh()', refreshrate*1000);}
9.
document.write('<img src="'+image+'"height="'+imgheight+'"width="'+imgwidth+'" name="pic">');if(docu
10.
ment.images)window.onload=refresh;
11.
</script>
Wszystko jest ok, ale chciałbym tez archiwizować stare zdjęcia. Do tej pory robię to tak, iż skrypt bash odpalany co 1 min w cron kopiuje mi zdjęcia do folderu, dodając im nazwy wg dat:
#!/bin/bash
KATALOG=$HOME/www/
cp $KATALOG"output.jpeg" $KATALOG"fotki/"$(date '+%Y-%m-%d_%H:%M')\.jpeg
Dzięki temu mam archiwizowane zdjęcia co 1 min (jest to maxymalna rozdzielczość czasowa crona = 1 min).
Zdjęcia uzyskują nazwy w postaci:
2010-12-26_10:25.jpeg
Martwi mnie jedna rzecz. Chciałbym archiwizacji nie co 1 min ale co 5 sek.Mianowicie kamera wysyła zdjęcia co 5 sek (czasami co 10). Mógłbym oczywiście wysyłać z kamery na ftp zdjęcia z nazwami w postaci (zamiast output.jpeg):
2010-12-26_10:25:05.jpeg
2010-12-26_10:25:10.jpeg
2010-12-26_10:25:15.jpeg
itd.
Tylko teraz:
1.Jak te zdjęcia odświeżać na stronie w miarę wydajnie i szybko ( a więc bez skryptu szukającego "najmłodszego" zdjęcia w katalogu, wydaje mi się ze to długotrwały proces)?
Do tej pory skrypt po prostu odświeżał na stronie zawsze output.jpeg (archiwizacja przez cron co 1 min, a wiec kopiowanie zdjecia z nadaniem mu nazwy wg daty do katalogu /fotki) a teraz archiwizacja miałaby miejsce per se bo kamera wysyłała by zdjęcia w postaci:
2010-12-26_10:25:05.jpeg
Problem z odświeżaniem bieżącego zdjęcia na stronie www, no bo jak wyświetlić z katalogu , w którym jest kilkaset zdjęć w powyższym formacie to aktualne, najnowsze, właśnie wrzucone przez kamerę na ftp?
Pytanie to zadaję w tym dziale bo problem wg mnie jest złożony i z zakresu wielu języków programowania.
BTW. Zdjęcia wrzucam programem ncftpd:
ncftpput -V -f /root/login.cfg -S .tmp /strony/www /tmp/output.jpeg
gdzie: /root/login.cfg to parametry logowania do serwera ftp, /tmp/output.jpeg to miejsce utworzenia zdjęcia przez kamerę.
Skrypt odpalany co 5 sek przez demona fswebcam robiącego zdjęcie.
Ewentualnie proszę o inne pomysły jak archiwizować zdjęcia co 5 sek, z możliwością interaktywnego wyświetlania zdjęcia ostatniego co 5 sek na stronie.
Mozna oczywiście wysyłać 2 te same plki ale o inych nazwach:
refresh/output.jpeg i archiwum/2010-12-26_10:25:05.jpeg
tylko , że to generuje 2 razy większy ruch...
teraz sobie pomyślałem, że gdyby ncftpput wysyłał 1 zdjęcie source.jpeg ale kopiował je tak jak wyżej w 2 miejsca to ruch byłby ten sam, tylko jak to zrobic przy pomocy ncftpput?[/code]