Differenze tra le versioni di "Appunti per un sistema di video, sorveglianza e streaming, indipendente"
Riga 148: | Riga 148: | ||
: <embed autoplay="yes" height="360" loop="no" target="http://<IP address Raspberry Pi>:8080/" type="application/x-vlc-plugin" width="640"></embed> | : <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) | ; Risultato (visibile ad orari random) | ||
− | : | + | : ''Momentaneamente sospeso'' --[[Utente:Dave4rp|Dave4rp]] ([[Discussioni utente:Dave4rp|discussioni]]) 09:24, 25 mar 2014 (CET) |
: (ricordo che serve: aptitude install browser-plugin-vlc) | : (ricordo che serve: aptitude install browser-plugin-vlc) | ||
Versione delle 10:24, 25 mar 2014
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)
- Momentaneamente sospeso --Dave4rp (discussioni) 09:24, 25 mar 2014 (CET)
- (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 streaming 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 camera HD DVR).
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