Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.
| Entrambe le parti precedenti la revisione Revisione precedente Prossima revisione | Revisione precedente | ||
|
raspberry:camera [2019/03/07 22:00] stefano |
raspberry:camera [2023/04/17 14:25] (versione attuale) |
||
|---|---|---|---|
| Linea 1: | Linea 1: | ||
| + | ===== collegamento ===== | ||
| + | ovvero come usare la " | ||
| + | Per verificare il corretto collegamento eseguire il seguente comando:\\ | ||
| + | raspistill -v -o test.jpg | ||
| + | Come si può immaginare viene salvata un' | ||
| + | la apriamo con un visualizzatore immagini e il risultato ci farà capire se tutto è ok.\\ | ||
| + | All' | ||
| + | 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 / | ||
| + | |||
| + | ===== programmi ===== | ||
| + | Ora ci si può sbizzarrire utilizzando diversi software per fare test e video\\ | ||
| + | ==== motion ==== | ||
| + | Il sistema più semplice per fare videosorveglianza è l' | ||
| + | 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 / | ||
| + | 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 / | ||
| + | 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 " | ||
| + | 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' | ||
| + | Per abilitarlo cambiare il parametro " | ||
| + | In questo modo sarà possibile vedere lo streaming live sulla porta 8081 da un' | ||
| + | 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 " | ||
| + | Questo però comporta un uso maggiore della rete che si può monitorare tramite l' | ||
| + | iftop\\ | ||
| + | bmon\\ | ||
| + | In modo analogo è possibile attivare la visualizzazione delle opzioni per la gestione di motion via web\\ | ||
| + | Per abilitarlo cambiare il parametro " | ||
| + | Infine dobbiamo dire che per rendere attivo all' | ||
| + | e inserire all' | ||
| + | |||
| + | ==== ffmpeg ffserver ==== | ||
| + | Questa soluzione prevede un server (ffserver) di streaming \\ | ||
| + | e un codificatore che attiva il flusso (ffmpeg) \\ | ||
| + | Bisogna preparare bene il file / | ||
| + | di default non funziona con la raspicam\\ | ||
| + | quindi ho rinominato l' | ||
| + | <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 / | ||
| + | FileMaxSize 10M | ||
| + | </ | ||
| + | |||
| + | <Stream test.mjpg> | ||
| + | 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 / | ||
| + | che però mi lascia la consolle aperta\\ | ||
| + | e poi\\ | ||
| + | ffmpeg -v verbose -r 5 -s 600x480 -f video4linux2 -i /dev/video0 http:// | ||
| + | |||
| + | e da browser http:// | ||
| + | poi lo stesso http:// | ||
| + | e funziona pure su zoneminder: | ||
| + | sorgente: ffmpeg\\ | ||
| + | percorso: http:// | ||
| + | metodo remoto: RTP/Unicast \\ | ||
| + | |||
| + | Il problema con queste prove è che la qualità fa schifo\\ | ||
| + | Ma dalle ultime prove sembra che una grossa differenza l' | ||
| + | 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 / | ||
| + | FileMaxSize 10M | ||
| + | launch ffmpeg -f video4linux2 -i /dev/video0 | ||
| + | </ | ||
| + | |||
| + | #<Stream test.mjpg> | ||
| + | #Feed feed1.ffm | ||
| + | #Format mpjpeg | ||
| + | # | ||
| + | #VideoSize 600x480 | ||
| + | # | ||
| + | ## VideoQMin 1 | ||
| + | ## VideoQMax 100 | ||
| + | # | ||
| + | #NoAudio | ||
| + | #Strict -1 | ||
| + | #</ | ||
| + | |||
| + | <Stream live.flv> | ||
| + | Format flv | ||
| + | Feed feed1.ffm | ||
| + | VideoCodec flv | ||
| + | VideoFrameRate 4 | ||
| + | VideoBitRate 800 | ||
| + | VideoSize 800x600 | ||
| + | noaudio | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | aggiungere: | ||
| + | <Stream stat.html> | ||
| + | Format status | ||
| + | </ | ||
| + | |||
| + | per avere lo stato della situazione\\ | ||
| + | |||
| + | Però ho notato le seguenti diciture in seguito all' | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | |||
| + | ==== utilizzo risorse ==== | ||
| + | riguardo l' | ||
| + | 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' | ||
| + | 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 ===== | ===== esperienza con la pi camera ===== | ||
| ATTENZIONE: test effettuati con l' | ATTENZIONE: test effettuati con l' | ||
| Linea 26: | Linea 192: | ||
| e lanciare\\ | e lanciare\\ | ||
| raspivid -o - -t 9999999 -w 320 -h 240 | cvlc -vvv stream:/// | raspivid -o - -t 9999999 -w 320 -h 240 | cvlc -vvv stream:/// | ||
| + | oppure | ||
| + | raspivid -o - -t 99999 -hf -w 640 -h 360 -fps 25|cvlc -vvv stream:/// | ||
| + | | ||
| oppure altro modo con http \\ | oppure altro modo con http \\ | ||
| raspivid -o - -t 0 -hf -w 800 -h 400 -fps 24 |cvlc -vvv stream:/// | raspivid -o - -t 0 -hf -w 800 -h 400 -fps 24 |cvlc -vvv stream:/// | ||
| Linea 34: | Linea 203: | ||
| altro con dd\\ | altro con dd\\ | ||
| dd if=/ | dd if=/ | ||
| + | |||
| + | altro con raspivid:\\ | ||
| + | raspivid -w 640 -h 360 -fps 31 -t 0 -o - | cvlc -vvv stream:/// | ||
| + | |||
| + | 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' | ||
| + | |||
| + | 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:// | ||
| Linea 56: | Linea 242: | ||
| ffmpeg_output_movies on | ffmpeg_output_movies on | ||
| + | ===== link utili ===== | ||
| + | |||
| + | https:// | ||