{ }
menu zespół linki Logowanie
Stabilny hosting
BSDGuru zawdzięcza
firmie Datanet.pl
Hosting BSDGuru.org - DataNet.pl

FreeBSD webcam tools HOWTO

Pietą achillesową FreeBSD jest obsługa wielu multimedialnych gadżetów jak chociażby coraz bardziej popularnych webcamów. Jeśli jednak posiadasz kamerkę z kością OV511/OV511+ to możesz jej używać także i pod systemem FreeBSD. Rodzina urządzeń wyposażonych w tenże chip jest dość duża, produkują je takie firmy jak:

  • D-Link,
  • Puretek,
  • Crealive Labs,
  • Koala-Cam,
  • Lifeview,Avermedia,
  • MediaForte,
  • Asmax..

jak i wiele innych.

Gdy posiadasz już webcama lecz nie znasz chipsetu sprawdź go wpisujac:

dmesg | grep ugen.

Natomiast gdy myślisz dopiero o jej zakupie zasięgnij informacji na stronie linuxowego projektu OVCam Drivers (http://alpha.dyndns.org/ov511), gdzie znajduje się w miarę aktualna lista dostępnego sprzętu wraz ze specyfikacją. Właśnie w oparcie o wymienione linuxowe sterowniki powstał program ovtvid-bsd (http://sourceforge.net/projects/ovtvid-bsd), dostępny w portach systemow FreeBSD oraz NetBSD ( ../graphics/vid ). Sam program posiada bardzo ubogie opcje i pozwala jedynie na wygenerowanie pojedynczego obrazu w formacie PPM (portable pixel map) w dwóch rozdzielczościach (320x200 oraz 640x80). Jeśli jednak zainstalowałeś port z vid'em, to wzbogaciłeś się także o zestaw pomocnych narzędzi do obróbki grafiki rastrowej - netpbm. Pakiet ten zawiera ponad 200 programów, działajacych z linii komend, bez konieczności korzystania z GUI. Jeśli znasz jakikolwiek język skryptowy, to otrzymałeś idealne narzędzia umożliwiające konwersję do bardziej popularnych formatów graficznych (jpg, bmp, gif, tif, ...) jak i tych bardzo rzadko stosowanych (WAP bitmap, NOKIA SMF) czy też nawet do postaci ascii.
Pełną listę programów wraz z krótkim opisem znajdziesz pod adresem: http://netpbm.sourceforge.net/doc/directory.html.

Przejdzmy w końcu do przykładów i przetestujmy kamerkę. Na początku sprawdzmy jakość obrazu:

[root@Daimonion|~]# vid -d /dev/ugen0 |  > skrin.ppm; xv skrin.ppm


Jako przeglądarki plików graficznych używam xv, ale istnieje wiele innych programów obsługujących format ppm. Jeśli chodzi o moją kamerę, to obraz jaki pierwotnie otrzymałem był zbyt ciemny. Nie odpowiadał mi także kadr, zmieniłem więc położenie kamery oraz skorzystałem z dodatkowych narzędzi:
[root@Daimonion|~]vid --small | /usr/local/bin/ppmnorm \
| /usr/local/bin/ppmbrighten -s -10 -v -20 \
| ppnmrotate -90 ; xv rot.ppm  


Po rozjaśnieniu


Aby uzyskać efekt "rozfalowania" użyj pnmspread

Zapewne chciałbyś podzielić się obrazem z kamery w sieci. Oto prosty skrypt tworzący stronę ze zdjęciem wraz z datą, która jest uaktualniania co minutę oraz wrzucana na serwer.

  #!/bin/sh

   while echo

   do

     echo ' <META HTTP-EQUIV="Refresh" CONTENT="60; URL=http://twoj.site">
     <html><head><title> webcam </title></head><body bgcolor="black
     "><body>
     <center> <font color="green"> <br>'`date` > cam.html

     /usr/local/bin/vid --small | /usr/local/bin/ppmnorm | \
     /usr/local/bin/ppmbrighten -s -10 -v -20 | pnmpad - white | /usr/local/bin/ppmtojpeg > cam.jpg

     echo '<br>  <img src="cam.jpg">' >> cam.html

     echo '<br></center></body> </html>' >> cam.html

     echo 'prompt off;put cam.*' >  wrzuc

     ftp <a href="ftp://uzytkownik:haslo@twoj.site:21/usr/home/uzytkownik/public_html" title="ftp://uzytkownik:haslo@twoj.site:21/usr/home/uzytkownik/public_html">ftp://uzytkownik:haslo@twoj.site:21/usr/home/uzytkownik/public_html</a> < wrzuc

     sleep 60

   done

Narzędzia pakietu netpbm nie ograniczają się tylko do statycznych obrazów, możemy stworzyć za ich pomocą także film w formacie mpeg2.

Dla przykładu zbudujmy animację wykorzystującą efekt "rozpływającego się obrazu".

  [root@Daimonion|~]# ppmfade -f 1.ppm -l 2.ppm -spread -base film

Program powinien wygenerować 30 klatek, które następnie potrzebujemy połączyć w jeden plik za pomocą ppmtompeg.

Stwórz plik konfiguracyjny o nazwie film zawierający następujące zmienne:

PATTERN IBBPBBPBBPBBPBB
INPUT_DIR /tmp/

# wpisz sciezke katalogu w ktorym znajduja sie pliku
INPUT
film.*.ppm [0001-0030]
END_INPUT

OUTPUT filmik.mpg

# podaj nazwe pliku wyjsciowego
BASE_FILE_FORMAT PPM
INPUT_CONVERT *
PIXEL HALF
GOP_SIZE 30
PQSCALE 15
RANGE 2
PSEARCH_ALG LOGARITHMIC
IQSCALE 2
PQSCALE 2
BQSCALE 2
SLICES_PER_FRAME 4
BSEARCH_ALG SIMPLE
REFERENCE_FRAME ORIGINAL

Teraz wystarczy tylko wpisać:

root@Daimonion|~]# ppmtompeg film

Autor: 
nusquam
Porozmawiaj o tym artykule na forum: 

quex, sob., 01/03/2008 - 01:29