Die Technik


Herzstück ist ein VIA-ITX-Rechner.
Centaur VIA Samuel 2 533 MHz CPU 1066.68 BogoMIPS
512 MB RAM
40 GB 2,5" Notebook Festplatte
Logitech QuickCam 4000 Pro USB webcam
Betriebssystem: SUSE 10.0
Die Bilder werden über CamSource bereitgestellt. Dieses Programm speichert zusätzliche alle 60 Sekunden ein Bild.
Aus diesen Bildern werden mit Hilfe von Mencoder Mpeg4 Filme erstellt.

Der Computer ist natürlich überdimensioniert, um nur WebCam Bilder bereitzustellen.
Daher hat er auch andere Aufgaben für mich zu erledigen, auf die ich hier nicht weiter eingehen will.

Die Webseite selber liegt bei einem Provider. Nicht, weil der Rechner das nicht könnte. Mit der Bandbreite des Providers kann mein DSL Anschluss einfach nicht mithalten.

Da CamSource die Bilder auf Port 9192 bereitstellt und ich die Daten lieber auf dem Standard HTTP-Port 80 abholen wollte, habe ich ein kleines PHP Programm geschrieben:

<?php
/* Datei: /cam/index.php */
/*Quelle des Bildes*/
$name="http://[ip-adresse]:9192/";
/*Bild öffnen*/
$fd = @fopen($name, 'rb');
/* Fehler beim öffnen ? - Temp. Fehler Melden */
if($fd == false){
  header("",true,404);
  die();
}
/* header Infos des Bildes übertragen*/
/* z.B.
Server: camsource 0.7.0
Content-Length: 61191
Connection: Keep-alive
Pragma: no-cache
Cache-Control: no-cache
Content-Type: image/jpeg
*/
$info=stream_get_meta_data($fd);
foreach ($info['wrapper_data'] as $header) {
  header($header,true);
}
ob_end_flush();
ob_end_clean();
/*Bild senden*/
while(!feof($fd) and (connection_status()==0)) {
  print fread($fd, 1024 * 10);
  flush();
  ob_flush();
  flush();
  ob_flush();
  flush();
  ob_flush();
}
fclose ($fd);
ob_clean();
exit();
?>

Die Aktualisierung des Webcambildes übernimmt ein kleines Javascript:

<script type="text/javascript">
var t = 30 // interval in seconds
imgsrc = "";
function ErrorImg() {
  document.images.WebCamImage.src = "error.jpg";
  setTimeout("LoadImg()", t*1000);
}
function LoadImg() {
  if (imgsrc == "")
  {
    imgsrc = document.images.WebCamImage.src;
  }
  else
  {
    document.images.WebCamImage.onload = "";
    tmp = new Date();
    tmp = "?"+tmp.getTime();
    document.images.WebCamImage.src = imgsrc+tmp;
  }
  setTimeout("LoadImg()", t*1000);
}
</script>

Der IMG-Tag muss dann so aussehen:

<IMG src="http://[url]/cam/" width="640" height="480" border="1" 
name="WebCamImage" onload="LoadImg()" onerror="ErrorImg()" alt="Loading..."/>

Und so sieht der Rechner aus:

itx front open cam
Webcam-Center Bannerexchange
Webcam-Center Bannerexchange

Familie
Urlaub
Notizen
1&1 Produkte
Wiki
Conrad
Reiseportal
Webcam I
Details
Blog
Emeriten
Gästebuch
Aktuelle Wetterdaten