Ubuntu Suomen keskustelualueet

Ubuntun käyttö => Ohjelmointi, palvelimet ja muu edistyneempi käyttö => Aiheen aloitti: tamrock - 04.11.17 - klo:23.39

Otsikko: Kuvakaappaus ip-kamerasta
Kirjoitti: tamrock - 04.11.17 - klo:23.39
Iltaa,

Yrityksenäni oli saada ip-kamerasta kaapattua kuvia ja ihmeen kaupalla sainkin asian toimimaan kohtalaisesti seuraavalla koodilla:

avconv -y -loglevel debug -stimeout 2 -rtsp_transport tcp -i "rtsp://username:password@192.168.1.64:554/1" -q:v 9 -s 1920x1080 -vframes 1 -strftime 1 "%Y-%m-%d_%H-%M-%S.png"

Nyt kysyisinkin, että kuinka saan tuon kaapatun kuvan tallennettua suoraan haluamaani kansioon? (esim /home/kuvat/ipkamera) Nyt tuolla komennolla kuvat tallentuvat omaan kotikansioon.

Toinen kysymys kuuluu, miten saan tuon kaappauksen ajastettua crontabilla? Esimerkiksi 10 min välein...
Otsikko: Vs: Kuvakaappaus ip-kamerasta
Kirjoitti: rs - 05.11.17 - klo:00.18
en ole varma mutta luulen että tuo kansion valinta tapahtuu laittamalla kansion polku tiedostonimen eteen eli näin:
"/home/kuvat/ipkamera/%Y-%m-%d_%H-%M-%S.png"

tuo ajastus puolestaan tapahtuu näin:
Koodia: [Valitse]
crontab -esitten kirjoitat sinne
Koodia: [Valitse]
*/10 * * * * avconv -y -loglevel debug -stimeout 2 -rtsp_transport tcp -i "rtsp://username:password@192.168.1.64:554/1" -q:v 9 -s 1920x1080 -vframes 1 -strftime 1 "/home/kuvat/ipkamera/%Y-%m-%d_%H-%M-%S.png"
 
olettaen siis että tuo kansion valinta toimii noin kuten arvelen... mutta kokeilemalla se selviää
Otsikko: Vs: Kuvakaappaus ip-kamerasta
Kirjoitti: tamrock - 05.11.17 - klo:00.37
Kiitos neuvosta. Nyt kuvat ohjautuu kansioon mihin haluankin. Tuo ajastus ei vaan jostain syystä toimi. Kokeilin myös näin:

* * * * * /usr/bin/avconv -y -loglevel debug -stimeout 2 -rtsp_transport tcp -i "rtsp://username:password@192.168.1.64:554/1" -q:v 9 -s 1920x1080 -vframes 1 -strftime 1 "/home/tarmo/cam/%Y-%m-%d_%H-%M-%S.png" , mutta kansioon ei kuvia ilmesty...
Otsikko: Vs: Kuvakaappaus ip-kamerasta
Kirjoitti: rs - 05.11.17 - klo:00.45
onhan tuo komento yhdellä rivillä?
Otsikko: Vs: Kuvakaappaus ip-kamerasta
Kirjoitti: tamrock - 05.11.17 - klo:00.52
Kyllä on yhdessä pötkössä...  :D
Otsikko: Vs: Kuvakaappaus ip-kamerasta
Kirjoitti: rs - 05.11.17 - klo:00.58
ilmeisesti cronissa pitää olla kevoviiva ennen % merkkiä, eli koitapa laittaa \%Y jne tuohon tiedoston nimeen
eli näin:
"/home/kuvat/ipkamera/\%Y-\%m-\%d_\%H-\%M-\%S.png"
 
Otsikko: Vs: Kuvakaappaus ip-kamerasta
Kirjoitti: tamrock - 05.11.17 - klo:01.12
Nyt lisäsin tämmöiset rimpsut crontabiin eikä toimi vieläkään  :-\

* * * * * avconv -y -loglevel debug -stimeout 2 -rtsp_transport tcp -i "rtsp://username:password@192.168.1.64:554/1" -q:v 9 -s 1920x1080 -vframes 1 -strftime 1 "/home/tarmo/cam/\%Y-%m-%d_%H-%M-%S.png"

* * * * * /usr/bin/avconv -y -loglevel debug -stimeout 2 -rtsp_transport tcp -i "rtsp://username:password@192.168.1.64:554/1" -q:v 9 -s 1920x1080 -vframes 1 -strftime 1 "/home/tarmo/cam/\%Y-%m-%d_%H-%M-%S.png"

Eli muuten samoja, paitsi toisen alussa on: /usr/bin/ ...liekkö sillä yleensä merkitystä?
Otsikko: Vs: Kuvakaappaus ip-kamerasta
Kirjoitti: rs - 05.11.17 - klo:01.25
pakko myöntää että oma tietämys alkaa loppua, ei ole itsellenikään kovin tuttu tuo crontab :D

mutta yksi keino tuli vielä mieleen. josko yrittäisi tehdä siitä skriptin jos tuossa cronissa on joku syntaksivirhe...
eli
Koodia: [Valitse]
#!/bin/sh
/usr/bin/avconv -y -loglevel debug -stimeout 2 -rtsp_transport tcp -i "rtsp://username:password@192.168.1.64:554/1" -q:v 9 -s 1920x1080 -vframes 1 -strftime 1 "/home/tarmo/cam/%Y-%m-%d_%H-%M-%S.png"
tallenna se kotikansioosi vaikka nimellä ipkamera tai millä haluatkaan
sitten anna suoritusoikeudet
Koodia: [Valitse]
chmod a+x ipkamerakopioi /usr/local/bin kansioon
Koodia: [Valitse]
sudo cp ipkamera /usr/local/binja lopuksi sitten vaihdat crontabiin komennon tilalle /usr/local/bin/ipkamera
Otsikko: Vs: Kuvakaappaus ip-kamerasta
Kirjoitti: kuutio - 05.11.17 - klo:09.25
Nyt lisäsin tämmöiset rimpsut crontabiin eikä toimi vieläkään  :-\

* * * * * avconv -y -loglevel debug -stimeout 2 -rtsp_transport tcp -i "rtsp://username:password@192.168.1.64:554/1" -q:v 9 -s 1920x1080 -vframes 1 -strftime 1 "/home/tarmo/cam/\%Y-%m-%d_%H-%M-%S.png"

* * * * * /usr/bin/avconv -y -loglevel debug -stimeout 2 -rtsp_transport tcp -i "rtsp://username:password@192.168.1.64:554/1" -q:v 9 -s 1920x1080 -vframes 1 -strftime 1 "/home/tarmo/cam/\%Y-%m-%d_%H-%M-%S.png"

Eli muuten samoja, paitsi toisen alussa on: /usr/bin/ ...liekkö sillä yleensä merkitystä?
No ainakin sellainen huomio, että olet laittanut \-merkin vain ensimmäisen %-merkin eteen...se pitää laittaa kaikkien eteen: \%Y-\%m-\%d_\%H-\%M-\%S.png
Otsikko: Vs: Kuvakaappaus ip-kamerasta
Kirjoitti: matsukan - 05.11.17 - klo:09.36

Eli muuten samoja, paitsi toisen alussa on: /usr/bin/ ...liekkö sillä yleensä merkitystä?

On koska cron ajoissa ei käytetä ympäristömuuttujia niin ainoa tapa löytää  ajettavat ohjelmat on käyttää absoluuttisia hakemistopolkuja crontab:ssa.
Otsikko: Vs: Kuvakaappaus ip-kamerasta
Kirjoitti: kuutio - 05.11.17 - klo:09.57

Eli muuten samoja, paitsi toisen alussa on: /usr/bin/ ...liekkö sillä yleensä merkitystä?

On koska cron ajoissa ei käytetä ympäristömuuttujia niin ainoa tapa löytää  ajettavat ohjelmat on käyttää absoluuttisia hakemistopolkuja crontab:ssa.
Tämä vähän riippuu asetuksista, esim. /etc/crontab:issa asetetaan $PATH muuttuja käsittääkseni oletuksenakin (joka tapauksessa sellaisen voi ainakin halutessaan asettaa).

Sinänsä sillä kumpaa käyttää tosiaan on toisinaan merkitystä (cronin $PATH saattaa poiketa normaalisti käytössä olevasta, tai joskus voi olla eri versioita ohjelmasta asennettuna eri paikkoihin esim. /usr/local/bin, ja tällöin ajettava ohjelma riippuu paitsi järjestyksessä polussa, myös siitä käytetäänkö absoluuttista polkua vai ei)
Otsikko: Vs: Kuvakaappaus ip-kamerasta
Kirjoitti: tamrock - 05.11.17 - klo:10.13
No niin, nyt alkoi crontabbi totella komentoja. Eli se vaati ne kenoviivat jokaisen %-merkin eteen.

Eli näin:

* * * * * /usr/bin/avconv -y -loglevel debug -stimeout 2 -rtsp_transport tcp -i "rtsp://username:password@192.168.1.64:554/1" -q:v 9 -s 1920x1080 -vframes 1 -strftime 1 "/home/tarmo/cam/\%Y-\%m-\%d_\%H-\%M-\%S.png"

Mitenkäs tuota komentoa pitäisi muuttaa jos haluaisin tallennettavan tiedoston nimeksi päivämäärän sijaan esim. kuva_0001,kuva_0002,kuva_0003 jne?

Kiitokset kaikille tähän mennessä auttaneille  :)
Otsikko: Vs: Kuvakaappaus ip-kamerasta
Kirjoitti: kuutio - 05.11.17 - klo:10.33
No niin, nyt alkoi crontabbi totella komentoja. Eli se vaati ne kenoviivat jokaisen %-merkin eteen.

Eli näin:

* * * * * /usr/bin/avconv -y -loglevel debug -stimeout 2 -rtsp_transport tcp -i "rtsp://username:password@192.168.1.64:554/1" -q:v 9 -s 1920x1080 -vframes 1 -strftime 1 "/home/tarmo/cam/\%Y-\%m-\%d_\%H-\%M-\%S.png"
Tuo ajetaan nyt joka minuutti, jos halusit sen 10min välin, niin kannattaa vaihtaa alkuun "*/10 * * * *" takaisin

Mitenkäs tuota komentoa pitäisi muuttaa jos haluaisin tallennettavan tiedoston nimeksi päivämäärän sijaan esim. kuva_0001,kuva_0002,kuva_0003 jne?
Suosittelisin käyttämään erillistä skriptiä, jos haluat jotain tämänkaltaista (rs antoikin jo ohjeita erillisen skriptin tekoon). Varmaan voidaan ehdotella toteutustapoja, jos päädyt tällaiseen ratkaisuun...mutta ainakin omasta mielestä kuvien jälkikäteinen tarkastelu/etsintä on luultavasti helpompaa päiväyksen kuin juoksevan numeroinnin perusteella.
Otsikko: Vs: Kuvakaappaus ip-kamerasta
Kirjoitti: tamrock - 07.11.17 - klo:00.09
Olet oikeassa, päivämäärän mukaan nimeäminen on tässä tilanteessa näppärintä.  Kiitos avusta!

Mitä muuten tässä komennossa nämä lihavoidulla tekstillä olevat komennot tarkalleen ottaen tekevät?

avconv -y -loglevel debug -stimeout 2 -rtsp_transport tcp -i "rtsp://username:password@192.168.1.64:554/1" -q:v 9 -s 1920x1080 -vframes 1 -strftime 1 "/home/kuvat/ipkamera/%Y-%m-%d_%H-%M-%S.png"
Otsikko: Vs: Kuvakaappaus ip-kamerasta
Kirjoitti: rs - 07.11.17 - klo:00.23
-y meinaa että se ylikirjoittaa tarvittaessa samannimisen tiedoston mitään kysymättä
-loglevel debug meinaa että se näyttää kaiken mahdollisen logitiedon
-s meinaa kokoa eli resoluutiota
-q:v taitaa olla pakkauksen taso
-strftime liittynee tuohon että tiedostonimessä voi käyttää järjestelmän kellonaikoja ja päivämääriä
Otsikko: Vs: Kuvakaappaus ip-kamerasta
Kirjoitti: tamrock - 07.11.17 - klo:00.32
Kiitos tiedosta, niin vaan taas tuli opittua uutta  :)

Mutta taas tuli mieleen uusi kysymys joka kuuluu näin:
Miten voin määrittää kansiolle (esim. /home/tarmo/cam/) maksimi koon, eli jos siihen kertyy vaikka 5 gb kuvia niin se alkaisi poistamaan vanhimpia kuvia uusien tieltä eikä kansion koko kasvaisi esim tuota 5 gb suuremmaksi vai onko kyseinen ominaisuus edes mahdollista toteuttaa?   ???
Otsikko: Vs: Kuvakaappaus ip-kamerasta
Kirjoitti: rs - 07.11.17 - klo:00.39
https://askubuntu.com/questions/176480/limit-the-size-of-a-directory-by-deleting-old-files
tossa näyttää olevan samasta aiheesta
Otsikko: Vs: Kuvakaappaus ip-kamerasta
Kirjoitti: tamrock - 07.11.17 - klo:00.42
Kiitos jälleen kerran!  :)
Otsikko: Vs: Kuvakaappaus ip-kamerasta
Kirjoitti: rs - 07.11.17 - klo:00.51
tuolta löytyvän skriptin kun muuttaa omaan käyttöönsä sopivaksi (hakemisto ainakin) ja laittaa crontabiin sopivalla aikavälillä pyörimään niin pitäisi toimia. itsellä ei ole kokemusta tuosta skriptistä joten en uskalla luvata mitään sen toimivuudesta, joku fiksumpi varmaan ymmärtää paremmin mitä se tekee  ;D