Sulla Programmazione

Quattro chiacchere sulla programmazione e sulle bit-tecnologie con Fabrizio Cipriani

Streaming della webcam su internet con Ubuntu (e controllo da Android)

Mettere in piedi un piccolo sistema di video-sorveglianza non è una impresa poi così difficile possedendo una webcam economica, una connessione ad Internet e Ubuntu. Vediamo un paio di semplici e utili strumenti per assumere il controllo della propria web-cam.

Motion

Motion è un semplice, notevole software di motion detection per Linux. Motion ci permette di collegarci alla nostra webcam attraverso una pagina internet, e di salvare una immagine su disco tutte le volte che viene individuato un movimento.

Avviamo l'installazione:

fc@ubuntu:~$ sudo apt-get install motion

Una volta eseguita l'installazione, creiamo il file di configurazione:

fc@ubuntu:~$ mkdir ~/.motion
fc@ubuntu:~$ nano ~/.motion/motion.conf

Nell'editor di testo nano inseriamo:

webcam_port 8081
webcam_localhost off
target_dir ~/.motion

La prima linea indica su quale porta si attesta il server http di Motion, mentre la seconda elimina la restrizione che impedisce di aprire la connessione http a chiunque non sia localhost. target_dir indica il punto in cui saranno salvate le immagini.

Il dispositivo da cui Motion cattura il video di default è /dev/video0, volendone specificare un altro è sufficiente includere nel file di configurazione anche l'opzione videodevice.

Salviamo il file (CTRL-O e invio), usciamo da nano (CTRL-X) e lanciamo Motion:

fc@ubuntu:~$ motion

Siamo ora pronti a vedere cosa sta trasmettendo la nostra webcam, apriamo Firefox e digitiamo:

http://localhost:8081

Et voilà, ecco mostrata l'immagine ripresa dalla nostra webcam che si aggiorna ogni secondo.

(Update 18/06/2015: Chrome non è in grado di visualizzare uno stream MJPEG, e visualizza una pagina bianca. Occorre usare Firefox, o in alternativa inserire la url http://localhost:8081 in un tag <img> all'interno di un file html).

Possiamo usare l'ip pubblico del nostro pc e controllare la propria webcam da un qualsiasi computer connesso ad internet, o dal proprio smartphone. Questo ad esempio è quello che Motion mostra al mio cellulare Android:

Vlc

Se invece di una pagina html che si aggiorna ogni secondo volessimo un vero e proprio streaming, possiamo usare vlc media player. Lo installiamo con il comando seguente:

sudo apt-get install vlc

Una volta installato, avviamo la cattura lanciando il comando:

cvlc v4l2:// :v4l2-vdev="/dev/video0" --sout '#transcode{vcodec=mp2v,vb=200,width=640,heigh=480}:htt
p{mux=ts,dst=:8082}' --no-sout-audio

cvlc non è altro che la versione senza GUI di vlc.

Il resto dei parametri fondamentalmente indicano di usare Video For Linux 2, di prelevare il video da /dev/video0, di utilizzare come video codec mpeg-2, di utilizzare una video bitrate di 200Kb/s, di trasmettere una immagine larga 640 pixel ed alta 480, di trasmettere con protocollo http sulla porta 8082 usando l'mpeg-2 transport stream multiplexer (mux=ts), e di disabilitare lo streaming dell'audio.

Per fare un test dello streaming è sufficiente aprire un'altra istanza di vlc, dal menu "media" selezionare "open network stream", e inserire la url:

http://localhost:8082

Anche in questo caso, è possibile controllare lo streaming dal proprio smartphone installandosi l'app di Vlc per Android, il cui nome esatto nel momento in cui scrivo è "Vlc for Android Beta".

Una volta attivata l'app, si seleziona la voce di menu che permette di aprire un flusso di rete ed inserire l'indirizzo LAN o pubblico dello streaming:

Ed ecco il risultato:

Per chi volesse approfondire l'argomento rimanendo nel campo dell'Open Source, ZoneMinder è una alternativa più articolata e complessa a Motion, mentre per Windows esiste iSpy Connect.

Buona sorveglianza!

Comments