- Lähtökohta
- Olen kytkenyt web-kameran tietokoneeseeni. Kameralle on ajurit, ja se toimii, eli pystyn katsomaan kameran ottamaa kuvaa paikallisesti esimerkiksi
xawtv:llä.
Minulla on käyttäjätunnus ja salasana ftp-palvelimelle, ja niitä käyttäen pystyn päivittämään web-sivuiltani maailmalle näkyvää sisältöä. Palvelimella on web-sivu, joka näyttää palvelintilaani tallennetunwebcam.jpg-nimisen tiedoston, ja päivittää, eli lataa kuvan automaattisesti uudestaan kerran minuutissa.
Omalla koneellani, kotihakemistossani onbin-alihakemisto ja se on määritelty komentojenhakupolkujen (PATH-muuttuja) joukkoon komentoriviprofiilissani. Olen tallentanut bin-hakemistoonrhythmbox-print-playing-komentojonotiedoston ja todennut sen toimivan.
Pakettienhallinnassaftp,came,imagemagickjarhythmboxovat asennettuna. - Ongelma
- Haluan, että tietokoneeni tallentaa web-kamerani näkymän kuvatiedostoon, lisää tiedostoon tallennetun kuvan päälle tekstinä kuvanottohetken ja lisäksi tiedot samalla hetkellä
Rytmilaatikko-musiikkisoittimessasoivasta kappaleesta, ja lähettää sen jälkeen kuvasta kopion web-palvelimelle. Haluan, että näin tapahtuu automaattisesti kerran minuutissa sen jälkeen, kun olen antanut käskyn, ja aina siihen saakka, että annan kieltävän käskyn. - Ratkaisu
-
- Luon komennolla kotihakemistooni
.camE-alihakemiston. Hakemiston luomiseen käytänmkdir ~/.camE-komentoa. Tähän hakemistoon tallennan jatkossa osan tarvittavista tiedostoista. - Luon
camE:lle kuvan ottamiseen liittyvät parametrit määrittelevän asetustiedoston.
Avaan komennollagedit ~/.camE/camErcasetustiedoston muokattavaksi. Tiedoston sisältö on seuraavassa:[ftp] do = 0 [grab] archive_shot_every = 0 logfile = /home/jani/.camE/camElog device = /dev/video0 temp_file = /home/jani/.camE/webcam.png blockfile = /home/jani/.camE/BLOCK # lag reduction, takes 5 shots, discards # the first 4, thus clearing mmap buffers lag_reduce = 5 width = 320 height = 240 - Luon kuvan web-palvelimelle lataamista varten ftp-asetustiedoston.
- Avaan komennolla
gedit ~/.netrcasetustiedoston muokattavaksi. Tiedoston sisältö on seuraavassa:
machine ftp.palvelin.com login tunnukseni password salasanani macdef putcampic prompt off lcd /home/jani/.camE cd kuvakansio bin put webcam.jpg quit - Muutan komennolla
chmod 600 ~/.netrcasetustiedoston oikeuksia niin, että kukaan muu kuin minä ei voi sitä avata, sillä tiedosto sisältää ftp-palvelimen salasanani salaamattomassa muodossa.
- Avaan komennolla
- Luon komentojonotiedoston kuvan päälle tulevien tekstien latomiseen.
- Avaan komennolla
gedit ~/bin/camprintkomentojonotiedoston muokattavaksi. Tiedoston sisältö on seuraavassa:
#!/bin/sh # kirjasimen voi säätää tästä. FONT="-font Helvetica -pointsize 10" # ladotaan komentorivillä annetut tekstit. # ensimmäinen parametri ladotaan ylälaitaan, # toinen alalaitaan. convert webcam.png \ -gravity north -stroke '#000C' -strokewidth -2 \ $FONT -annotate 0 "$1" \ -stroke none $FONT -fill white -annotate 0 "$1" \ -gravity south -stroke '#000C' -strokewidth -2 \ $FONT -annotate 0 "$2" \ -stroke none $FONT -fill white -annotate 0 "$2" \ -quality 80 webcam.jpgLataa
camprint(498 tavun komentojonotiedosto) - Muutan komennolla
chmod +x ~/bin/camprintkomentojonotiedoston oikeuksia niin, että siitä tulee suoritettava.
- Avaan komennolla
- Luon komentojonotiedoston, joka kerää toiminnot yhteen. Se ottaa kameralla kuvan, latoo kuvan päälle tekstit ja lataa kuvatiedoston sen jälkeen web-palvelimelle.
- Avaan komennolla
gedit ~/.camE/camEshkomentojonotiedoston muokattavaksi. Tiedoston sisältö on seuraavassa:
#!/bin/sh cd /home/jani/.camE/ if [ -f BLOCK ] then exit fi # napataan kuva. camE -s -c camErc # parhaillaan soivan kappaleen esittely. NP="`/home/jani/bin/rhythmbox-print-playing`" # kuvanottohetki. DT=$(date -d "`stat -c %y webcam.png | cut -d. -f1`" | \ cut -d+ -f1 | sed 's/[ ]*$//') # ladotaan tekstit. /home/jani/bin/camprint "$NP" "$DT" # jos kuvan luominen on onnistunut, # siirretään se palvelimelle. if [ -f webcam.jpg ] then # tämä vaatii toimivan, putcampic-nimisen # makron ~/.netrc:ssä. echo "\$ putcampic" | ftp mummila.atspace.com rm webcam.jpg webcam.png fi - Muutan komennolla
chmod +x ~/.camE/camEshkomentojonotiedoston oikeuksia niin, että siitä tulee suoritettava.
- Avaan komennolla
- Luon komentojonotiedostot kamerakuvan lähetyksen käynnistystä ja lopettamista varten.
- Avaan komennolla
gedit ~/bin/camonkäynnistyskomentojonotiedoston muokattavaksi. Tiedoston sisältö on seuraavassa:
#!/bin/sh rm -f /home/jani/.camE/BLOCK - Avaan komennolla
gedit ~/bin/camofflopetuskomentojonotiedoston muokattavaksi. Tiedoston sisältö on seuraavassa:
#!/bin/sh touch /home/jani/.camE/BLOCK - Muutan molempien komentojonotiedostojen oikeuksia komennolla
chmod +x ~/bin/camon ; chmod +x ~/bin/camoffniin, että niistä tulee suoritettavia. - Asetan lopuksi komennolla
camoffkuvien lähettämisenpois päältä
-tilaan.
- Avaan komennolla
- Luon
crontab-tiedostoon rivin, joka suorittaa tehtävät kerran minuutissa aina silloin kun olen niin määrännyt.
Avaan komennollacrontab -ecrontab-tiedostoni muokattavaksi. Lisään tiedostoon seuraavan rivin:* * * * * /home/jani/.camE/camEsh
Kaikkien näiden toimenpiteiden jälkeen kuvan ottaminen ja web-palvelimelle päivittäminen tapahtuu kerran minuutissa sen jälkeen, kun olen komentanut
camon, ja jatkuu kunnes komennancamoff. - Luon komennolla kotihakemistooni
- Huomautuksia
-
- Tämän ratkaisun lähtökohdissa mainittu webkamerakuvaa näyttävä sivuni löytyy webistä.
- CamE osaa itsekin latoa tekstiä ottamansa kuvan päälle ja kopioida kuvan palvelimelle ftp:tä käyttäen. Jälkikäsittelymahdollisuuksia on kuitenkin enemmän, kun jälkikäsittelyyn käytetään
ImageMagickia. Tässä ratkaisussa käytin melkein kaikkein yksinkertaisinta tekstinladontatapaa, joka ei juurikaan poikkea siitä mihin camE pystyisi. ImageMagickin mahdollistamia erilaisia hienoja ladontatapoja on esitelty Examples of ImageMagick Usage -oppaassa. - Komennolla
camE -s -c ~/.camE/camErcvoi testata CamE:n asetustiedoston,~/.camE/camErc:n toimivuutta. Komennon ajamisen jälkeen asetustiedostossa olevantemp_file-parametrin määrittelemässä paikassa pitäisi olla web-kameran ottama kuva. - Komennolla
echo "\$ putcampic" | ftp ftp.palvelin.comvoi testata ftp-asetustiedoston,~/.netrc:n toimivuutta sen jälkeen, kun~/.camE-hakemistossa on webcam.jpg -niminen tiedosto.
Tag: camE
-
[Ratkaisu] Web-kamerakuvan lähettäminen www-palvelimella näytettäväksi