Nistkasten-Kamera

Einbindung der Kamera als Webcam

[Einleitung] [DSL-Router] [Videoserver] [Webseite] [Weitergehende Infos und Hinweise]

Einleitung

Zur Einbindung der aktuellen Kamerabildes in die Webseite verwende ich derzeit einen Videoserver. Hierbei handelt es sich um ein kleines Gerätchen von 8,5 x 3,5 x 3 cm mit Video- und Netzwerk-Anschluß, das autonom arbeitet, nur sehr wenig Strom verbraucht und nicht auf einen ständig laufenden Rechner angewiesen ist. Angeschlossen an einen freien LAN-Port des DSL-Routers, über den die Internetverbindung hergestellt wird, stellt er die Bilder der Nistkasten-Kamera im Internet bereit. Durch ein in die Webseite eingebettetes JavaScript wird das aktuelle, vom Videoserver gelieferte Kamerabild in regelmäßigen Zeitabständen abgerufen und angezeigt. Einen "echten" Video-Stream kann ich derzeit wegen meines begrenzten DSL-Upstreams (nur 512 kBit/s) nicht anbieten.

Die Konfiguration der einzelnen Komponenten (DSL-Router, Videoserver und Webseite) wird in den folgenden Abschnitten detailliert beschrieben.

DSL-Router

Der DSL-Router (in meinem Fall eine FRITZ!Box Fon WLAN 7170 von AVM) stellt unabhängig vom PC die Internetverbindung her und erlaubt so den Betrieb des Videoservers, auch ohne daß dafür der Rechner laufen muß. Der Vidoserver wird dazu einfach per LAN-Kabel an den Router angeschlossen und kann darüber ins Internt.



DSL-Router AVM FRITZ!Box Fon WLAN 7170
 

Konfiguration

Wenn der Videoserver ständig von außen über das Internet erreichbar sein soll, z.B. um den direkten Audio/Video-Stream über das Internet zugänglich zu machen, oder um ohne den Umweg über FTP-Uploads direkt auf die Einzelbilder der Kamera zugreifen zu können (wie in meinem Fall), dann muß der DSL-Router zuvor passend konfiguriert werden. Wer nur die Einzelbilder der Kamera durch den Videoserver in regelmäßigen Abständen per FTP hochladen lassen möchte, um sie in die Webseite einzubinden, braucht sich damit nicht auseinanderzusetzen und kann dieses Kapitel überlesen und sofort zum Kapitel "Videoserver" springen.

[Details einblenden]

Videoserver

An den Videoserver ist die Kamera (bzw. in meinem Fall über die Umschaltbox die beiden Kameras) angeschlossen. Dieser digitalisiert das analoge PAL-Videosignal und bereitet es als Video-Stream im Format H.264, als Motion-JPEG-Stream (MJPEG) und als einzeln abrufbare JPEG-Standbilder auf, auf die dann über das Netzwerk "empfangen" werden können. Dazu ist der Videoserver per LAN-Kabel an die Fritzbox angeschlossen. Die Kamera ist an den Videoserver und parallel dazu an die TV-Karte (Hauppauge WinTV PCI-FM) meines Rechners angeschlossen, sodaß ich das Live-Bild mit Ton auch direkt am PC ansehen und ggf. mitschneiden kann (hierzu benutze ich die Software Debut Video Capture von NCH, allerdings in der älteren Version 1.42, die noch Freeware ist).

Als Videoserver verwende ich derzeit den AXIS M7001, das kleine weiße Kästchen im Vordergrund:



Videoserver AXIS M7001
 

Da der AXIS M7001 über das Netzwerkkabel mit Strom versorgt wird, ist zudem ein POE-Netzteil ("POE-Injector") erforderlich. Ich verwende hierzu den DIGITUS DN-95101, das etwa dreimal so große, schwarze Kästchen hinter dem Videoserver.

Leider mußte ich schnell feststellen, daß auch ein Markengerät wie der AXIS M7001 nicht frei von groben Firmware-Bugs ist, die umständliche Workarounds notwendig machen. Eine Übersicht über die verschiedenen, bisher von mir getesteten Videoserver und meine "Erfahrungen" damit habe ich auf einer eigenen Seite zusammengestellt, da diese den Rahmen dieser Beschreibung sprengen würden...

Konfiguration

Nach dem Anschließen bezieht der Videoserver vom Router per DHCP automatisch eine lokale IP-Adresse und ist somit im Netzwerk erreichbar. Vor der ersten Inbetriebnahme müssen jedoch noch einige Einstellungen vorgenommen werden, wie beispielsweise die Vergabe eines Paßwortes für den Administrations-Benutzer "root", die Einstellung der Videoparameter (Auflösung, Helligkeit, Kontrast, Farbe), oder die Aktivierung bestimmter Funktionen wie das bewegungserkennungs- oder zeitgesteuerte Hochladen von Bildern auf einen Webserver.

Für meinen Anwendungsfall habe ich den Videoserver so konfiguriert, daß bei Bewegungserkennung automatisch Bilder per FTP auf den Webserver hochgeladen werden, wo sie in einer Bilder-Galerie angezeigt werden. Für das Live-Bild auf der Startseite wird per JavaScript ca. alle 2 Sekunden ein aktuelles Standbild direkt vom Videoserver geholt.

Alle Einstellungen werden über die Web-Oberfläche des Videoservers vorgenommen. Dazu gibt man in die Adreßzeile seines Lieblings-Browsers die lokale IP-Adresse des Videoservers ein und klickt sich durch die Konfigurations-Menüs. Einige der wichtigsten Einstellungen des AXIS M7001 führe ich im Folgenden exemplarisch auf:

[Details einblenden]

Webseite

Nachdem der Videoserver läuft, geht es nun darum, das vom Videoserver gelieferte Kamera-Bild als "bewegtes Bild" in die Webseite einzubinden. Da meine DSL-Bandbreite (512 kBit/s Upload-Geschwindigkeit) nicht ausreicht, um einen echten Live-Stream anzubieten, habe ich die bandbreitenschonendere Lösung gewählt, bei der ein in die Webseite eingebundenes Standbild alle paar Sekunden durch den Browser aktualisiert wird. Hierzu gibt es verschiedene Möglichkeiten, von denen im Folgenden drei vorgestellt werden:

Automatische Aktualisierung des Webcam-Bildes per JavaScript

Das vom Videoserver per FTP regelmäßig hochgeladene Bild – oder alternativ das aktuelle Standbild direkt aus dem Videoserver – kann sehr einfach mit z.B. <img src="autoupload/video.jpg"> in die Webseite eingebunden werden. Allerdings würde ein Besucher so immer nur das zuletzt hochgeladene Bild sehen. Um ein neues, aktuelles Bild zu sehen, müßte er die Seite neu laden. Damit das automatisch geht, kann man in die Seite ein kleines JavaScript einbetten, das das regelmäßige Neuladen des Bildes (nicht der ganzen Seite) vornimmt. Hierbei sollte das Intervall des Neuladens dem Intervall entsprechen, mit dem der Videoserver seinerseits die Bilder hochlädt, also z.B. 10 Sekunden. Des weiteren sollte bedacht werden, daß das regelmäßige Aktualisieren des Bildes Netzwerklast ("Traffic") verursacht. Manche Webspace-Provider geben hier eine Begrenzung pro Monat vor - vor allem bei kleineren Webspace-Paketen. So ein Bild hat ca. 10-12 KB; wenn es alle 10 Sekunden neu geladen wird, macht das 3,5 MB pro Stunde. Wenn nun 10 Besucher die Seite 24 Stunden am Tag geöffent hätten, wären das schon 250 GB im Monat (falls ich mich jetzt nicht verrechnet habe). Aus diesem Grund ist es sinnvoll, die maximale Übertragungsdauer für die Webcam-Bilder zu begrenzen, z.B. auf eine halbe Stunden oder auch 10 Minuten. Nach Ablauf dieser Zeit erscheint statt des Kamerabildes eine statisches Bild und in der Statuszeile unter dem Bild der Hinweis "Übertragung beendet" sowie ein Link zum Neustarten der Übertragung.

Hier ein Beispiel-JavaScript für diesen Zweck:

[Details einblenden]

Hier eine funktionierende Beispiel-Webseite dazu:

Automatische Aktualisierung des Webcam-Bildes per Java- oder Flash-Applet

Anstelle des JavaScripts können auch Java- oder Flash-Applets benutzt werden, um das Webcam-Bild in regelmäßigen Abständen neu zu laden und anzuzeigen. Ein möglicher Vorteil gegenüber JavaScript wäre, daß hierbei das ständige Flackern der Statuszeile bzw. der Lade-Fortschrittsanzeige des Browsers unterbunden wird, das beim regelmäßigen Laden des Bildes per JavaScript auftritt. Da die verfügbaren Applets keine Funktion zur zeitlichen Begrenzung der Übertragung enthalten, kann man jedoch auf JavaScript nicht ganz verzichten.

Hier zwei entsprechende Beispiele:

Einige Verbesserungen

Zu den bisher beschriebenen Methoden zum automatischen Neuladen des Webcam-Bildes per JavaScript sind diverse Verbesserungen und Erweiterungen denkbar, wie z.B.:

1. Umgehen der Authentifizierung des Videoservers bei Direktzugriff auf das Kamerabild

[Details einblenden]

2. Begrenzung der Upstream-Datenmenge durch serverseitige Zwischenspeicherung des Webcam-Bildes

[Details einblenden]

3. Verbesserung der Bildqualität

[Details einblenden]

4. Zeitstempel im Bild

[Details einblenden]

5. Zuschauer-Zähler

[Details einblenden]

Zu den Punkten 2. bis 5. hier ein entsprechendes Beispiel:

Automatisch erstellte Schnappschuß-Galerie

Die bei Bewegungserkennung automatisch erstellten Schnappschüsse werden vom Videoserver in ein Verzeichnis /gallery/Jahr-Monat-Tag auf dem Webserver hochgeladen, wobei Jahr, Monat und Tag dem Datum des jeweiligen Schnappschusses entsprechen. (Das Verzeichnis /gallery/2011-06-01 z.B. steht also für den 1. Juni 2011.) Somit landen alle Schnappschüsse eines Tages automatisch in einem Tagesverzeichnis. Auf der Website werden die Bilder mit Hilfe eines Perl-Scripts in Form einer Fotogalerie dargestellt, die automatisch anhand der auf dem Webserver vorhandenen Verzeichnisstruktur erstellt wird:



Die Bilder-Galerie im verkleinerten Firefox-Fenster

[Details einblenden]


Zurück zu Nistkasten Nr. 3


Homepage > Nistkasten-Kamera > Technik > Webcam