===== collegamento =====
ovvero come usare la "raspberry pi camera".\\
Per verificare il corretto collegamento eseguire il seguente comando:\\
raspistill -v -o test.jpg
Come si può immaginare viene salvata un'immagine "test.jpg"\\
la apriamo con un visualizzatore immagini e il risultato ci farà capire se tutto è ok.\\
All'esecuzione del comando si sarà anche acceso il led rosso anteriore che si attiva durante l'utilizzo della periferica.\\
In modo analogo è possivile registrare un video con il seguente comando:\\
raspivid -o video.h264 -t 10000
che registrerà in formato h264 un video di durata 10000 millisecondi ovvero 10 secondi.\\
===== attivazione periferica =====
per poter usare il modulo camera con altri programmi video è necessario attivarla come periferica video.\\
ossia dobbiamo vederla come device /dev/video0 \\
se la cerchiamo tra i device non la troveremo\\
Quindi è necessario usare il seguente comando per attivare il modulo:\\
sudo modprobe bcm2835-v4l2
infatti ora la potremo trovare come /dev/video0 1 2 ecc... nel caso di più dispositivi video\\
il precedente comando ha effetto fino al prossimo riavvio poi dovremo rieseguirlo per averla a disposizione\\
quindi editiamo il file /etc/modules e aggiungiamo in fondo bcm2835-v4l2 \\
===== programmi =====
Ora ci si può sbizzarrire utilizzando diversi software per fare test e video\\
==== motion ====
Il sistema più semplice per fare videosorveglianza è l'utilizzo di motion\\
apt-get install motion
Questo software permette di registrare video o scattare foto quando viene rilevato del movimento.\\
Esso se opportunamente configurato fa anche streaming video visualizzabile da remoto tramite browser o altro player video.\\
Tutto sta nel file di configurazione /etc/motion/motion.conf \\
Di default motion attende di essere mandato in esecuzione semplicemente con il comando motion\\
E vedremo che si accenderà il led anteriore della camera e inizierà a registrare immagini e video nel percorso di default /var/lib/motion \\
Occhio però che nel giro di poco tempo riempirà tutto lo spazio di archiviazione disponibile.\\
Infatti oltre a creare video scatta continuamente immagini e con il parametro "output_pictures" si può decidere se farglielo fare oppure no.\\
Altra sezione importante è quella relativa lo stream video per il controllo via web delle opzioni di motion e della visualizzazione delle immagini in live.\\
Di default non è possibile visualizzare lo stream video da un'altro PC\\
Per abilitarlo cambiare il parametro "stream_localhost" da "on" a "off" \\
In questo modo sarà possibile vedere lo streaming live sulla porta 8081 da un'altro PC.\\
La qulità di default dello streaming fa veramente schifo (1frame per secondo).\\
Però i video registrati sono effettivamente di qualità discreta.\\
Per migliorare la qualità dello streaming bisogna cambiare il parametro "stream_maxrate" da 1 ad almeno 10.\\
Questo però comporta un uso maggiore della rete che si può monitorare tramite l'installazione di uno di questi programmi da riga di comando:\\
iftop\\
bmon\\
In modo analogo è possibile attivare la visualizzazione delle opzioni per la gestione di motion via web\\
Per abilitarlo cambiare il parametro "webcontrol_localhost" da "on" a "off".\\
Infine dobbiamo dire che per rendere attivo all'avvio motion, bisogna mettere il parametro "daemon" a "on"\\
e inserire all'interno del fiel /etc/rc.local il comando motion in una nuova riga\\
==== ffmpeg ffserver ====
Questa soluzione prevede un server (ffserver) di streaming \\
e un codificatore che attiva il flusso (ffmpeg) \\
Bisogna preparare bene il file /etc/ffserver.conf \\
di default non funziona con la raspicam\\
quindi ho rinominato l'originale e ho copiato su internet questo:\\
Port 8090
# bind to all IPs aliased or not
BindAddress 0.0.0.0
# max number of simultaneous clients
MaxClients 10
# max bandwidth per-client (kb/s)
MaxBandwidth 1000
# Suppress that if you want to launch ffserver as a daemon.
NoDaemon
File /tmp/feed1.ffm
FileMaxSize 10M
Feed feed1.ffm
Format mpjpeg
VideoFrameRate 4
VideoSize 600x480
VideoBitRate 80
# VideoQMin 1
# VideoQMax 100
VideoIntraOnly
NoAudio
Strict -1
poi ho lanciato da root\\
ffserver -f /etc/ffserver.conf
che però mi lascia la consolle aperta\\
e poi\\
ffmpeg -v verbose -r 5 -s 600x480 -f video4linux2 -i /dev/video0 http://localhost:8090/feed1.ffm
e da browser http://ipraspberry:8090/test.mjpg \\
poi lo stesso http://ipraspberry:8090/test.mjpg anche su VLC come flusso di rete\\
e funziona pure su zoneminder:\\
sorgente: ffmpeg\\
percorso: http://ipraspberry:8090/test.mjpg \\
metodo remoto: RTP/Unicast \\
Il problema con queste prove è che la qualità fa schifo\\
Ma dalle ultime prove sembra che una grossa differenza l'abbia fatt il formato flv e il "VideoBitRate"\\
quindi una buona soluzione non ancora ottimale sarebbe la seguente:\\
Port 8090
# bind to all IPs aliased or not
BindAddress 0.0.0.0
# max number of simultaneous clients
MaxClients 10
# max bandwidth per-client (kb/s)
MaxBandwidth 1000
# Suppress that if you want to launch ffserver as a daemon.
NoDaemon
File /tmp/feed1.ffm
FileMaxSize 10M
launch ffmpeg -f video4linux2 -i /dev/video0
#
#Feed feed1.ffm
#Format mpjpeg
#VideoFrameRate 4
#VideoSize 600x480
#VideoBitRate 80
## VideoQMin 1
## VideoQMax 100
#VideoIntraOnly
#NoAudio
#Strict -1
#
Format flv
Feed feed1.ffm
VideoCodec flv
VideoFrameRate 4
VideoBitRate 800
VideoSize 800x600
noaudio
aggiungere:\\
Format status
per avere lo stato della situazione\\
Però ho notato le seguenti diciture in seguito all'avvio del server:\\
/etc/ffserver.conf:1: Port option is deprecated. Use HTTPPort instead.
/etc/ffserver.conf:3: BindAddress option is deprecated. Use HTTPBindAddress instead.
/etc/ffserver.conf:9: NoDaemon option has no effect. You should remove it.
/etc/ffserver.conf:38: Setting default value for video bit rate tolerance = 200000. Use NoDefaults to disable it.
/etc/ffserver.conf:38: Setting default value for video rate control equation = tex^qComp. Use NoDefaults to disable it.
/etc/ffserver.conf:38: Setting default value for video max rate = 7337504. Use NoDefaults to disable it.
/etc/ffserver.conf:38: Setting default value for video buffer size = 1600000. Use NoDefaults to disable it.
==== utilizzo risorse ====
riguardo l'utilizzo delle risorse possiamo dire che con la configurazione appena suggerita si ha con motion attivo un consumo CPU del 50% e un utilizzo della rete di circa 500Kb.\\
Il problema è quando c'è molto movimento che provoca dei picchi nel processore fino al 90 e passa %.
Se aumento anche i framerate aumenta pure l'uso della rete che a 15 fps arriva a 750 Kb.\\
Tutto ciò con un raspberry pi mod B+ V1.2, ma con un Raspberry Pi 3 model B+ la CPU non va oltre il 33% e la rete comunque dai 750 agli 800 Kb.\\
Tutto aumenta con l'aumentare della risoluzione e della qualità.\\
ad esempio con una risoluzione di 1024x768 il processore con rpi3 arriva a 62% e la rete con lo streaming a 15 fps arriva fino a 1,6 Mbs\\
===== esperienza con la pi camera =====
ATTENZIONE: test effettuati con l'immagine de le 27 maggio 2015 senza aver fatto l'upgrade e i repo non modificati\\
seguito le istruzioni su:\\
http://tnw513.altervista.org/blog/ip-camera-raspberry-pi/ \\
e \\
http://elinux.org/RPi-Cam-Web-Interface \\
installare il seguente software per ottenere un'interfaccia web per la visualizzazione dello stream video:\\
git clone https://github.com/silvanmelchior/RPi_Cam_Web_Interface.git \\
ma sarebbe meglio per la mia guida scaricare tutto dal mio mirror locale.\\
poi entrare nella directory\\
cd RPi_Cam_Web_Interface
cambiare i seguenti diritti\\
chmod u+x RPi_Cam_Web_Interface_Installer.sh
e lanciare l'installatore:\\
./RPi_Cam_Web_Interface_Installer.sh install
affinche funzioni tutto al primo colpo scegliere apache come web server di default\\
Altro sistema per vedere il flusso con zoneminder è quello di installare vlc\\
QUindi una distro pulita installare solo vlc dopo l'update:\\
apt-get update
apt-get install vlc
e lanciare\\
raspivid -o - -t 9999999 -w 320 -h 240 | cvlc -vvv stream:///dev/stdin --sout '#rtp{sdp=rtsp://:8554/pi.sdp}' :demux=h264
oppure
raspivid -o - -t 99999 -hf -w 640 -h 360 -fps 25|cvlc -vvv stream:///dev/stdin --sout '#standard{access=http,mux=ts,dst=:8090}' :demux=h264
oppure altro modo con http \\
raspivid -o - -t 0 -hf -w 800 -h 400 -fps 24 |cvlc -vvv stream:///dev/stdin --sout '#standard{access=http,mux=ts,dst=:8160}' :demux=h264
altro sistema;\\
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
altro con dd\\
dd if=/dev/video1 bs=1M | cvlc -vvv stream:///dev/stdin --sout '#rtp{sdp=rtsp://:8554/}' --demux=h264
altro con raspivid:\\
raspivid -w 640 -h 360 -fps 31 -t 0 -o - | cvlc -vvv stream:///dev/stdin --sout '#rtp{sdp=rtsp://:8554/}' --demux=h264
sistema con ncat e mplayer\\
lanciare prima il client dal pc in attesa:\\
nc -l -p 5001 | mplayer -fps 31 -cache 1024 -
poi lanciare dal raspberry:\\
raspivid -t 999999 -o - | nc 192.168.1.156 5001
quest'ultima è la soluzione migliore in quanto non si blocca mai\\
sistema con flusso di rete tcp ma da aprire con mplayer, vlc non ci riuscirebbe:\\
da raspberry:\\
raspivid -t 0 -w 1280 -h 1024 -hf -ih -fps 4 -o - | nc -k -l -p 8554
da pc\\
mplayer -fps 4 -demuxer h264es ffmpeg://tcp://miovps.it:8554
Questi stream possono essere aperti con vlc in flusso di rete\\
altrimenti per la mia esigenza andare su zoneminder e aggiungere un nuovo monitor remodo di tipo ffmpeg\\
nella seconda scheda mettere nel percorso sorgente: rtsp://indirizzoip:8554/pi.sdp e con la versione 1.30 di zoneminder scegliere come "metodo remoto" RPT/Unicast \\
L'unico problema è che con queste impostazioni la qualità del video fa schifo. e non so dove si possa migliorare. però almeno funziona.\\
===== MODULO RASPI CAM =====
ho notato che il mio raspberry pi 2 b+ con su installato raspbian 9 non abiulitava automaticamente il modulo per la raspicam integrata, Ovvero anche se abilitavo il modulo con raspi-config al riavvio successivo non trovavo il device /dev/video0. \\
Il motivo è che il modulo bmc2835-v4l2 non viene caricato automaticamente quindi bisogna: \\
editare il file /etc/modules ed aggiungere in fondo\\
bmc2835-v4l2
Per disabilitare il led modificare il file /boot/config.txt \\
disable_camera_led=1
===== fatto esperienza anche con MOTION =====
bisogna studiarlo bene, ma ho capito che se si vuole registrare le immagini bisogna togliere il commento all'opzione "target_dir" e indicare il percorso in cui si vuol far registrare le immagini.\\
e inoltre bisogna accertarsi che non sia commentato il seguente parametro e impostato su on:\\
ffmpeg_output_movies on
===== link utili =====
https://trac.ffmpeg.org/wiki/ffserver \\