{"id":2216,"date":"2008-02-12T15:14:35","date_gmt":"2008-02-12T13:14:35","guid":{"rendered":"http:\/\/mummila.net\/vuorovaikutus\/2008\/02\/12\/web-kamerakuvan-lahettaminen-www-palvelimella-naytettavaksi\/"},"modified":"2008-02-12T15:14:35","modified_gmt":"2008-02-12T13:14:35","slug":"web-kamerakuvan-lahettaminen-www-palvelimella-naytettavaksi","status":"publish","type":"post","link":"https:\/\/mummila.net\/nuudelisoppa\/2008\/02\/12\/web-kamerakuvan-lahettaminen-www-palvelimella-naytettavaksi\/","title":{"rendered":"[Ratkaisu] Web-kamerakuvan l\u00e4hett\u00e4minen www-palvelimella n\u00e4ytett\u00e4v\u00e4ksi"},"content":{"rendered":"<dl>\n<dt>L\u00e4ht\u00f6kohta<\/dt>\n<dd>Olen kytkenyt web-kameran tietokoneeseeni. Kameralle on ajurit, ja se toimii, eli pystyn katsomaan kameran ottamaa kuvaa paikallisesti esimerkiksi <code>xawtv<\/code>:ll\u00e4.<br \/>\n   Minulla on k\u00e4ytt\u00e4j\u00e4tunnus ja salasana ftp-palvelimelle, ja niit\u00e4 k\u00e4ytt\u00e4en pystyn p\u00e4ivitt\u00e4m\u00e4\u00e4n web-sivuiltani maailmalle n\u00e4kyv\u00e4\u00e4 sis\u00e4lt\u00f6\u00e4. Palvelimella on web-sivu, joka n\u00e4ytt\u00e4\u00e4 palvelintilaani tallennetun <code>webcam.jpg<\/code> -nimisen tiedoston, ja p\u00e4ivitt\u00e4\u00e4, eli lataa kuvan automaattisesti uudestaan kerran minuutissa.<br \/>\n   Omalla koneellani, kotihakemistossani on <code>bin<\/code>-alihakemisto ja se on m\u00e4\u00e4ritelty komentojenhakupolkujen (<code>PATH<\/code>-muuttuja) joukkoon komentoriviprofiilissani. Olen tallentanut bin-hakemistoon <a href=\"http:\/\/mummila.net\/vuorovaikutus\/2008\/02\/11\/cronin-suorittama-rhythmbox-client-print-playing-format-ei-toimi\/\"><code>rhythmbox-print-playing<\/code><\/a> -komentojonotiedoston ja todennut sen toimivan.<br \/>\n   Pakettienhallinnassa <code>ftp<\/code>, <code>came<\/code>, <code>imagemagick<\/code> ja <code>rhythmbox<\/code> ovat asennettuna.<\/dd>\n<dt>Ongelma<\/dt>\n<dd>Haluan, ett\u00e4 tietokoneeni tallentaa web-kamerani n\u00e4kym\u00e4n kuvatiedostoon, lis\u00e4\u00e4 tiedostoon tallennetun kuvan p\u00e4\u00e4lle tekstin\u00e4 kuvanottohetken ja lis\u00e4ksi tiedot samalla hetkell\u00e4 <code>Rytmilaatikko-musiikkisoittimessa<\/code> soivasta kappaleesta, ja l\u00e4hett\u00e4\u00e4 sen j\u00e4lkeen kuvasta kopion web-palvelimelle. Haluan, ett\u00e4 n\u00e4in tapahtuu automaattisesti kerran minuutissa sen j\u00e4lkeen, kun olen antanut k\u00e4skyn, ja aina siihen saakka, ett\u00e4 annan kielt\u00e4v\u00e4n k\u00e4skyn.<\/dd>\n<dt>Ratkaisu<\/dt>\n<dd>\n<ol>\n<li><strong>Luon komennolla kotihakemistooni <code>.camE<\/code> -alihakemiston.<\/strong> Hakemiston luomiseen k\u00e4yt\u00e4n <code>mkdir ~\/.camE<\/code> -komentoa. T\u00e4h\u00e4n hakemistoon tallennan jatkossa osan tarvittavista tiedostoista.<\/li>\n<li><strong>Luon <code>camE<\/code>:lle kuvan ottamiseen liittyv\u00e4t parametrit m\u00e4\u00e4rittelev\u00e4n asetustiedoston.<\/strong><br \/>\n     Avaan komennolla <code>gedit ~\/.camE\/camErc<\/code> asetustiedoston muokattavaksi. Tiedoston sis\u00e4lt\u00f6 on seuraavassa:<\/p>\n<blockquote>\n<pre><code>[ftp]\ndo = 0\n\n[grab]\narchive_shot_every = 0\nlogfile = \/home\/jani\/.camE\/camElog\ndevice = \/dev\/video0\ntemp_file = \/home\/jani\/.camE\/webcam.png\nblockfile = \/home\/jani\/.camE\/BLOCK\n\n# lag reduction, takes 5 shots, discards\n# the first 4, thus clearing mmap buffers\nlag_reduce = 5\n\nwidth  = 320\nheight = 240<\/code><\/pre>\n<\/blockquote>\n<\/li>\n<li><strong>Luon kuvan web-palvelimelle lataamista varten <a href=\"http:\/\/ubuntuforums.org\/showthread.php?t=656156&amp;page=2#post4130827\">ftp-asetustiedoston<\/a>.<\/strong>\n<ol>\n<li>Avaan komennolla <code>gedit ~\/.netrc<\/code> asetustiedoston muokattavaksi. Tiedoston sis\u00e4lt\u00f6 on seuraavassa:<br \/>\n<blockquote>\n<pre><code>machine ftp.palvelin.com\nlogin tunnukseni\npassword salasanani\n\nmacdef putcampic\n\tprompt off\n\tlcd \/home\/jani\/.camE\n\tcd kuvakansio\n\tbin\n\tput webcam.jpg\n\tquit<\/code><\/pre>\n<\/blockquote>\n<\/li>\n<li>Muutan komennolla <code>chmod 600 ~\/.netrc<\/code> asetustiedoston oikeuksia niin, ett\u00e4 kukaan muu kuin min\u00e4 ei voi sit\u00e4 avata, sill\u00e4 tiedosto sis\u00e4lt\u00e4\u00e4 ftp-palvelimen salasanani salaamattomassa muodossa.<\/li>\n<\/ol>\n<\/li>\n<li><strong>Luon komentojonotiedoston kuvan p\u00e4\u00e4lle tulevien tekstien latomiseen.<\/strong>\n<ol>\n<li>Avaan komennolla <code>gedit ~\/bin\/camprint<\/code> komentojonotiedoston muokattavaksi. Tiedoston sis\u00e4lt\u00f6 on seuraavassa:<br \/>\n<blockquote>\n<pre><code>#!\/bin\/sh\n\n# kirjasimen voi s\u00e4\u00e4t\u00e4\u00e4 t\u00e4st\u00e4.\nFONT=\"-font Helvetica -pointsize 10\"\n\n# ladotaan komentorivill\u00e4 annetut tekstit.\n# ensimm\u00e4inen parametri ladotaan yl\u00e4laitaan,\n# toinen alalaitaan.\nconvert webcam.png \\\n\t-gravity north -stroke '#000C' -strokewidth -2 \\\n\t$FONT -annotate 0 \"$1\" \\\n\t-stroke none $FONT -fill white -annotate 0 \"$1\" \\\n\t-gravity south -stroke '#000C' -strokewidth -2 \\\n\t$FONT -annotate 0 \"$2\" \\\n\t-stroke none $FONT -fill white -annotate 0 \"$2\" \\\n\t-quality 80 webcam.jpg<\/code><\/pre>\n<p>       <a href=\"\/vuorovaikutus\/files\/2008\/camprint\">Lataa <code>camprint<\/code><\/a> (498 tavun komentojonotiedosto)<\/p><\/blockquote>\n<\/li>\n<li>Muutan komennolla <code>chmod +x ~\/bin\/camprint<\/code> komentojonotiedoston oikeuksia niin, ett\u00e4 siit\u00e4 tulee suoritettava.<\/li>\n<\/ol>\n<\/li>\n<li><strong>Luon komentojonotiedoston, joka ker\u00e4\u00e4 toiminnot yhteen.<\/strong> Se ottaa kameralla kuvan, latoo kuvan p\u00e4\u00e4lle tekstit ja lataa kuvatiedoston sen j\u00e4lkeen web-palvelimelle.\n<ol>\n<li>Avaan komennolla <code>gedit ~\/.camE\/camEsh<\/code> komentojonotiedoston muokattavaksi. Tiedoston sis\u00e4lt\u00f6 on seuraavassa:<br \/>\n<blockquote>\n<pre><code>#!\/bin\/sh\n\ncd \/home\/jani\/.camE\/\n\nif [ -f BLOCK ]\nthen\n  exit\nfi\n\n# napataan kuva.\ncamE -s -c camErc\n\n# parhaillaan soivan kappaleen esittely.\nNP=\"`\/home\/jani\/bin\/rhythmbox-print-playing`\"\n\n# kuvanottohetki.\nDT=$(date -d \"`stat -c %y webcam.png | cut -d. -f1`\" | \\\n\tcut -d+ -f1 | sed 's\/[ ]*$\/\/')\n\n# ladotaan tekstit.\n\/home\/jani\/bin\/camprint \"$NP\" \"$DT\"\n\n# jos kuvan luominen on onnistunut,\n# siirret\u00e4\u00e4n se palvelimelle.\nif [ -f webcam.jpg ]\nthen\n  # t\u00e4m\u00e4 vaatii toimivan, putcampic-nimisen\n  # makron ~\/.netrc:ss\u00e4.\n  echo \"\\$ putcampic\" | ftp mummila.atspace.com\n  rm webcam.jpg webcam.png\nfi<\/code><\/pre>\n<\/blockquote>\n<\/li>\n<li>Muutan komennolla <code>chmod +x ~\/.camE\/camEsh<\/code> komentojonotiedoston oikeuksia niin, ett\u00e4 siit\u00e4 tulee suoritettava.<\/li>\n<\/ol>\n<\/li>\n<li><strong>Luon komentojonotiedostot kamerakuvan l\u00e4hetyksen k\u00e4ynnistyst\u00e4 ja lopettamista varten.<\/strong>\n<ol>\n<li>Avaan komennolla <code>gedit ~\/bin\/camon<\/code> k\u00e4ynnistyskomentojonotiedoston muokattavaksi. Tiedoston sis\u00e4lt\u00f6 on seuraavassa:<br \/>\n<blockquote>\n<pre><code>#!\/bin\/sh\n\nrm -f \/home\/jani\/.camE\/BLOCK<\/code><\/pre>\n<\/blockquote>\n<\/li>\n<li>Avaan komennolla <code>gedit ~\/bin\/camoff<\/code> lopetuskomentojonotiedoston muokattavaksi. Tiedoston sis\u00e4lt\u00f6 on seuraavassa:<br \/>\n<blockquote>\n<pre><code>#!\/bin\/sh\n\ntouch \/home\/jani\/.camE\/BLOCK<\/code><\/pre>\n<\/blockquote>\n<\/li>\n<li>Muutan molempien komentojonotiedostojen oikeuksia komennolla <code>chmod +x ~\/bin\/camon ; chmod +x ~\/bin\/camoff<\/code> niin, ett\u00e4 niist\u00e4 tulee suoritettavia.<\/li>\n<li>Asetan lopuksi komennolla <code>camoff<\/code> kuvien l\u00e4hett\u00e4misen <q>pois p\u00e4\u00e4lt\u00e4<\/q> -tilaan.<\/li>\n<\/ol>\n<\/li>\n<li><strong>Luon <code>crontab<\/code>-tiedostoon rivin, joka suorittaa teht\u00e4v\u00e4t kerran minuutissa aina silloin kun olen niin m\u00e4\u00e4r\u00e4nnyt.<\/strong><br \/>\n     Avaan komennolla <code>crontab -e<\/code> crontab-tiedostoni muokattavaksi. Lis\u00e4\u00e4n tiedostoon seuraavan rivin:<\/p>\n<blockquote>\n<pre><code>* * * * * \/home\/jani\/.camE\/camEsh<\/code><\/pre>\n<\/blockquote>\n<\/li>\n<\/ol>\n<hr \/>\n<p>   Kaikkien n\u00e4iden toimenpiteiden j\u00e4lkeen kuvan ottaminen ja web-palvelimelle p\u00e4ivitt\u00e4minen tapahtuu kerran minuutissa sen j\u00e4lkeen, kun olen komentanut <code>camon<\/code>, ja jatkuu kunnes komennan <code>camoff<\/code>.\n  <\/dd>\n<dt>Huomautuksia<\/dt>\n<dd>\n<ul>\n<li>T\u00e4m\u00e4n ratkaisun l\u00e4ht\u00f6kohdissa mainittu <a href=\"http:\/\/mummila.atspace.com\/webcam.html\">webkamerakuvaa n\u00e4ytt\u00e4v\u00e4 sivuni<\/a> l\u00f6ytyy webist\u00e4.<\/li>\n<li>CamE osaa itsekin latoa teksti\u00e4 ottamansa kuvan p\u00e4\u00e4lle ja kopioida kuvan palvelimelle ftp:t\u00e4 k\u00e4ytt\u00e4en. J\u00e4lkik\u00e4sittelymahdollisuuksia on kuitenkin enemm\u00e4n, kun j\u00e4lkik\u00e4sittelyyn k\u00e4ytet\u00e4\u00e4n <code>ImageMagickia<\/code>. T\u00e4ss\u00e4 ratkaisussa k\u00e4ytin melkein kaikkein yksinkertaisinta tekstinladontatapaa, joka ei juurikaan poikkea siit\u00e4 mihin camE pystyisi. ImageMagickin mahdollistamia erilaisia <a href=\"http:\/\/www.imagemagick.org\/Usage\/annotating\/\">hienoja ladontatapoja<\/a> on esitelty <i>Examples of ImageMagick Usage<\/i> -oppaassa.<\/li>\n<li>Komennolla <code>camE -s -c ~\/.camE\/camErc<\/code> voi testata CamE:n asetustiedoston, <code>~\/.camE\/camErc<\/code>:n toimivuutta. Komennon ajamisen j\u00e4lkeen asetustiedostossa olevan <code>temp_file<\/code> -parametrin m\u00e4\u00e4rittelem\u00e4ss\u00e4 paikassa pit\u00e4isi olla web-kameran ottama kuva.<\/li>\n<li>Komennolla <code>echo \"\\$ putcampic\" | ftp ftp.palvelin.com<\/code> voi testata ftp-asetustiedoston, <code>~\/.netrc<\/code>:n toimivuutta sen j\u00e4lkeen, kun <code>~\/.camE<\/code> -hakemistossa on webcam.jpg -niminen tiedosto.<\/li>\n<\/ul>\n<\/dd>\n<\/dl>\n","protected":false},"excerpt":{"rendered":"<p>Haluan l\u00e4hett\u00e4\u00e4 tekstill\u00e4 h\u00f6ystetty\u00e4 webkamerakuvaa ftp:n avulla web-palvelimelleni. Luon t\u00e4h\u00e4n k\u00e4ytt\u00f6\u00f6n tarvittavat asetus- ja komentojonotiedostot.<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[3357,3435,3672],"class_list":["post-2216","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-came","tag-imagemagick","tag-rytmilaatikko"],"_links":{"self":[{"href":"https:\/\/mummila.net\/nuudelisoppa\/wp-json\/wp\/v2\/posts\/2216","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mummila.net\/nuudelisoppa\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mummila.net\/nuudelisoppa\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mummila.net\/nuudelisoppa\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/mummila.net\/nuudelisoppa\/wp-json\/wp\/v2\/comments?post=2216"}],"version-history":[{"count":0,"href":"https:\/\/mummila.net\/nuudelisoppa\/wp-json\/wp\/v2\/posts\/2216\/revisions"}],"wp:attachment":[{"href":"https:\/\/mummila.net\/nuudelisoppa\/wp-json\/wp\/v2\/media?parent=2216"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mummila.net\/nuudelisoppa\/wp-json\/wp\/v2\/categories?post=2216"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mummila.net\/nuudelisoppa\/wp-json\/wp\/v2\/tags?post=2216"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}