Differenze tra le versioni di "Appunti per un sistema di video, sorveglianza e streaming, indipendente"
Riga 151: | Riga 151: | ||
: (ricordo che serve: aptitude install browser-plugin-vlc) | : (ricordo che serve: aptitude install browser-plugin-vlc) | ||
+ | == Test doppia camera (Onboard & USB) == | ||
− | ' | + | Ho tentato un test con motion sulla camera USB (il motion originale, quello che usa il device /dev/videoX) e lo steaming con la camera onboard. |
+ | Il raspberry e` "per il collo", ma sembra funzionare, il difficile e` stato trovare una webcam USB che non facesse "sedere" l'alimentazione del Raspberry Pi (ho usato una di quelle camere spia da automobile, non mi ricordo il tipo, se lo trovo lo scrivero`). | ||
+ | |||
+ | [[File:RPi2CamTop.png|480px]] | ||
+ | |||
+ | |||
+ | |||
+ | == Riferimenti == | ||
http://www.raspberrypi.org/phpBB3/viewtopic.php?f=43&t=45368&sid=50671630477deebefaa761767eaeaefb | http://www.raspberrypi.org/phpBB3/viewtopic.php?f=43&t=45368&sid=50671630477deebefaa761767eaeaefb |
Versione delle 12:15, 23 nov 2013
L'idea 'finale' e`/sarebbe, ottenere un sistema che sia indipendente, adattabile alle esigenze di ogniuno ed anche personalizzabile, diciamo un sistema di "video" completo e anche di piu`.
Network
Probabilmente non si e` notato, ma iniziamo da qua:
- Raspberry Pi Access Point con autenticazione WEP2, DNS e Firewall
- Questo e` stato realizzato per poter avere un sistema collegabile alla rete di casa/ufficio e controllabile da questa, ma non solo, il Raspberry Pi con la sua Onboard Camera deve [anche] essere raggiungibile in WiFi se desideriamo posizionarlo dove non e` presente una rete cablata, e raggiungibile solo tramite autenticazione (non vorrete che qualcuno vi spii o che veda che lo spiate). E` anche possibile utilizzare il Raspberry Pi come Access Point, quindi, potete anche usarlo per collegarvi ad una rete cablata. Insomma, ho cercato una soluzione che fosse di connessione a 360 gradi (piu` o meno).
Video motion
Il secondo punto e` stato implementare la soluzione di videosorveglianza motion-mmal:
- Motion con Raspberry Pi Onboard Camera
- Mi sono fermato alla sola registrazione video/foto sulla SD Card in caso di rilevazione di movimento, come scritto all'inizio, questa e` la soluzione 'indipendente', tipo lasciare tutta la notte il sistema acceso per monitoraggio scollegato da qualsiasi rete e magari collegato ad una batteria/ups di alimentazione.
Streaming
Be`, non e` detto che lo si voglia utilizzare solamente in questo modo, possiamo anche fare qualcos'altro, nelle modalita` d'uso ho previsto anche quella di streaming, dopo svariate prove ho trovato i parametri a me piu` congeniali/funzionali, attualmente e` pilotata in "manuale", ma potrebbe essere un'idea realizzarla con una interfaccia web.
Descrivero` (cerchero`) come ho strutturato ora il modo d'uso per "switchare" da uno all'altro tipo.
Modifiche e/o predisposizioni al file "/etc/rc.local" per l'esecuzione automatica del "firewall", del "motion" e dello "stream" (alcune gia` disattivate, capirete perche`):
#!/bin/sh -e # # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will "exit 0" on success or any other # value on error. # # In order to enable or disable this script just change the execution # bits. # # By default this script does nothing. # Print the IP address _IP=$(hostname -I) || true if [ "$_IP" ]; then printf "My IP address is %s\n" "$_IP" fi # My add: iptables if [ -x /etc/init.d/iptables ];then . /etc/init.d/iptables start fi #if [ -x /home/pi/motion-mmalcam/motion ];then # su pi -c "/home/pi/motion-mmalcam/motion -n -c /home/pi/motion-mmalcam/motion-mmalcam.conf &" #fi #while true; do # raspivid -w 1920 -h 1080 -fps 12 -rot 180 -t 0 -o - | nc -l 10301 #done exit 0
Per "comandare" il Raspberry Pi ho pensato di utilizzare "ssh" (tralascio tutti i 'fallimenti' e le prove del come sono arrivato qua).
Per prima cosa ho scambiato la chiave di autenticazione, cosicche` non debba piu` inserire la password, confermando sempre con enter a qualsiasi richiesta:
ssh-keygen
Poi l'ho trasferita (vi chiedera` la password del Raspberry Pi):
ssh-copy-id pi@<NomeDelRaspberriPi o IP>
Ho avuto qualche difficolta` con i comandi "kill", quindi ho predisposto un file "/home/pi/motion-mmalcam/motion-kill.sh", questo e` il contenuto:
#!/bin/bash kill -6 $(pidof motion)
Se non lo avete fatto, rendetelo eseguibile:
chmod 700 /home/pi/motion-mmalcam/motion-kill.sh
Sul computer che uso per il controllo ho creato tre files eseguibili (ovviamente la directory "/home/$USER/bin" e` nel path di ricerca degli eseguibili).
- "/home/$USER/bin/RaspberryPi-motion.sh"
- L'avvio di motion-mmal
#!/bin/bash # Stop motion /home/$USER/bin/RaspberryPi-motion-stop.sh # Start motion ssh pi@<NomeDelRaspberriPi o IP> /home/pi/motion-mmalcam/motion -n -c /home/pi/motion-mmalcam/motion-mmalcam.conf &
- "/home/$USER/bin/RaspberryPi-motion-stop.sh"
- Lo stop di motion-mmal
#!/bin/bash # Stop motion ssh pi@<NomeDelRaspberriPi o IP> /home/pi/motion-mmalcam/motion-kill.sh sleep 2
- "/home/$USER/bin/RaspberryPi-stream.sh"
- Avvia lo streaming fra i due pc, ed il client video sul pc locale
#!/bin/bash # Stop motion /home/$USER/bin/RaspberryPi-motion-stop.sh # Start camera e streaming (in ascolto, switch -l di 'nc') ssh pi@<NomeDelRaspberriPi o IP> "raspivid -w 640 -h 360 -fps 12 -rot 180 -t 0 -o - | nc -l 10301" & sleep 2 # Start local player nc <NomeDelRaspberriPi o IP> 10301 | mplayer -fps 30 -demuxer h264es -
WEB Streaming
Due soluzioni in "prova" (ovviamente i comandi sono generalizzati, dimensioni geometriche, frame per secondo e rotazioni immagine sono da 'personalizzare' secondo esigenza).
- Una che trasmette direttamente, ma sovraccarica un po` il Raspberry Pi
- raspivid -t 0 -o – | cvlc -vvv stream:///dev/stdin --play-and-exit --sout '#standard{access=http,mux=ts,dst=:8080}' :demux=h264
- Un'altra che trasmette ad un secondo computer che si occupa poi di fare stream
- raspivid -t 0 -o – | nc [IP address of computer] 5001
- nc -l -p 5001 | cvlc -vvv stream:///dev/stdin --play-and-exit --sout '#standard{access=http,mux=ts,dst=:8080}' :demux=h264
- Altra versione con ascolto invertito
- raspivid -t 0 -o – | nc -l 5001
- nc [IP address of Raspberry Pi] 5001 | cvlc -vvv stream:///dev/stdin --play-and-exit --sout '#standard{access=http,mux=ts,dst=:8080}' :demux=h264
- Attuale comando per streaming in uso, sembra funzionare sufficientemente bene, il ritardo e` di circa 2 secondi e la cpu del Raspberry Pi sembra essere intorno al 20%
- raspivid -rot 180 -w 640 -h 360 -fps 31 -t 0 -o - | cvlc -vvv stream:///dev/stdin --sout '#standard{access=http,mux=ts,dst=:8080}' :demux=h264
- Inserimento in una pagina web
- <embed autoplay="yes" height="360" loop="no" target="http://<IP address Raspberry Pi>:8080/" type="application/x-vlc-plugin" width="640"></embed>
- Risultato (visibile ad orari random)
- http://3ns.allalla.com/drupal/content/prove-di-streaming-con-raspberry-pi-e-camera-module
- (ricordo che serve: aptitude install browser-plugin-vlc)
Test doppia camera (Onboard & USB)
Ho tentato un test con motion sulla camera USB (il motion originale, quello che usa il device /dev/videoX) e lo steaming con la camera onboard. Il raspberry e` "per il collo", ma sembra funzionare, il difficile e` stato trovare una webcam USB che non facesse "sedere" l'alimentazione del Raspberry Pi (ho usato una di quelle camere spia da automobile, non mi ricordo il tipo, se lo trovo lo scrivero`).
Riferimenti
http://www.raspberrypi.org/phpBB3/viewtopic.php?f=43&t=45368&sid=50671630477deebefaa761767eaeaefb
http://www.mybigideas.co.uk/RPi/RPiCamera/
http://www.recantha.co.uk/blog/?p=4165
http://www.videolan.org/doc/vlc-user-guide/en/ch07.html#id345707