Record e' il programma che viene utilizzato per schedulare
registrazioni dallo stream webcam. Fa parte di una serie di
tool (script bash) chiamati WCS (WebCam Stream) che,
appoggiandosi al software VLC, realizzano l'acquisizione e la
conversione di uno stream proveniente da una network webcam,
per generare piu' flussi stream in uscita a diverse velocita'.
Per le prove ho utilizzato una Axis 232D
(http://www.axis.com/it/prodotti/camera/camera232D.htm),
che emette uno stream codificato in mpeg4, convertendo il
tutto in formato .asf, generando così due stream http (uno a
256kb/s e uno a 1024kb/s) in uscita, utilizzando infine il
tool "record" per la schedulazione di registrazioni.
L'idea e' quella di avere un server che si occupa di acquisire
lo stream dalla webcam e di ripubblicarlo su due flussi in
uscita; questo server, inoltre, può essere facilmente
configurato per effettuare delle sessioni di registrazione del-
le immagini provenienti dalla webcam.
Ecco una descrizione piu' dettagliata dei tool in gioco:
- /usr/sbin/wcs_localstrem: Acquisisce lo stream dalla webcam e
crea uno stream verso 127.0.0.1:1234
in formato .asf
- /usr/sbin/wcs_250kstream: Prende lo stream locale e lo ripubblica
in uscita sulla porta :8080 utilizzando
il protocollo http, a 256kb/s
- /usr/sbin/wcs_1024kstream: Prende lo stream locale e lo ripubblica
in uscita sulla porta :8081 utilizzando
il protocollo http, a 1024kb/s
- /usr/sbin/wcs_record: Questo tool aggancia lo stream a 256kb/s e lo
salva sul file /tmp/rec_current.asf
Questi quattro script (che sono quelli che direttamente comandano VLC)
raramente si andranno ad utilizzare a mano (ed in effetti per far
funzionare l'infrastruttura non vanno toccati). L'unica modifica
richiesta (almeno fino a quando non parametrizzo tutto
dei parametri quali indirizzi IP e porte.
Passiamo infine ai due tool di più alto livello:
- /usr/sbin/ssrecord: Lanciato senza parametri si occupa di avviare una
registrazione (se non ce ne sono in corso) o di
terminare e salvare su disco esterno una registra-
zione in corso (nel caso sia gia' stata avviata)
Anche questo tool può non essere utilizzato direttamente, anche se per
fare prove può essere utilizzato lanciandolo da riga di comando.
- /usr/sbin/record: Questo tool (quello che andrebbe utilizzato per
schedulare le registrazioni) permette di impostare
settare un'arco di tempo nel quale le immagini
devono essere registrate.
Infine, lo script /etc/init.d/webcamstreaming permette di avviare/stoppare
l'acquisizione e il rilascio dei flussi di streaming.
Per informazioni sui singoli comandi rimando all'help degli stessi ed ai
commenti presenti nel codice.
INSTALLAZIONE
-----------------------------------------------------------------------
Semplicemente spacchettare l'archivio ed entrare nella directory
Code: Select all
$ tar zxvf wcstoolkit.tar.gz
$ cd wcstoolkitA questo punto, diventare root e sistemare i permessi e le proprietà
Code: Select all
$ su
Password:
# chown root:root wcs_* webcamstreaming *record
# chmod 755 wcs_* webcamstreaming *recordPer finire copiare i file nella loro posizione
Code: Select all
# cp webcamstreaming /etc/init.d/
# cp wcs* /usr/sbin/
# cp record /usr/sbin/
# cp ssrecord /usr/sbin/L'installazione e' così completata.
ESEMPIO DI FUNZIONAMENTO
------------------------------------------------------------------------
Una volta installata l'infrastruttura e posizionati gli script nella
posizione corretta, avviare i 3 flussi di streaming con:
Code: Select all
# /etc/init.d/webcamstreaming startPotete controllare direttamente da un client se i flussi sono attivi
aprendo una console e lanciando vlc
Code: Select all
$ vlc http://ip.del.vostro.server:8080oppure
Code: Select all
$ vlc http://ip.del.vostro.server:8081A seconda che vogliate visualizzare lo stream a 256k o quello a 1024k.
Ora gli stream sono attivi. Mettiamo di dover registrare dalle 12:00
alle 13:00 di oggi; sul server daremo:
Code: Select all
# record -start 12 -stop 13Cosa fa 'record'? Semplicemente va ad estrarre tutte le informazioni
necessarie al settaggio del nome del file e schedula in cron due
esecuzioni di /usr/sbin/ssrecord, uno all'orario di avvio ed una
all'orario di stop.
Come dicevo sopra, il primo avvio di ssrecord fara' partire la
registrazione delle immagini provenienti dalla webcam ed eliminerà la
entry dalla crontab appena eseguita. Al secondo avvio, ssrecord
sposterà la registrazione in /store/history/.... e eliminerà anche la
seconda entry dalla crontab.
CONCLUSIONI
----------------------------------------------------------------------------
Questo lavoro ho dovuto farlo per un cliente, ma penso che possa in
alcuni casi essere utile; per questo motivo ho deciso di renderlo pubblico
e liberamente scaricabile e modificabile. Se avete migliorie o suggerimen-
ti saranno bene accetti.
Il programma lo potete wgettare così'
Code: Select all
$ wget http://mouser.altervista.org/software/tool/wcstoolkit.tar.gzmouser

