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:
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:

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:
| /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.
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".
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:
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ć:
quex, sob., 01/03/2008 - 01:29
