Webcam-Server

Der Mini-Webserver 2010 unterstützt die „Video for Windows“-Schnittstelle (VfW). Damit lassen sich die meisten Webcams betreiben (ohne Ton).

Um eine eigene Kamera auszuprobieren, schalten Sie zunächst im Webserver-Programm die Webcam-Option auf „On“. Im Vorschaufenster sollte man schon das eigene Bild sehen können. Geben Sie dann im Browser diese Adresse ein:

http://localhost/*cam/demo.html     (ggf. noch den :Port einfügen)

Wenn Sie auf der Seite Ihr Kamerabild sehen können, ist die erste Hürde genommen.

Die zweite Hürde ist nun das Einbinden des Live-Bildes in eine Homepage-Seite. Zunächst fügt man an die passende Stelle im HTML dieses Image-Tag ein:

<img src="/*cam/image.jpg?width=320" width="320" height="240" name="WebcamImage">

Durch dieses Image-Tag wird ein Standbild zum Zeitpunkt des Seitenaufbaus angezeigt. Der Mini-Webserver kennt die Bildgrößen 320x240 und 160x120 Pixel. Wenn Sie die Größe manuell anpassen, vergessen Sie bitte die Angabe im ?-Parameter der URL nicht.

Das Bild wird zum Leben erweckt, indem in kurzen Intervallen neue Bilder vom Webserver bzw. von der Kamera angefordert werden. Dies wird von einem JavaScript übernommen, dass ebenfalls ins HTML eingebunden werden muss - am besten irgendwo nach dem Image-Tag.

<script type="text/javascript">
function WebcamReload() {
 var URL="/*cam/image.jpg?width=320&random="+Math.floor(Math.random()*9000);
 document.images.WebcamImage.src=URL;
 }
var WebcamReloadInterval=window.setInterval("WebcamReload()",1000);
</script>

Leider ist bei privaten DSL-Anschlüssen der Upstream (Upload-Rate) begrenzt - und zu gering, um flüssige Videos zu übermitteln. Deshalb muss man ein geeignetes Nachlade-Intervall definieren. Die 1000 im o.g. JavaScript sagt aus, dass alle 1000 tausendstel Sekunden (also 1x pro Sekunde) ein neues Bild angefordert wird. Für eine Bewegung ist das eigentlich viel zu langsam. Schön wäre es, wenn man wenigstens 4 Bilder pro Sekunde übertragen könnte (das entspricht dann 250 tausendstel). Übrigens, das menschliche Auge erkennt eine Bewegung erst ab ca. 16 Bildern/Sek ruckelfrei, aber so eine hohe Wiederholrate ist mit privaten DSL-Anschlüssen undenkbar.

Folgende Tabelle zeigt die Refresh-Raten, die maximal möglich sind. Bei der Errechnung der Werte bin ich davon ausgegangen, dass ein Bild 320*240 ca. 11 KB benötigt, ein kleines Bild 160*120 nur 4 KB benötigt. Zusätzlich ist jeweils 1 Sekunde Sicherheitspuffer eingerechnet, da es Zeitverluste im Anfrage/Antwort-Verhalten gibt.

Anschluß Upstream Refresh
160*120
1 Besucher
Refresh
320*240
1 Besucher
Refresh
160*120
2 Besucher
Refresh
320*240
2 Besucher
Modem 56k 33 kBit/sec Sek. Sek. Sek. Sek.
ISDN 64 kBit/sec Sek. Sek. Sek. Sek.
DSL 192 kBit/sec Sek. Sek. Sek. Sek.

Das gemeine beim Tansfers von Webcam-Bildern ist, dass man bei der Wahl der Refresh-Rate von einer denkbaren Maximalauslastung ausgehen sollte, damit es nicht zu störenden kaputten Bildern kommt (Bilder, die nicht vollständig geladen werden konnten). Das heißt, die Intervall-Wartezeit sollte vorsichtshalber recht hoch angesetzt werden. Andererseits will man einem einzelnen Webcam-Besucher auch nicht mehr als nötig den Spaß verderben, was eine möglichst geringe Refresh-Rate bedingen würde.