|
|
|
|
![]() Druckversion |
Nur eine handvoll Webcams werden unter Linux unterstützt, also sollte man sich vor dem
Kauf genau informieren, ob die Webcam auch mit Linux funktioniert.
Als Software-Backend benutzen wir hier das Programm bttvgrab in der Version
0.15.5 (zu erhalten unter http://moes.pmnet.uni-oldenburg.de/bttvgrab/). >> tar zxvf bttvgrab-0.15.5.tar.gz -C /tmp/genügen die drei Befehle >> cd /tmp/bttvgrab-0.15.5/ >> ./configure >> makezum Kompilieren des Programms. Danach kopieren wir das gesamte Verzeichnis nach /usr/local >> cp /tmp/bttvgrab-0.15.5/ /usr/local/(Ein make install ersparen wir uns, da bttvgrab sowieso nur aus einem Skript heraus aufgerufen wird und wir uns somit ein Verstreuen der Programmdateien über das gesamte System ersparen) Will man nun das Grabben des aktuellen TV-Bildes starten, braucht man einen Aufruf des Programms in folgender Form (ausgeführt im Verzeichnis /usr/local/bttvgrab-0.15.10/) >> bttvgrab -f webcam:/tmp/bttvgrab.jpg -s <sleeptime> -w <width> -o jpg -QSLEEPTIME gibt dabei an, in welchen Zeitabständen ein aktuelles TV-Bild aufgenommen werden soll. Der Wert hängt davon ab, was Sie mit Ihrer Webcam aufnehmen. Für Ihre Fische reicht bestimmt ein Wert von 5-10 Sekunden. WIDTH stellt die Größe des erzeugten Bildes ein und sollte zwischen 32 und 768 liegen. Die anderen Optionen haben folgende Bewandnis: -f webcam:/tmp/bttvgrab bewirkt, daß die erzeugten Bilder unter diesem Dateinamen abgelegt werden. Mittels -o jpg werden die Bilder im JPEG-Format erzeugt, und die Option -Q verhindert die Aufnahme des TV-Tons. Ein geeigneter Programmaufruf könnte deshalb folgendermaßen aussehen: >> bttvgrab -f webcam:/tmp/bttvgrab.jpg -s 5 -w 640 -o jpg -QDas Programm begnügt sich daraufhin mit folgendem Text:
Ein Ansteigen der Image Nr. zeigt uns an, daß alles ordnungsgemäß funktioniert. Außerdem sieht man, daß das Programm eigentlich die Datei /tmp/image-new erzeugt, während bttvgrab.jpg nur ein Verweis auf diese Datei darstellt.
Bisher erzeugen wir zwar schon in regelmäßigen Abständen die jeweils aktuellen Bilder, im nächsten Schritt müssen wir nun aber noch dem Web-Benutzer den Zugriff auf diese Bilder ermöglichen. Dafür legen wir zunächst ein neues Verzeichnis auf dem Web-Server an (wir nehmen dabei an, daß das Hauptverzeichnis des Web-Servers unter /usr/local/httpd liegt - dort befindet er sich zumindest bei SuSE-Distributionen). Zunächst erzeugen wir ein Verzeichnis webcam, in dem dann alle Dateien abgelegt werden. >> mkdir /usr/local/httpd/htdocs/webcam Die einfachste Form, ein aktuelles Bild von bttvgrab auf einer Web-Seite darzustellen, ist es, die Web-Seite mittels des Meta-Tags <meta http-equiv="refresh" content="5">automatisch alle 5 Sekunden neu zu Laden. Bei jedem erneuten laden der Seite wird dann auch das aktuelle Bild dargestellt.
Das Skript zeigt dabei nach jedem erneuten Laden die Datei
/usr/local/httpd/htdocs/webcam/webgrab.jpg an. >> bttvgrab -f webcam:/usr/local/httpd/htdocs/webcam/webgrab.jpg -s 1 -w 640 -o jpg -QUnter http://localhost/webcam/webcam.html kann man nun die Seite besuchen.
Wie man sieht, ist das Verfahren, die Seite regelmäßig neu zu laden, nicht sonderlich
angenehm anzuschauen. Bei jedem Neuladen muß auch das Bild neu aufgebaut werden, und
es entsteht ein nerviges Flackern.
Auch dies ist mit modernen Browsern möglich und wird Server-Push genannt. Die benötigte HTML-Seite sollte etwa folgendermaßen aussehen:
Und ist nur dafür zuständig, ein Bild anzuzeigen. Allerdings verweist der
Image-Tag <IMG SRC="..."> nicht auf eine Bilddatei, sondern auf
ein CGI-Skript, welches für das Streaming des Bildes zuständig ist.
Wichtig hierbei ist, daß der Name des Skriptes mit den Buchstabe nph
beginnt. Dies signalisiert dem Browser, daß er kein Caching ausführen soll. print "HTTP/1.0 200 Document follows\n"; print "Content-type: multipart/x-mixed-replace;boundary=goober\n\n"; Die Zeile #sleep(1);stellt das Zeitintervall in Sekunden ein, in dem das Bild erneuert werden soll. Mit der jetzigen Einstellung ist diese Zeile auskommentiert, und erlaubt somit ein Übertragen des Bildes so schnell, wie das Netzwerk hergibt. Dies ist aber nur zum Übertragen im lokalen Netzwerk geeignet. Um Daten ins Internet zu schicken, sollte die Raute am Beginn der Zeile entfernt werden, und ein Zahlenwert in der selben Größe eingestellt werden, wie er auch beim Aufruf von bttvgrab benutzt wird.
Um das Skript nun auch ausführen zu dürfen, muß man dem Apache-Webserver zunächst noch
mitteilen, daß sich in dem Verzeichnis webcam/cgi-bin CGI-Skripte
befinden.
und startet den Webserver neu (unter SuSE mittels) >> /sbin/init.d/apache restartSomit wäre alles vorbereitet, um die Webseite mit Server-Push-Technologie auszuprobieren. Wir starten dafür bttvgrab (zum Demonstrieren der Möglichkeiten erstmal ohne Sleep-Time) >> bttvgrab -f webcam:/usr/local/httpd/htdocs/webcam/webgrab.jpg -w 200 -o jpg -Qund gehen auf die Seite http://localhost/webcam/server-push.html.
Es ist schon überraschend, wie flüssig das Video im Browser läuft. Um so
erschreckender ist es, wie hoch die Prozessor-Auslastung ist.
Wie nutzt man diese Technik nun als Webcam?
Der Webcam-Ersatz lohnt sich nur, wenn man bereits im Besitz einer Video-Kamera
und eines Videorecorders ist. Falls nicht, lohnt es sich kaum, diese als Ersatz
für eine Webcam zu kaufen. Die Kosten wären viel zu hoch.
Ein weiteres Problem besteht darin, daß man keine Programme hat, um den Tuner
auf der TV-Karte anzusteuern und dadurch das TV-Programm zu wechseln.
Eine Anregung für den erfahrenen Benutzer ist es, die Webcam automatisch
beim Einwählen ins Internet mittels eines Eintrags in die Datei
/etc/ppp/ip-up zu starten. Eine weitere Version zum Darstellen des Kamerabildes auf einer Webseite stellt ein Java-Applet dar. Hiermit ist es möglich, das sichtbare Laden eines Bildes zu unterdrücken, und das Bild erst dann darzustellen, wenn es auch vollständig im Zwischenspeicher zur Verfügung steht. Wer Interesse an einer derartigen Lösung hat, sollte in der Java-Dokumentation mal nach ImageObserver schauen. Links:
Platz für Kommentare & Fragen:
|
|
|