usare una VStarcam ipcamera su Linux con vlc o mplayer

La webcam in questione è una IP camera outdoor, modello T7833WIP-X3, economica e ben fatta, l’unico neo è che per sfruttarla a pieno occorrerebbe usare internet Explorer installando un apposito ocx.
Usando Wireshark e guardando i sorgenti dell’interfaccia web alla fine ho tirato fuori le url dello stream h264 e per i parametri di configurazione.
La webcam ha due url per lo streaming: una in formato mjpeg, che arriva fino a 640×480, e l’altra per l’h264, che consente di arrivare a 720P ovvero 1280×960.

Iniziamo con un set di comandi per settare le caratteristiche dello stream, comandi che potranno essere lanciati da un terminale.

Ho usato utente e password di default nei vari esempi, cambiateli secondo i vostri settaggi

formato video

curl "http://<starmcam ip address>/camera_control.cgi?loginuse=admin&loginpas=888888&param=0&value=<formato video>"
Dove <formato video>  0  (vga) 1 (qvga) 3 ( 3 720P  )

Es.
curl "http://starcam/camera_control.cgi?loginuse=admin&loginpas=888888¶m=0&value=0"

La webcam dovrebbe rispondere con
var result="ok";

bitrate

curl "http://<starmcam ip address>/camera_control.cgi?loginuse=admin&loginpas=888888&param=13&value=<bitrate in kbps>"
<bitrate in kbps> 
formato HD: 128,256,384,512,640,768,896,1024,1280,1536,1792,2048,2560,3072,3584,4096 
formato VGA:
128,256,384,512,640,768,896,1024
formato QVGA:
128,256,384,512

Es.
curl "http://starcam/camera_control.cgi?loginuse=admin&loginpas=888888¶m=13&value=384"

La webcam dovrebbe rispondere con
var result="ok";

 

Frame rate

curl "http://<starmcam ip address>/camera_control.cgi?loginuse=admin&loginpas=888888&param=6&value=<fps>"
<fps> 1...30


Es.
curl "http://starcam/camera_control.cgi?loginuse=admin&loginpas=888888¶m=6&value=25"

La webcam dovrebbe rispondere con
var result="ok";

 

A questo punto possiamo visualizzare lo stream mjpeg con il comando

curl -s "http://starcam.home.lan/videostream.cgi?user=admin&pwd=888888" | vlc -
oppure
vlc "http://starcam.home.lan/videostream.cgi?user=admin&pwd=888888"

oppure lo stream h264

curl -s "http://starcam.home.lan:80/livestream.cgi?user=admin&pwd=888888&streamid=0&audio=0&filename=" | mplayer -nocache -vc ffh264 -demuxer h264es -fps <fps> -noextbased -

Dove <fps> deve essere quello che abbiamo settato con il comando  descritto prima

La url per lo “snapshot” è questa


http://starcam.home.lan/snapshot.cgi?user=admin&pwd=888888

Vi sono poi tutta una serie di comandi addizionali per settare luminosità, contrasto, per spostare la webcam etc che possono essere facilmente dedotti analizzando il codice html/javascript dell’interfaccia web e che a richiesta posso mettere nel post, quello che mi interessava di più era scoprire la url e come visualizzare lo stream h264

Ad ogni modo per praticità ho scritto un programmino in python che consente di comandare l’ ipcam con una Linux box.
L’installazione è semplice: basta copiarlo e renderlo eseguibile

wget http://fabrizio.zellini.org/cam/cam.py
chmod +x cam.py

Ho usato pygtk, mplayer e curl per cui installate eventualmente le dipendenze necessarie.

Poi si può lanciare così

./cam.py

Va necessariamente specificato almeno l’indirizzo del’ ipcam, il comando

./cam.py -h

mostra una schermata con le opzioni disponibili
Es. di utilizzo

./cam.py -a 192.168.0.200 -m VGA -b 384 -f 25

Verranno aperte due finestre, una con una bottoniera per spostare la webcam e fare zoom in e out, l’altra con lo streaming h264