Предложение за видео наблюдение в Linux с ръцете си
Така че имахме IP камера, компютърът като регистратор, движението като софтуерен и желание да се сприятеля с цялото стопанство. И това, което може движение от факта, че ние се нуждаем. )
- Работа с камери, свързани чрез улавяне карта или IP камера.
- Изпълняване на скриптове в началото и в края на събитието.
Е Е, нека да започнем. За да започнете, опитайте с една камера. Инсталирайте движение.
Освен това, в папка / и т.н. / движение / копирате файла на конфигурацията (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" Е, това е всичко, за което идва на конфигурация.
Сега е ред на рутинни операции. Използвах две, които работят от короната.
- Премахва остарели файлове, които strarshe 21 дни.
- Тя обединява всички файлове в един ден.
Помислете скрипт за почистване. Имам го намира в директория / корен / 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: маржове възстановени, но не и на факта, че наред.