Index Arduino Apps Reti Boinc Contatti Su questo server
Lista ultimi post

- Rs485-communicator

- Nvr a zero euri

- ArduHome

- Boinc

- Pubblicato mini-progetto didattico nfa-simulator

- Dyndns update script per RouterOs v6 'all-ram'

- Minimizzare il traffico http prodotto dalle api web per arduino

- Sito spostato su nuovo hosting

- There's no universe like 127.0.0.1

- New Horizon space connection

- Il loop nelle reti locali

- The Real Story Behind Wayland and X - Daniel Stone

- Nuovo server operativo

- Aggiunto il progetto "NetMonitor2"

- Aggiunta la possibilità di inserire commenti ai post

- Attivato nodo ninux ivan-casa

- Arduino web sprinkler

- Blocco ip personalizzato

- Aumentare la sicurezza bloccando gli ip dei server cinesi,nigeriani e russi.

- Arduino Power

- Zeroshell: hot spot con captive portal

02/03/2017 23:54
 

Nvr a zero euri



[voce di Giorgio Mastrota]
Hai un paio di telecamere ip? Ottimo!
Non vuoi spendere tanti euri per un nvr e hai deciso di fare tutto 'fai da te?'
Allora l'nvr a zero euri è quello che fa per te!
[fine voce di Giorgio Mastrota]

Tornando sul serio, e' veramente semplice crearsi un nvr linux-based a casa magari usando un pc vecchio o come faccio io, un piccolo pc simil intel nuc che uso da server casalingo.

E' sufficiente utilizzare uno strumento solo: ffmpeg

ffmpeg -i "RTSP_URL" -codec copy -map 0 -f segment_time 1200  -nostats -loglevel 0 -strftime 1 DESTINATION_PATH/tlc_%s_%Y-%m-%d_%H-%M-%S.mkv


con questo comando ffmpeg preleverà da RTSP_URL un video continuo, creando una lunga serie di files della durata di 1200 secondi con nome basato sull'orario. E' sufficiente lanciare questo comando all'avvio del pc 'registratore' (ad esempio lo si può fare velocemente aggiungendo una riga di codice al file /etc/rc.local, oppure, se volete la modalità professional, scrivetevi uno script per systemd /upstart) e il gioco è fatto!

Ma... problema: se il pc registra 24H, prima o poi (molto prima che poi) lo spazio su disco terminera'. Per ovviare, è sufficiente uno script di questo genere:


$dir[0]="PATH TO CAMERA 1";
$dir[1]="PATH TO CAMERA 2";
//size for each camera
$gb_limit=100;
for($i=0;$i<2;$i++){
$arrFiles= array();
$files = scandir($dir[$i]);
foreach ($files as $f){
if ($f[0]!="."){
$dd=date_parse_from_format("Y-m-d_h-i-s",substr($f,15));
$arrFiles[mktime($dd["hour"],$dd["minute"],$dd["second"],$dd ["month"],$dd["day"],$dd["year"])]=$f;
}
}
krsort($arrFiles,SORT_NUMERIC);
$gb=shell_exec("du -d 0 ".$dir[$i]." | awk '{print $1}'")/1024/1024;
while ($gb>$gb_limit){
$file=array_pop($arrFiles);
shell_exec("rm ".$dir[$i]."/$file");
$gb=shell_exec("du -d 0 ".$dir[$i]." | awk '{print $1}'")/1024/1024;
}
}
?>

Tale script elimina i file video più vecchi finche' la dimensione occupata dalla directory dei file video torna sotto la soglia $gb_limit.
Ovviamente, l'uso corretto di questo script e' subordinato ad un cronjob.
Ad esempio, possiamo lanciarlo ogni ora, in modo che vengano eliminati i file più vecchi ora per ora. Prima apriamo il file crontab (da root, altrimenti apriamolo preponendo sudo se si usa ubuntu):
crontab -e

poi aggiungiamo la riga alla fine del file (vedi Wikipedia - crontab per info)
0 * * * * php /path/to/script.php

Questa riga, dirà a cron di lanciare lo script di cancellazione ogni ora, in questo modo avremo la garanzia di non terminare mai lo spazio su disco.

[voce di Pippo Baudo]
Alla prossima
[fine voce di Pippo Baudo]



 

Commenti (0 commenti)


Scrivi commento
Nome
Email
Testo