Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende ÜberarbeitungNächste ÜberarbeitungBeide Seiten der Revision | ||
webcam:mjpeg [2008/10/28 12:33] – gerald | webcam:mjpeg [2008/10/28 12:56] – gerald | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | MJPEG Webcam | + | MJPEG Webcam |
+ | |||
+ | [[http:// | ||
Chinesische Billigwebcam mit WLAN | Chinesische Billigwebcam mit WLAN | ||
Zeile 97: | Zeile 99: | ||
} | } | ||
</ | </ | ||
+ | |||
+ | You can get images from your camera with my PHP script and a web server in the following form: | ||
+ | | ||
+ | |||
+ | <code php> | ||
+ | <? | ||
+ | |||
+ | | ||
+ | $pass = " | ||
+ | $ip = " | ||
+ | $port = " | ||
+ | |||
+ | // 120 byte | ||
+ | // 3x 0x00, | ||
+ | // 1x 0x01, | ||
+ | // user name | ||
+ | // 1x 0x00, | ||
+ | // password, | ||
+ | // Nx 0x00, | ||
+ | | ||
+ | " | ||
+ | (120 - 3 - 1 - strlen($login) - 1 - strlen($pass)), | ||
+ | " | ||
+ | // 120 byte | ||
+ | // 3x 0x00, | ||
+ | // 1x 0x0e, | ||
+ | // Nx 0x00, | ||
+ | | ||
+ | |||
+ | | ||
+ | |||
+ | | ||
+ | | ||
+ | global $sock; | ||
+ | |||
+ | if ($sock) { | ||
+ | fclose($sock); | ||
+ | } | ||
+ | die($msg); | ||
+ | | ||
+ | |||
+ | | ||
+ | | ||
+ | $ret = fwrite($sock, | ||
+ | if (!$ret) { | ||
+ | error(" | ||
+ | } | ||
+ | if ($ret != $len) { | ||
+ | error(" | ||
+ | } | ||
+ | fflush($sock); | ||
+ | | ||
+ | |||
+ | / | ||
+ | | ||
+ | | ||
+ | $f = fopen($file, | ||
+ | if (!$f) { | ||
+ | error(" | ||
+ | } | ||
+ | $ret = fwrite($f, $data); | ||
+ | if (!$ret) { | ||
+ | error(" | ||
+ | } | ||
+ | fclose($f); | ||
+ | | ||
+ | | ||
+ | |||
+ | $sock = fsockopen(" | ||
+ | if (!$sock) { | ||
+ | error(" | ||
+ | | ||
+ | // 350ms | ||
+ | | ||
+ | |||
+ | | ||
+ | // | ||
+ | |||
+ | $ret = stream_get_contents($sock, | ||
+ | // | ||
+ | if (strlen($ret) != 120) { | ||
+ | error(" | ||
+ | | ||
+ | // | ||
+ | | ||
+ | if ($reply[1] != $login_ok_reply) { | ||
+ | error(" | ||
+ | | ||
+ | // | ||
+ | |||
+ | | ||
+ | // | ||
+ | |||
+ | // 6 fix byte | ||
+ | $ret = fread($sock, | ||
+ | if (!$ret) { | ||
+ | error(" | ||
+ | | ||
+ | // | ||
+ | $sig = unpack(" | ||
+ | if ($sig[1] != " | ||
+ | error(" | ||
+ | | ||
+ | // | ||
+ | |||
+ | // 2 byte: jpeg size. | ||
+ | $ret = fread($sock, | ||
+ | if (!$ret) { | ||
+ | error(" | ||
+ | | ||
+ | // | ||
+ | | ||
+ | | ||
+ | // | ||
+ | |||
+ | // 20 byte ???. | ||
+ | $ret = fread($sock, | ||
+ | if (!$ret) { | ||
+ | error(" | ||
+ | | ||
+ | |||
+ | // JPEG: $frame_size byte. | ||
+ | $ret = stream_get_contents($sock, | ||
+ | if (!$ret) { | ||
+ | error(" | ||
+ | | ||
+ | if (strlen($ret) != $frame_size) { | ||
+ | error(" | ||
+ | " | ||
+ | | ||
+ | |||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | | ||
+ | ?></ | ||
+ | |||
+ | |||
+ | Uff! Finally, habs ichs rausgefunden: | ||
+ | < | ||
+ | // Bild: | ||
+ | http:// | ||
+ | // stream: | ||
+ | http:// | ||
+ | </ | ||
+ | |||
+ | Vom Hersteller EdiMax gibt es auch die Software als OpenSource ((http:// | ||
+ | |||
+ | Mit einer URL alle Parameter verstellen: | ||
+ | [[http:// | ||
+ | |||