Strumenti Utente

Strumenti Sito


raspberry:camera

Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.

Link a questa pagina di confronto

Entrambe le parti precedenti la revisione Revisione precedente
Prossima revisione
Revisione precedente
raspberry:camera [2018/03/12 12:44]
stefano
raspberry:camera [2023/04/17 14:25] (versione attuale)
Linea 1: Linea 1:
-esperienza con la pi camera\\+===== 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:\\ 
 +<file txt ffeserver.conf> 
 +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 
 + 
 +<Feed feed1.ffm> 
 +File /tmp/feed1.ffm 
 +FileMaxSize 10M 
 +</Feed> 
 + 
 +<Stream test.mjpg> 
 +Feed feed1.ffm 
 +Format mpjpeg 
 +VideoFrameRate 4 
 +VideoSize 600x480 
 +VideoBitRate 80 
 +# VideoQMin 1 
 +# VideoQMax 100 
 +VideoIntraOnly 
 +NoAudio 
 +Strict -1 
 +</Stream> 
 + 
 +</file> 
 + 
 +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:\\ 
 +<file txt ffserver.conf> 
 +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 
 + 
 +<Feed feed1.ffm> 
 +File /tmp/feed1.ffm 
 +FileMaxSize 10M 
 +launch ffmpeg -f video4linux2 -i /dev/video0 
 +</Feed> 
 + 
 +#<Stream test.mjpg> 
 +#Feed feed1.ffm 
 +#Format mpjpeg 
 +#VideoFrameRate 4 
 +#VideoSize 600x480 
 +#VideoBitRate 80 
 +## VideoQMin 1 
 +## VideoQMax 100 
 +#VideoIntraOnly 
 +#NoAudio 
 +#Strict -1 
 +#</Stream> 
 + 
 +<Stream live.flv> 
 +Format flv 
 +Feed feed1.ffm 
 +VideoCodec flv 
 +VideoFrameRate 4 
 +VideoBitRate 800 
 +VideoSize 800x600 
 +noaudio 
 +</Stream> 
 +</file> 
 + 
 +aggiungere:\\ 
 +  <Stream stat.html> 
 +  Format status 
 +  </Stream> 
 + 
 +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\\ 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:\\ seguito le istruzioni su:\\
Linea 26: Linea 192:
 e lanciare\\ e lanciare\\
   raspivid -o - -t 9999999 -w 320 -h 240  | cvlc -vvv stream:///dev/stdin --sout '#rtp{sdp=rtsp://:8554/pi.sdp}' :demux=h264   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 \\ 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   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\\ Questi stream possono essere aperti con vlc in flusso di rete\\
Linea 35: Linea 228:
  
 ===== MODULO RASPI CAM ===== ===== 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.\\ +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:\\+Il motivo è che il modulo bmc2835-v4l2 non viene caricato automaticamente quindi bisogna: \\
 editare il file /etc/modules ed aggiungere in fondo\\ editare il file /etc/modules ed aggiungere in fondo\\
   bmc2835-v4l2   bmc2835-v4l2
Linea 43: Linea 236:
   disable_camera_led=1   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 \\
 +
raspberry/camera.1520855086.txt.gz · Ultima modifica: 2023/04/17 14:25 (modifica esterna)