Kirjoittaja Aihe: Kuvakaappaus ip-kamerasta  (Luettu 6009 kertaa)

tamrock

  • Käyttäjä
  • Viestejä: 144
  • Zervuska haidis
    • Profiili
Kuvakaappaus ip-kamerasta
« : 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...

rs

  • Käyttäjä
  • Viestejä: 120
    • Profiili
Vs: Kuvakaappaus ip-kamerasta
« Vastaus #1 : 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ää
« Viimeksi muokattu: 05.11.17 - klo:00.25 kirjoittanut rs »

tamrock

  • Käyttäjä
  • Viestejä: 144
  • Zervuska haidis
    • Profiili
Vs: Kuvakaappaus ip-kamerasta
« Vastaus #2 : 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...

rs

  • Käyttäjä
  • Viestejä: 120
    • Profiili
Vs: Kuvakaappaus ip-kamerasta
« Vastaus #3 : 05.11.17 - klo:00.45 »
onhan tuo komento yhdellä rivillä?

tamrock

  • Käyttäjä
  • Viestejä: 144
  • Zervuska haidis
    • Profiili
Vs: Kuvakaappaus ip-kamerasta
« Vastaus #4 : 05.11.17 - klo:00.52 »
Kyllä on yhdessä pötkössä...  :D

rs

  • Käyttäjä
  • Viestejä: 120
    • Profiili
Vs: Kuvakaappaus ip-kamerasta
« Vastaus #5 : 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"
 
« Viimeksi muokattu: 05.11.17 - klo:01.01 kirjoittanut rs »

tamrock

  • Käyttäjä
  • Viestejä: 144
  • Zervuska haidis
    • Profiili
Vs: Kuvakaappaus ip-kamerasta
« Vastaus #6 : 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ä?

rs

  • Käyttäjä
  • Viestejä: 120
    • Profiili
Vs: Kuvakaappaus ip-kamerasta
« Vastaus #7 : 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

kuutio

  • Käyttäjä
  • Viestejä: 162
    • Profiili
Vs: Kuvakaappaus ip-kamerasta
« Vastaus #8 : 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

matsukan

  • Käyttäjä
  • Viestejä: 2152
    • Profiili
Vs: Kuvakaappaus ip-kamerasta
« Vastaus #9 : 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.
Pohjois-pohjanmaa
-- motto:  backupin tarve huomataan aina liian myöhään

kuutio

  • Käyttäjä
  • Viestejä: 162
    • Profiili
Vs: Kuvakaappaus ip-kamerasta
« Vastaus #10 : 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)

tamrock

  • Käyttäjä
  • Viestejä: 144
  • Zervuska haidis
    • Profiili
Vs: Kuvakaappaus ip-kamerasta
« Vastaus #11 : 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  :)

kuutio

  • Käyttäjä
  • Viestejä: 162
    • Profiili
Vs: Kuvakaappaus ip-kamerasta
« Vastaus #12 : 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.
« Viimeksi muokattu: 05.11.17 - klo:10.35 kirjoittanut kuutio »

tamrock

  • Käyttäjä
  • Viestejä: 144
  • Zervuska haidis
    • Profiili
Vs: Kuvakaappaus ip-kamerasta
« Vastaus #13 : 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"

rs

  • Käyttäjä
  • Viestejä: 120
    • Profiili
Vs: Kuvakaappaus ip-kamerasta
« Vastaus #14 : 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ä
« Viimeksi muokattu: 07.11.17 - klo:00.26 kirjoittanut rs »

tamrock

  • Käyttäjä
  • Viestejä: 144
  • Zervuska haidis
    • Profiili
Vs: Kuvakaappaus ip-kamerasta
« Vastaus #15 : 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?   ???

rs

  • Käyttäjä
  • Viestejä: 120
    • Profiili
Vs: Kuvakaappaus ip-kamerasta
« Vastaus #16 : 07.11.17 - klo:00.39 »

tamrock

  • Käyttäjä
  • Viestejä: 144
  • Zervuska haidis
    • Profiili
Vs: Kuvakaappaus ip-kamerasta
« Vastaus #17 : 07.11.17 - klo:00.42 »
Kiitos jälleen kerran!  :)

rs

  • Käyttäjä
  • Viestejä: 120
    • Profiili
Vs: Kuvakaappaus ip-kamerasta
« Vastaus #18 : 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