supraveghere video Motion în Linux cu mâinile lor

Așa că am avut camera IP, calculatorul ca grefier, mișcare ca software-ul și dorința de a face prieteni cu toată ferma. Și ce se poate de mișcare din faptul că avem nevoie. )

  1. Lucrul cu camere conectate printr-o placă de captură sau de o cameră IP.
  2. Execută script-uri de la începutul și la sfârșitul evenimentului.

Ei bine, să începem. Pentru a începe, încercați cu un singur aparat de fotografiat. Instalați mișcare.

Mai mult, în directorul / etc / mișcare / copiați fișierul în configurația (motion.conf) să fișier pentru camera noastră, de exemplu, motion1.conf. Și acum vom începe să-l editați pentru ei înșiși:

2. În linia netcam_url prescrie o adresă URL pentru acces la celula noastră. Am folosit camere Axis IP, modelul 207 (cu microfon integrat).

În cazul nostru se pare ca acest lucru:


3. Apoi găsi linia target_dir - aici specificați calea către directorul în care datele budemhranit din camera.

4. Și acum începe distracția. Ne găsim linia on_event_start. Aici am pus această comandă pentru a fi executat atunci când are loc evenimentul, adică în timpul deplasării. Ce facem pentru tine? Și ne dă ceea ce nu ține evidența în mod constant, și numai atunci când este necesar - există mișcare, există o înregistrare, a fost de peste, și ne-am oprit. Astfel, se pare economia. Pentru comparație - ne sunt înregistrate cu 10 camere - color de imagine 640x480 cu înregistrări audio sunt stocate timp de 21 de zile, și totul ia pe o unitate de 135GB în mijloc, și cuprin cu fotografii care face mișcarea de aproximativ 200 GB.

5. următoarea linie: on_event_end - este pentru echipa să lucreze pe la sfârșitul evenimentului.

6. Și încă un lucru, mișcare ridică un server http mic, și din moment ce fiecare camera are propria instanță a programului este rulat cu un fișier de configurare separat, este important ca el asculta pe diferite porturi. Pentru a face acest lucru, verificați dacă următoarele linii diferă în fiecare fișier:

webcam_port și control_port

De exemplu: pentru a seta valoarea primei camere

webcam_port 8081
control_port 8080
pentru al doilea
webcam_port 8083
control_port 8082
și așa mai departe.

Este, în principiu, principalele modificări. Cred că veți găsi opțiunile necesare pentru o lectură atentă config-te, pentru că există destul de bine documentat.

[Root @ film bin] # pisica /root/bin/recordstart.sh
#! / Bin / bash

# Noi folosim două variabile
# 1 - numele camerei
numele directorului (în cazul în care fișierul va fi stocat) - # 2

# Generați nume de fișier
start = «cama $»
dt = `data +% Y% m.% H% M% s`
FILENAME = "$ - $ AVI."
echo $ FILENAME

Script-ul are doi parametri:

Deci, atunci când apelați scriptul ca /root/bin/recordstart.sh 211 Balkon - va scrie scenariul cu camere cu IP 192.168.95.211 în directorul / materialele video / mișcare / Balkon. Sper că există mai mult sau nemenee clar.

După cum puteți vedea, mai întâi vom genera un nume unic pentru fișierul pe care le scrie, care constă din următoarele componente:

  • începe - numărul camerei, sau mai degrabă ultimul octet de IP sale au precedat-o camă.
  • dt - data curentă în formatul YYYYMMDDhhmmss.


Acum, du-te prin mencoder-in:

Deci, acum, când are loc un eveniment, putem rula acest script. Astfel, în fișierul de configurare pentru mișcarea noastră pentru registrele camerei în linie on_event_start ceva de genul:

on_event_start "/root/bin/recordstart.sh 210 koridor1"

Și el începe să scrie. Dar avea încă să fie oprit. Pentru a face acest lucru, vom folosi al doilea /root/bin/recordstop.sh script.

[Root @ film bin] # pisica /root/bin/recordstop.sh
#! / Bin / bash

# Noi folosim o variabilă
# 1 - numele camerei

Ia # șir cu procesul mencoder PID
MPID = `ps ax | grep mencoder | grep $ camă | awk '' `

# Kill proces
`Ucide $ -15 MPID`

Corespunzător, în linia de on_event_end fișier de configurare prescrie ceva de genul:

on_event_end „/root/bin/recordstop.sh 210“ Ei bine, despre tot ce vine la configurare.

Ne întoarcem acum la operațiunile de rutină. Am folosit doi, care lucrează în afara coroanei.

  1. Elimină fișierele învechite, care strarshe 21 de zile.
  2. Acesta reunește toate fișierele într-o singură zi.

Luați în considerare script pentru curățare. Am l localizat în directorul / rădăcină / sbin și dușmanii nu au ghicit, numit clean.sh

/ Bin / find / video / Balkon -name "*. *" -mtime +21 -delete
/ Bin / find / video / mișcare / Balkon -name "*. *" -mtime +21 -delete

Dar al doilea scenariu este un pic mai complicat.

] # Cat /root/sbin/concatfiles.py
os de import, stat, tipuri, comenzi

workDir = '/ video / mișcare /'
dirs = os.listdir (workDir)
oldDate = summaryFile = summaryFileTmp = ''
pentru dir în dirs:
filesList = os.listdir (workDir + r)
filesList.sort ()

pentru fișier în filesList:
tmpN = file.split ( '')
nm = tmpN [0]
tmpN = nm.split ( '-')
! Dacă tmpN [0] = 'S':
nm = tmpN [1]
an = nm [0: 4]
lună = nm [4: 6]
zi = nm [6: 8]
data = an + luni + zile

dacă oldDate = data !:
summaryFile = workDir + dir + '/ S' + tmpN [0] + '-' + an + luni + zi + '.avi'
summaryFileTmp = workDir + dir + '/ S' + tmpN [0] + '-' + an + luni + zi + '-tmp.avi'

fișier tmp #remove
comanda = '/ bin / rm -f' + summaryFileTmp
os.system (comandă)

fișiere vechi #remove
comanda = '/ bin / rm -f' + workDir + dir + '/' + tmpN [0] + '-' +
data + '* .avi'
os.system (comandă)
oldDate = data

Acest lucru este de a aduce împreună clipuri scurte ale zilei într-un total de. (Pentru cei care nu știu - este în Python). Singurul lucru care trebuie schimbat - o workdir variabilă - în cazul în care calea de mencoder scrie fișierele din aceeași recordstart.sh

Prevede coroanele lor pentru a efectua o dată pe zi, de preferință, pe timp de noapte, în timp ce căruciorul se transformă într-un dovleac :)

Începe mișcarea după cum urmează:

mișcare -c / cale / catre / config / fișier

/ Path / to / config / fișier - calea către fișierul nostru de configurare cu :)

Și apoi executați-le la pornire.

Ei bine, asta e, probabil tot. Dacă aveți întrebări - întrebați.

UPD: fii atent cu script-ul în Python, deoarece a pierdut întreaga filă, ceea ce este foarte important pentru el.

UPD2: marjele recuperate, dar nu și faptul că dreptul.