Webchat IRC #linuxon
Nedeľa, 5. február 2012 Meniny majú: Dnes: Agáta Zajtra: Dorota
Slovak English French German Hungarian Italian Polish Russian Spanish

LinuxON.sk - Linux a OpenSource portál

Veľkosť písma

Šírka

Nastavenia

Motion - II časť, rozšírená konfigurácia

  • PDF

Motion II castV minulej časti sme si ukazovali len tie najzákladnejšie nastavenia, konfiguráciu Motion. Dnes by som pokračoval a zakončil pár vecí. Nakonfigurovať Motion na snímanie objektu v blízkosti, čo uvidíte i na priloženom videu tak, aby výsledok bol skutočne dobrý. Vysvetliť viac pár vecí z konfigurácie a vysvetliť, ako sa nahrávajú obrázky na FTP server, respektíve vytvoriť skript pre vymazávanie videí starších ako 7 dní. Poďme na to.

 

 

 

Rozšírená konfigurácia.

 

Minulé obrázky boli len obrázkami bez významu. Žiadny pohyb, len zmes obrázkov, ktoré nezlákajú využívať a predstaviť si hodnotu Motion. Ja však potrebujem nastaviť Motion tak, aby mi snímal už čo len tieň, aby mi nič neuniklo. Nakoniec, ukážeme si to na jednoduchom príklade. Ako som spomenul vyššie, idem sa venovať verzii snímania konkrétneho objektu. A to kvôli lepšiemu prehľadu. Zoberiem si USB kľúč a namierim naň web kameru. „ukradnem“ USB kľúč a prezriem záznam, či je zaznamenaný pohyb tak, ako si predstavujem. Avšak tu je moja druhá požiadavka. Chcem väčšie obrázky a výstup aj vo videu.

 

motion.conf

###########################################

# Capture device options

###########################################

 

# Image width (pixels). Valid range: Camera dependent, default: 352

width 640

 

# Image height (pixels). Valid range: Camera dependent, default: 288

height 480

 

Základné nastavenia rozlíšenie obrázkov v mojom prípade 640 x 480. Všetko však záleží na samotnej kamere.

 

# Maximum number of frames to be captured per second.

# Valid range: 2-100. Default: 100 (almost no limit).

framerate 30

 

Táto voľba je zaujímavá. Určuje, koľko snímkov za 1 sekundu bude uložených, nasnímaných. To znamená, že čím vyššia hodnota, tým vyššia záťaž na počítač i na diskový priestor. Avšak to znamená i oveľa lepšiu kvalitu pri snímaní. V podstate Vám pri dobrom nastavení neunikne žiadny detail. Čo je teda optimum? Ja, ako vidíte, mám hodnotu 30. Základná hodnota je však 100 a nápoveda hovorí, že dostupný je takmer žiadny limit (To si však neviem presne predstaviť, no iste je rátané i s profesionálnymi kamerami.) Určite však nedávajte malé hodnoty, znižujú kvalitu získaného „možného dôkazného materiálu“.

 

######################################

# Motion Detection Settings:

######################################

# Threshold for number of changed pixels in an image that

# triggers motion detection (default: 1500)

threshold 100

 

Z minula už viete, o čo ide. Zadaná hodnota určuje počet zmenených pixelov v snímke v pohybe. Čo to presne znamená? Ak sa na obrázku „mení“ v pohybe 100px, začne sa nahrávať. To určuje pomerne malý objekt. Pre blízke sledovanie objektu je to lepšia voľba. Ak by ste pre blízko sledovaný objekt rozhodli nastaviť väčší počet pixelov, znamená to možné straty. Samozrejme pre vzdialenejší objekt je lepšia hodnota trochu väčšia.

 

Dosť dôležitá je sekcia,


# Maximum length in seconds of an mpeg movie

# When value is exceeded a new mpeg file is created. (Default: 0 = infinite)

max_mpeg_time 60

 

ktorá určuje maximálny čas záznamu pre jedno video. Tiež opatrne, pretože malý disk môže byť zaplnený veľmi rýchlo.

 

####################################

# Image File Output

####################################

 

# The quality (in percent) to be used by the jpeg compression (default: 75)

quality 100

 

Kvalita kompresie snímkov. Základná hodnota je 75.

 

To boli základné hodnoty snímkov. Teraz, keď spustíte motion, alebo motion -c /cesta/ku/konfiguracnemu/suboru/motion.conf, tak uvidíte sami oveľa lepší výsledok. Prezriete si priečinok a pred sebou máte mnoho obrázkov. Našou druhou úlohou je konfigurácia výstupu do videa. Aby ste mohli využívať túto možnosť, potrebujete balík ffmpeg. Nainštalujte si ho. Nasledujte sekciu v motion.conf.

 

#####################################

# FFMPEG related options

# Film (mpeg) file output, and deinterlacing of the video input

# The options movie_filename and timelapse_filename are also used

# by the ffmpeg feature

#####################################

 

# Use ffmpeg to encode mpeg movies in realtime (default: off)

ffmpeg_cap_new on

 

V reálnom čase (v dobe snímania) vytvára aj video. To je naša hlavná voľba. Zapnutím a spustením, či samotným snímaním, umožníme motion automaticky robiť videá z nasnímaných obrázkov.

 

# Codec to used by ffmpeg for the video compression.

# Timelapse mpegs are always made in mpeg1 format independent from this option.

# Supported formats are: mpeg1 (ffmpeg-0.4.8 only), mpeg4 (default), and msmpeg4.

# mpeg1 - gives you files with extension .mpg

# mpeg4 or msmpeg4 - gives you files with extension .avi

# msmpeg4 is recommended for use with Windows Media Player because

# it requires no installation of codec on the Windows client.

# swf - gives you a flash film with extension .swf

# flv - gives you a flash video with extension .flv

# ffv1 - FF video codec 1 for Lossless Encoding ( experimental )

# mov - QuickTime ( testing )

ffmpeg_video_codec mpeg4

 

Určujeme použitý kodek pri kompresii a tvorbe videa. Z dostupných volieb si vyberieme, aký chceme. Ja osobne využívam mpeg4 (mp4 video). Kvalita, ale aj využitý kodek pri spracovaní videa hrajú veľkú úlohu pri výbere veľkosti disku. Dbajte o to.

Tak a teraz je motion nastavený tak, aby spĺňal naše požiadavky. Ukážme si to na tom popísanom príklade.

 

  • Zapínam motion
  • „kradnem“ usb kľúč
  • prehliadam záznam.
Čo má spraviť motion? Po spustení mi každých 5 sekúnd bude snímať obrázky bez toho, či ide o pohyb alebo nie. Hneď ako sa objaví moja ruka na scéne, mal by motion začať snímať obrázky a vytvárať video. Motion sa vypne hneď po tom, ako sa obraz ustáli. Som zvedavý, či motion dokáže zareagovať a ako rýchlo.

Motion
Motion
Motion
Motion
Motion
Motion
Motion
Motion
Motion
Motion
Motion
Motion

Motion . detekcia ruky

 

Motion bez problémov zareagoval na pohyb spred kamery. Hovoríme o snímaní objektu priamo pred kamerou. K dispozícií je i video, ktoré Motion vytvoril podľa mojej definície, snímať hneď po zistení aktivity, až po ukončenie aktivity. Po skončení som nežiadal ďalšie sekundy navyše a tak je video veľmi rýchle. Stiahnete ho na adrese: http://www.easy-share.com/1909161232/01-20100130172400.avi alebo po kliknutí na odkaz.

Teraz by sa to mohlo nejak využiť. Nastavíme si skript, ktorý vykoná úlohy po nasnímaní obrázkov, respektíve v čase "diania". Ide o to, aby sme sa aj my dozvedeli, že sa niečo deje.

Skript vykoná

Sekundovú kontrolu priečinku, kde sa ukladá video i každý uložený snímok. V prípade, že sa v  priečinku objaví snímok, začne sa zadaná úloha. Zadaná úloha v našom prípade znamená spustenie výstražného zvuku pomocou konzolovej aplikácie na prehrávanie hudby mpg123, ktorú musíte a pravdepodobne máte nainštalovanú.

Skript

#!/usr/bin/bash

DIRTOCHECK=./scan/
SONG="/cesta/k/pesnicke/"

while [ 1 ]
do
if [ "`ls -A $DIRTOCHECK`" ]
then
if ! ps ax|grep "mpg123 $SONG"|grep -v grep > /dev/null 2> /dev/null
then
mpg123 "$SONG" > /dev/null 2> /dev/null&
fi
else
if ps ax|grep "mpg123 $SONG"|grep -v grep > /dev/null 2> /dev/null
then
# todo: kill only that one mpg123
killall -9 mpg123
fi
fi

sleep 1
done


Súbor s týmto textom uložte ako skript s koncovkou .sh.
Premenná DIRTOCHECK určuje adresu priečinka so snímkami.
SONG - určuje cestu k výstražnému zvuku

Zvuk si môžete voľne stiahnuť stadiaľto: http://simplythebest.net/sounds/WAV/events_WAV/event_WAV_files/alarm.zip

Je jasné, že pokiaľ budú v priečinku súbory, dovtedy bude skript vyhlasovať výstražný signál. Ide len o jedno z riešení, preto nemá zmysel komentovať túto voľbu. Volieb, ako si ošetriť výstrahu, je mnoho. Jednou ešte celkom dobrou možnosťou na výstrahu alebo informovanie je v prípade plniaceho sa obsahu priečinka notifikácia na mail. Za predpokladu, že využívate služby notifikáciu prichádzajúceho mailu na mobilný telefón, máte o zábavu postarané. (Spoločnosť Orange kedysi ponúkala možnosť notifikácie na mail). Možností je skutočne mnoho, takže ak sa nepáči tento spôsob, iste miesto kritiky napíšete a vymyslíte lepší ;-).

Automatizácia

Nasleduje posledná vec, ktorú by sme potrebovali. Nastaviť si automatizáciu. Ja si nastavujem pomocou skriptu túto udalosť:

Motion sa zapne automaticky v čase od 20.00 do 08.00. Skopíruje všetok obsah do priečinka /zaloha, do novovytvoreného priečinka podľa aktuálneho dátumu. Súbory videí (mp4) skopíruje do priečinka /zaloha/datum/video a súbory obrázkov (jpg) skopíruje do priečinka /zaloha/datum/obrazky. Motion vymaže priečinok, kde sú aktuálne stiahnuté záznamy (u mňa /scan) a naplánuje si úlohu spustiť sa a toto isté vykonať v čase od 20.00 do 08.00. Navyše záznamy staršie ako 7 dní vymaže z priečinka /zaloha.

Skript motion.sh


#!/usr/bin/bash
# dakujem za pomoc xchg - Oliver Kindernay a Szabóvy sa pripomenienky v komentaroch

MOTION="/usr/bin/motion"
LOGDIR="$HOME/motion/log"

START8="0 20 * * * $MOTION 2> $LOGDIR/motion_err.log > $LOGDIR/motion.log"    # pusti motion o 20.00
STOP8="0 8 * * * $0 kill"                    # stopni motion o 8.00

DATUM=`date +"%d_%m_20%y"|tr -d '\n'`
SCANDIR="/$HOME/motion/scan"
ZALOHA="/$HOME/motion/zaloha"
PHOTODIR="$ZALOHA//$DATUM/obrazky"
VIDEODIR="$ZALOHA/$DATUM/video"

if [ "$1" = "kill" ]
then
killall motion
if ps -A|grep motion
then
killall -9 motion
fi
exit
fi

# vytvori potrebne zlozky ak neexistuju

[ -d "$SCANDIR" ] || mkdir -p "$SCANDIR"
[ -d "$PHOTODIR" ] || mkdir -p "$PHOTODIR"
[ -d "$VIDEODIR" ] || mkdir -p "$VIDEODIR"
[ -d "$LOGDIR" ] || mkdir -p "$LOGDIR"

# Ak v crone nie su naplanovane ulohy, naplanuj ich

if ! crontab -l|grep -F "$START8" > /dev/null
then
echo -e "`crontab -l`\n$START8" |crontab -
fi

if ! crontab -l|grep -F "$STOP8" > /dev/null
then
echo -e "`crontab -l`\n$STOP8"|crontab -
fi

# presun nazbierane data

mv "$SCANDIR/"*.jpg  "$PHOTODIR/"
mv "$SCANDIR/"*.mp4  "$VIDEODIR/"
rm "$SCANDIR/"*

# vymaz subory starsie ako 7 dni

find "$ZALOHA" -type d -mtime +7 -exec rm -fr {} \;

V skripte stačí pomeniť údaje v podobe:
  • čas spustenia a čas vypnutia
  • snímajucého priečinka
  • záložného priečinka
  • typy súborov
  • čas vymazania súborov starších, ako
A to je všetko. Motion by ste mali mať v túto chvíľku nastavený i vrátane jeho skriptov. Vytvorili sme síce Motion s nastavením na objekty blízke, no nastaviť ich na objekt vzdialenejší nie je vôbec ťažké. Dúfam, že niekomu návod pomôže, minimálne uchráni to, čo potrebuje. Na koniec len dodám spomínaný upload na FTP.

on_picture_save wput ftp://username:password@yourserver %f.

Túto položku vložíte na koniec Vášho konfiguračného súboru, zmeníte parametre prihlasovacieho mena, hesla a servra Vášho FTP a uložíte. Nezabudnite si nainštalovať aplikáciu wput.


Na všetky skripty sa vzťahuje licencia GNU/GPL,

Posledná zmena v Streda, 10 November 2010 00:24

Posted: 09.02.2010 23:28 by lixi #4228
Ja len malu poznamku ako sa robia sh subori?
Posted: 09.02.2010 23:33 by xchg #4229
lixi napísal:
Ja len malu poznamku ako sa robia sh subori?


Normalne otvoris obyc textovy editor a napises donho obsah . Dokonca ani ako sh to ukladat nemusis, to je len taka kozmeticka uprava aby si vedel co v tom subore je.
Posted: 11.02.2010 02:40 by Szabó #4281
No a ja mam zas problem. Skopiroval som script. vlozil k sebe ale nejak mi nechce vytvorit tie podzlozky v zaloha.
./Scriptmotion
mv: cieľ `/home/bum/zaloha/11_02_2010/obrazky/' nie je adresárom
mv: nepodarilo sa presunúť `/home/bum/scan/01-20100211003504.swf' do `/home/bum/zaloha/11_02_2010/video/': No such file or directory

Toto mi ten moj chytrak vypisuje
Nejake napady?
Posted: 11.02.2010 17:21 by xchg #4295
Tie priecinky zaloha a scan musis predom vytvorit, o to sa ten skript nestara.
Posted: 11.02.2010 21:35 by Szabó #4296
xchg napísal:
Tie priecinky zaloha a scan musis predom vytvorit, o to sa ten skript nestara.

No prave ze som to spravil. mam v /home/bum/scan a aj /home/bum/zaloha.
Preto mi to je divne.

Dalsia chyba co tam asi je v scripte je ze sa mi zapina kazdu 19-tu minutu a vypne o hodinu v 7 minute.
Myslim ze tam je chyba. U seba som to v crone upravil takze uvidim teraz co to spravi o 20:00
Posted: 12.02.2010 00:48 by xchg #4302
Ano je tam chyba, chyba tam jedna hviezdicka, dik. Zajtra ho upravim. Teraz dobrú
Posted: 12.02.2010 01:08 by Szabó #4307
xchg napísal:
Ano je tam chyba, chyba tam jedna hviezdicka, dik. Zajtra ho upravim. Teraz dobrú

Mna skor trapi preco mi to nespravi tie dalsie zlozky. ( datum/obrazok, datum/video)
Posted: 12.02.2010 01:12 by TomasHanzel #4308
Szabó napísal:
xchg napísal:
Ano je tam chyba, chyba tam jedna hviezdicka, dik. Zajtra ho upravim. Teraz dobrú

Mna skor trapi preco mi to nespravi tie dalsie zlozky. ( datum/obrazok, datum/video)


Cesty nie su mimo /home/user? Ak su cesty inde, skript a jeho vykonanie potom nemusi mat prava na zapis a vytvorenie noveho priecinka.
Posted: 12.02.2010 01:19 by Szabó #4309
TomasHanzel napísal:
Szabó napísal:
xchg napísal:
Ano je tam chyba, chyba tam jedna hviezdicka, dik. Zajtra ho upravim. Teraz dobrú

Mna skor trapi preco mi to nespravi tie dalsie zlozky. ( datum/obrazok, datum/video)


Cesty nie su mimo /home/user? Ak su cesty inde, skript a jeho vykonanie potom nemusi mat prava na zapis a vytvorenie noveho priecinka.

Tak a teraz som uplne zmateny. kde ma byt ulozeny ten skript?
Posted: 12.02.2010 01:59 by TomasHanzel #4310
Takto, aby si sa nesplietol

Skript uloz kamkolvek, avsak nie do priecinkov, kde su ulozene fotky a videa zo streamu, ani do zaloznej zlotky. (preto, lebo sa obsah presuva do zalohy, a zaloha sa cisti kazdy 7den a skript by ti mohol tym padom vymazat)

To co som ja myslel znamena:
Cesty ulozenia zaznamenanych suborov a zaloznej zlozky by mali byt tam, kde ma pravo zapisovat uzivatel (Je jasne, ze user nemoze za normalnych okolnosti zapisovat ani vymazavat ani vytvarat priecinky napriklad na / ako to mam ja /scan /zaloha...)

Takze najlepsie je robit vsetko v home (Avsak odporucam vytvorit noveho uzivatela, pre istotu) a poriadne nastavit cesty ukladania snimkov a zaloznu cestu. Samozrejme aj do skriptov, pokial ich chces vyuzivat. Nie je problem poziadat aj tu na fore o skript, iste sa najdu ludia, ktory ho spravia a tak pomozu ostatnym. Sice maly projekt ale urcite pomoze. Treba hybat svetom £^@&!

Aby sme rozumeli celkovo tak u mna to bolo:

/scan - priecinok, kam sa zaznamenavali snimky (video i obrazky)
/zaloha - priecinok, kam sa ukladaju subory po skonceni snimania, teda o 8 rano - presunie sa tam obsah /scan a rozdeli jpg do obrazky, mp4 do video (tam sa vytvoria zlozky s datumom snimania pre video i obrazky).

Kludne sa pytaj ak nieco nie je jasne alebo nefunguje. Pripadne uploadni do portalu konfiguracny subor (Pozor teba aj cestu k nemu uviest ak nevyuzivas /etc/motion.conf ale iny, zalozny blabla...to uz pletiem 5 cez 9)
Posted: 12.02.2010 02:12 by Szabó #4312
TomasHanzel napísal:
Takto, aby si sa nesplietol

Skript uloz kamkolvek, avsak nie do priecinkov, kde su ulozene fotky a videa zo streamu, ani do zaloznej zlotky. (preto, lebo sa obsah presuva do zalohy, a zaloha sa cisti kazdy 7den a skript by ti mohol tym padom vymazat)

To co som ja myslel znamena:
Cesty ulozenia zaznamenanych suborov a zaloznej zlozky by mali byt tam, kde ma pravo zapisovat uzivatel (Je jasne, ze user nemoze za normalnych okolnosti zapisovat ani vymazavat ani vytvarat priecinky napriklad na / ako to mam ja /scan /zaloha...)

Takze najlepsie je robit vsetko v home (Avsak odporucam vytvorit noveho uzivatela, pre istotu) a poriadne nastavit cesty ukladania snimkov a zaloznu cestu. Samozrejme aj do skriptov, pokial ich chces vyuzivat. Nie je problem poziadat aj tu na fore o skript, iste sa najdu ludia, ktory ho spravia a tak pomozu ostatnym. Sice maly projekt ale urcite pomoze. Treba hybat svetom £^@&!

Aby sme rozumeli celkovo tak u mna to bolo:

/scan - priecinok, kam sa zaznamenavali snimky (video i obrazky)
/zaloha - priecinok, kam sa ukladaju subory po skonceni snimania, teda o 8 rano - presunie sa tam obsah /scan a rozdeli jpg do obrazky, mp4 do video (tam sa vytvoria zlozky s datumom snimania pre video i obrazky).

Kludne sa pytaj ak nieco nie je jasne alebo nefunguje. Pripadne uploadni do portalu konfiguracny subor (Pozor teba aj cestu k nemu uviest ak nevyuzivas /etc/motion.conf ale iny, zalozny blabla...to uz pletiem 5 cez 9)


Takze takto skript som si ulozil do ~/.motion
Skusal som Aj original skript aj si upravit cesty ukladania na /home/bum/scan a /home/bum/zaloha.
Stale to cele u mna zakape na tom ze do zalohy nevytvori ako ma dalsie zlozky teda /home/bum/zaloha/datumblabla/obrazky a /home/bum/zaloha/datumblabla/video
Samozrejme ak som pouzil origos skript spustal som ho ako root aby mal prava cmarat kam chce a co chce. Ako pisem nevytvara mi to podzlozky. ale vymaze vsetko co bolo v zlozke scan
Posted: 12.02.2010 03:33 by Szabó #4316
No takze u mna to funguje takto. je to tak spravne?

#!/bin/bash
# dakujem za pomoc xchg - Oliver Kindernay

MOTION="/usr/bin/motion"
CRONFILE="/var/spool/cron/crontabs/root"

START8="0 20 * * * $MOTION 2> /var/log/motion_err.log > /var/log/motion.log" # pusti motion o 20.00
STOP8="0 8 * * * $0 kill" # stopni motion o 8.00

DATUM=`date +"%d_%m_20%y"|tr -d '\n'`
SCANDIR="/home/bum/scan"
PHOTODIR="/home/bum/zaloha/$DATUM/obrazky"
VIDEODIR="/home/bum/zaloha/$DATUM/video"

if [ "$1" = "kill" ]
then
killall motion
if ps -A|grep motion
then
killall -9 motion
fi
exit
fi


# Ak v crone nie su naplanovane ulohy, naplanuj ich

if ! cat $CRONFILE|grep -F "$START8" > /dev/null
then
echo "$START8" >> $CRONFILE
fi

if ! cat $CRONFILE|grep -F "$STOP8" > /dev/null
then
echo "$STOP8" >> $CRONFILE
fi
# vytvori podzlozky pre video a obrazky

mkdir -p /home/bum/zaloha/`date +"%d_%m_20%y"`/video /home/bum/zaloha/`date +"%d_%m_20%y"`/obrazky

# presun nazbierane data

mv $SCANDIR/*.jpg $PHOTODIR/
mv $SCANDIR/*.swf $VIDEODIR/
rm -fr $SCANDIR/* # toto nechapem naco tu je ked prikazy pred tym vlastne vsetko vystrihnu a roztriedia

# vymaz subory starsie ako 7 dni

find /home/bum/zaloha -type f -mtime +7 -exec rm {} \;

Uz som spokojnejsi a mozem ist spat
Dobru noc
Posted: 12.02.2010 03:43 by TomasHanzel #4317
Dobrú noc

Cesty máš v poriadku, skript si doplnil sa mal by fungovať a vymazanie scandir môžeš teda zakomentovať. Je to len pre istotu aby zmazal obsah priečinka.

Zdá sa že je to v poriadku. Najlepšie však skúsiť. Idem aj ja, lebo nič nevidim

Obrázok 468x60 bodov
Navigácia Články Softvér Motion - II časť, rozšírená konfigurácia
Internetový portál pre užívateľov, fanúšikov, záujemcov operačného systému linux a voľne šíriteľného softvéru. Viac... | Podporte nas... | Reklama Partneri: www.megainzercia.eu
LinuxOn.sk IRC Buďte s nami aj na IRC. #linuxon@irc.freenode.net
Ako nato sa dočítate tu alebo použite IRCwebchat
 Hostia: 1080