Kamery internetowe stają się coraz bardziej powszechne, są dołączane do wielu najnowszych modeli laptopów, czy też zaczynają pełnić rolę gadżetów. Obsługa kamer internetowych (ang. "webcam") pod Linuksem jest relatywnie łatwa, pod warunkiem że istnieje moduł kernela dla naszej kamery. W tym artykule omówię ogólnie obsługę takich kamer pod Linuksem, a także na przykładzie kamery Logitech QuickCam Messanger aplikacje, które mogą z nich korzystać.
Praktycznie wszystkie dystrybucje powinny oferować w kernelu pełne wsparcie dla kamer internetowych. Po pierwsze kernel musi obsługiwać USB, co jest raczej standardem we wszystkich współczesnych dystrybucjach. Najlepiej stosować nowsze wersje kernela 2.6.
Device Drivers --->
USB support --->
<*> OHCI HCD support
<*> UHCI HCD (most Intel and VIA) support
Nie mniej oczywistym elementem jest obsługa
Video For Linux w kernelu:
Device Drivers --->
Multimedia devices --->
<*> Video For Linux
Oprócz tego jeżeli zamierzamy stosować sterowniki korzystające ze starego API V4L1 to musimy zaznaczyć również "Enable Video For Linux API 1 compatible Layer", inaczej moduły te nie skompilują się.
By określić dokładny typ kamery podłączanej poprzez USB wystarczy użyć
lsusb z usbutils, który listuje porty USB i identyfikatory podłączonych do nich urządzeń (Notka: wbudowane kamery są traktowane zazwyczaj jako urządzanie połączone przez USB). Oto przykład dla mojej kamery:
Bus 003 Device 004: ID 046d:08da Logitech, Inc.
Bardziej pomocne może okazać się jednak
lshw:
*-usb:1
description: Audio device
product: QuickCam Messanger
vendor: Logitech, Inc.
physical id: 3
bus info: usb@3:3
version: 1.00
capabilities: usb-1.10 audio-streaming
configuration: driver=gspca maxpower=100mA speed=12.0MB/s
Dodatkowo jeżeli przy nazwie elementu (w tym przypadku "*-usb:1") pojawi się "
UNCLAIMED", to oznacza iż nie ma odpowiedniego sterownika dla naszej kamery (pomocne w debugowaniu). Jeżeli nie ma "
UNCLAIMED", to kamera jest gotowa do działania.
Moduły dla tych kamer dostępne są w kernelu. Niektóre z nich mają lepsze moduły stworzone przez osoby trzecie (patrz dalej).
Dostępne są moduły dla kamer nazywanych
ToUcam, lecz nie wszystkich z nich. Nie rozwijany już częściowo zamknięty sterownik
pwcx (tworzony na umowie NDA), oraz rozwijany otwarty fork
pwc. W Gentoo dostępne jako odpowiednio "usb-pwc-re" i "usb-pwcx".
Istnieje szereg modułów wspierających różne kamery. W przypadku problemów należy sprawdzić wszystkie.
Dla mojej kamery potrzebne są o dziwo dwa sterowniki - gspca i qc-usb-messenger. W przypadku qc-usb-messenger (quickcam) moduł był ładowany lecz kamera nie funkcjonowała, dopiero "dodanie" gspca zapewniło obsługę kamery (sam gspca też nie działa, a chyba powinien). Dodatkowo dla gspca i spca5xx może pojawić się błąd w postaci:
open /dev/video0: No space left on device
Sterowniki te żądają dość dużych transferów i inne urządzenia USB podłączone do tego samego HUBa mogą uniemożliwiać uruchomienie kamery zabierając zbyt dużo transferu dla siebie. Należy przełączyć kamerę na inny HUB lub odłączyć zbędne urządzanie podpięte na USB.
Dostępny jest sterownik
OV51x, lecz dostępny jest także
pochodny sterownik z obsługą dekompresji JPEG.
Ta kamera USB obecna jest w niektórych laptopach Sony Vaio SZ 13" i HP Pavilion DV2000/DV6000/DV9000. Nazwa sterownika to "r5u870".
Moduły gspcav1 i linux-uvc wspierają wiele kamer. Sprawdź na stronach projektu czy twoja kamera znajduje się na liście wspieranych modeli. W sieci dostępne są też sterowniki (rozwijane, bądź nie):
Jeżeli używasz nowszych wydań popularnych dystrybucji (korzystających z udeva do ładowania modułów i tworzenia urządzeń w /dev) to moduły powinny być ładowane automatycznie wraz z stworzeniem /dev/video0 i ewentualnie dalszych. Jeżeli /dev/video0 nie jest tworzone, a jesteś pewien że używasz poprawnego modułu to możesz utworzyć go za pomocą polecenia:
mknod /dev/video0 c 81 0
Obecnie najlepszą aplikacją obsługującą kamery internetowe jest
Cheese, aplikacja wchodząca w skład projektu GNOME. Oferuje ona robienie zdjęć, nagrywanie filmów, a także nakładanie różnych efektów. Dla KDE4 istnieje
webkam, lecz nie udało mi się pomyślnie skompilować tej aplikacji. Poniżej Cheese w akcji.
Niektóre aplikacje jak mplayer, xine, vlc muszą być skompilowane z obsługą Video for Linux. W Gentoo odpowiadają im flagi v4l i v4l2. Niektóre aplikacje nie potrafią wykrywać rozdzielczości kamer, więc należy ręcznie określić rozdzielczość kamery za pomocą
v4l-info z
xawtv. Oto fragment zawierający informacje o rozdzielczości:
window
VIDIOCGWIN
x : 0
y : 0
width : 352
height : 288
chromakey : 0
flags : 0
Mplayer potrafi wyświetlać obraz z kamery:
mplayer tv:// -tv driver=v4l:width=352:height=288:device=/dev/video0
mplayer tv:// -tv driver=v4l:width=352:height=288:outfmt=rgb24:device=/dev/video0:noaudio -flip
Jeżeli nie był kompilowany z obsługą v4l zobaczymy komunikat typu:
Playing tv://.
TV file format detected.
No such driver: v4l
A jeżeli wszystko jest w porządku to powinniśmy zobaczyć okno mplayera:
gqcam to prosty i stary program do odbierania obrazu z kamery napisany w GTK+ 1. Posiada kilka dodatkowych opcji jak manipulacja obrazem i zapisywanie zdjęć. Domyślnie próbuje użyć /dev/video, jeżeli nie istnieje możemy stworzyć symlink:
ln -s /dev/video0 /dev/video
Nowszym wcieleniem tej aplikacji jest
camorama dla GNOME. Natomiast użytkownicy sterowników spca5xx lub gspcav1 mogą użyć również
spcaview. Aplikacja posiada szereg opcji, ale by z nich skorzystać należy przeczytać opis programu.
Można użyć także bardzo starego xawtv lub nowszego odpowiednika
camE.
Do nagrywania obrazu z kamery możemy użyć mencodera dostarczanego wraz z
mplayerem:
mencoder tv:// -tv driver=v4l:width=:height=:device=/dev/video0 -nosound -ovc lavc -o .avi
Z aplikacji VoIP i komunikatorów wsparcie dla kamer wideo posiania m.in. aMSN (najnowsze wersje) czy ekiga. Strumieniowanie obrazu z kamery możliwe jest za pomocą
vlc czy
camserv.
- Dodane: 13.02.2009 przez riklaunim