- 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
,imagemagick
jarhythmbox
ovat 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-musiikkisoittimessa
soivasta 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/camErc
asetustiedoston 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 ~/.netrc
asetustiedoston 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 ~/.netrc
asetustiedoston 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/camprint
komentojonotiedoston 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.jpg
Lataa
camprint
(498 tavun komentojonotiedosto) - Muutan komennolla
chmod +x ~/bin/camprint
komentojonotiedoston 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/camEsh
komentojonotiedoston 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/camEsh
komentojonotiedoston oikeuksia niin, että siitä tulee suoritettava.
- Avaan komennolla
- Luon komentojonotiedostot kamerakuvan lähetyksen käynnistystä ja lopettamista varten.
- Avaan komennolla
gedit ~/bin/camon
käynnistyskomentojonotiedoston muokattavaksi. Tiedoston sisältö on seuraavassa:
#!/bin/sh rm -f /home/jani/.camE/BLOCK
- Avaan komennolla
gedit ~/bin/camoff
lopetuskomentojonotiedoston 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/camoff
niin, että niistä tulee suoritettavia. - Asetan lopuksi komennolla
camoff
kuvien 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 -e
crontab-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/camErc
voi 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.com
voi testata ftp-asetustiedoston,~/.netrc
:n toimivuutta sen jälkeen, kun~/.camE
-hakemistossa on webcam.jpg -niminen tiedosto.
Comments
One response to “[Ratkaisu] Web-kamerakuvan lähettäminen www-palvelimella näytettäväksi”
Poistin merkinnästä tämäntyyppisen ongelman yhteydessä tyhjänpäiväisen syy-osion.