Предложение за видео наблюдение в Linux с ръцете си

Така че имахме IP камера, компютърът като регистратор, движението като софтуерен и желание да се сприятеля с цялото стопанство. И това, което може движение от факта, че ние се нуждаем. )

  1. Работа с камери, свързани чрез улавяне карта или IP камера.
  2. Изпълняване на скриптове в началото и в края на събитието.

Е Е, нека да започнем. За да започнете, опитайте с една камера. Инсталирайте движение.

Освен това, в папка / и т.н. / движение / копирате файла на конфигурацията (motion.conf) да подаде за нашата камера, например motion1.conf. И сега ние започваме да го редактирате сами за себе си:

2. В съответствие netcam_url предписва URL за достъп до нашата клетка. Използвали сме Axis IP камери, модел 207 (с вграден микрофон).

В нашия случай това изглежда така:


3. След това намери target_dir линия - тук укажете пътя до папката, където budemhranit данни от фотоапарата.

4. И сега започва забавно. Намираме on_event_start линия. Тук ние поставяме тази команда да се изпълнява, когато се появи на събитието, което е при шофиране. Това, което правим за вас? И това ни дава това, което не води регистър на постоянно, а само когато е необходимо - има движение, налице са данни, че всичко е свършило, и спряхме. По този начин се оказва, икономиката. За сравнение - ние се записват с 10 камери - цветна снимка 640x480 със звукозапис се съхраняват в продължение на 21 дни, в които цялата работа отвежда на 135GB диск в средата, и изчерпа със снимки, които прави движението на около 200 GB.

5. следния ред: on_event_end - тя е за екипа да работи на разстояние в края на събитието.

6. И още едно нещо, движение повдига малък HTTP сървър, а от всяка камера разполага със собствена инстанция на програмата се изпълняват с отделен конфигурационен файл, важно е, че той е слушане на различни пристанища. За да направите това, проверете дали следните редове се различават във всеки файл:

webcam_port и control_port

Например: да се определи стойността на първата камера

webcam_port 8081
control_port 8080
за втория
webcam_port 8083
control_port 8082
и така нататък.

Това е по принцип основните промени. Мисля, че ще се намерят възможности, необходими внимателен прочит довереник себе си, защото там е доста добре документирано.

[Root @ видео бин] # котка /root/bin/recordstart.sh
#! / Bin / Баш

# Ние се използват две променливи
# 1 - името на камерата
име на директория (където ще се съхранява на файла) - # 2

# Създаване на име на файла
започнете = «камера $»
DT = `дата +% Y% т.% Н% М% S`
FILENAME = "$ - $ АВИ".
ехо $ FILENAME

Сценарият се извършва по два параметъра:

Така че, когато се обадите на скрипта като /root/bin/recordstart.sh 211 Балкон - ще напише сценария с камери с IP 192.168.95.211 в директорията / видео / движение / Балкон. Надявам се, че има повече или по-nemenee ясно.

Както можете да видите, първо ние генерира уникално име за файла, към който пишем, който се състои от следните компоненти:

  • започнете - брой на камерата, или по-скоро последния байт от неговия IP предшествано си камера.
  • DT - текущата дата в YYYYMMDDhhmmss формат.


Сега преминете през MEncoder-ин:

Така че сега, когато възникне събитие, ние може да работи този скрипт. По този начин, в конфигурационния файл за нашето предложение за регистрите на камерата в съответствие on_event_start нещо като:

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

И той започва да пише. Но тя все още трябва да бъде спряно. За да направите това, ние използваме втория сценарий /root/bin/recordstop.sh.

[Root @ видео бин] # котка /root/bin/recordstop.sh
#! / Bin / Баш

# Ние използваме една променлива
# 1 - името на камерата

# Вземете низ с процес MEncoder PID
MPID = `к.с. брадва | Впиши MEncoder | Впиши камера $ | AWK ""`

# Процес Kill
`Убийте -15 $ MPID`

Съответно, в линията на on_event_end конфигурационния файл предписва нещо като:

on_event_end "/root/bin/recordstop.sh 210" Е, това е всичко, за което идва на конфигурация.

Сега е ред на рутинни операции. Използвах две, които работят от короната.

  1. Премахва остарели файлове, които strarshe 21 дни.
  2. Тя обединява всички файлове в един ден.

Помислете скрипт за почистване. Имам го намира в директория / корен / sbin и врагове не сте се досетили, наречена clean.sh

/ Bin / търсене / видео / Балкон -name "*. *" -mtime 21 -delete
/ Bin / търсене / видео / движение / Балкон -name "*. *" -mtime 21 -delete

Но втората сценарият е малко по-сложно.

] /root/sbin/concatfiles.py # Cat
внос OS, стат, видове, команди

workDir = '/ видео / движение / "
директории = os.listdir (workDir)
oldDate = summaryFile = summaryFileTmp = ''
за реж в директории:
filesList = os.listdir (workDir + реж)
filesList.sort ()

за файл в filesList:
tmpN = file.split ( ".")
нм = tmpN [0]
tmpN = nm.split ( "-")
! Ако tmpN [0] = 'S':
нм = tmpN [1]
година = пМ [0: 4]
месец = пМ [4: 6]
ден = пМ [6: 8]
дата = година + месец + ден

ако oldDate = дата !:
summaryFile = workDir + реж + "/ S- '+ tmpN [0] +' - '+ години + месеца + ден +' .avi"
summaryFileTmp = workDir + реж + "/ S- '+ tmpN [0] +' - '+ години + месеца + ден +' -tmp.avi"

#remove TMP файл
команда = '/ хамбар / RM-F "+ summaryFileTmp
os.system (команда)

#remove стари файлове
команда = '/ бен / RM -f' + workDir + реж + "/" + tmpN [0] + '-' +
дата + '* .avi "
os.system (команда)
oldDate = дата

Това е да събере на едно кратки клипове на деня в една обща. (За тези, които не знаят - това е в Python). Единственото нещо, което трябва да се промени - променлива workdir - път, когато MEncoder пише файловете от една и съща recordstart.sh

Предписва короните им да извършват веднъж на ден, за предпочитане през нощта, докато каретата се превръща в тиква :)

Започнете движението, както следва:

движение -C / път / до / довереник / файл

/ Път / до / довереник / файла - път към нашия конфигурационен файл с :)

И след това да ги изпълнят при стартиране.

Е, това е най-вероятно всички. Ако имате въпроси - питам.

UPD: бъдете внимателни с сценария в Python, тъй като загубил цялата си раздел, което е много критичен за него.

UPD2: маржове възстановени, но не и на факта, че наред.