Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Nächste ÜberarbeitungBeide Seiten der Revision
webcam:mjpeg [2008/10/28 12:33] geraldwebcam:mjpeg [2008/10/28 12:54] gerald
Zeile 97: Zeile 97:
 } }
 </code> </code>
 +
 +You can get images from your camera with my PHP script and a web server in the following form: 
 + Quelle((http://webserver/Edimax_IC1500.php)) 
 +
 +<code php>
 +   <? 
 + 
 +     $login = "admin"; 
 +     $pass = "xxxxxxx"; 
 +     $ip = "aa.bb.cc.dd"; 
 +     $port = "4321"; 
 + 
 +     // 120 byte 
 +     // 3x 0x00, 
 +     // 1x 0x01, 
 +     // user name 
 +     // 1x 0x00, 
 +     // password, 
 +     // Nx 0x00, 
 +     $logincmd = pack( 
 +        "x3H*a*xa*x"
 +           (120 - 3 - 1 - strlen($login) - 1 - strlen($pass)), 
 +        "01", $login, $pass); 
 +     // 120 byte 
 +     // 3x 0x00, 
 +     // 1x 0x0e, 
 +     // Nx 0x00, 
 +     $framecmd = pack("x3H2x116", "0e"); 
 + 
 +     $login_ok_reply = "0c"; 
 + 
 +     function error($msg) 
 +     
 +    global $sock; 
 + 
 +    if ($sock) { 
 +        fclose($sock); 
 +    } 
 +    die($msg); 
 +     
 + 
 +     function request($sock, $cmd, $len) 
 +     
 +    $ret = fwrite($sock, $cmd, $len); 
 +    if (!$ret) { 
 +        error("request()/fwrite()==FALSE"); 
 +    } 
 +    if ($ret != $len) { 
 +        error("request()/fwrite(): written: {$len}/{$ret}"); 
 +    } 
 +    fflush($sock); 
 +     
 + 
 + /
 +     function dump($data, $file) 
 +     
 +    $f = fopen($file, "wb"); 
 +    if (!$f) { 
 +        error("dump()/fopen()"); 
 +    } 
 +    $ret = fwrite($f, $data); 
 +    if (!$ret) { 
 +        error("dump()/fwrite()"); 
 +    } 
 +    fclose($f); 
 +     
 + */ 
 + 
 +     $sock = fsockopen("tcp://$ip", $port); 
 +     if (!$sock) { 
 +    error("fsockopen(tcp://$ip:$port)"); 
 +     
 +     // 350ms 
 +     stream_set_timeout($sock, 0, 350000); 
 + 
 +     request($sock, $logincmd, 120); 
 +     //echo("login request sent\n"); 
 + 
 +     $ret = stream_get_contents($sock, 120); 
 +     //echo("login reply received\n"); 
 +     if (strlen($ret) != 120) { 
 +    error("Error in reply for login. size:120/" . strlen($ret)); 
 +     
 +     //dump($ret, "0.dump"); 
 +     $reply = unpack("H*", $ret[3]); 
 +     if ($reply[1] != $login_ok_reply) { 
 +    error("Login incorrect!"); 
 +     
 +     //echo("OK\n"); 
 + 
 +     request($sock, $framecmd, 120); 
 +     //echo("get frame request sent\n"); 
 + 
 +     // 6 fix byte 
 +     $ret = fread($sock, 6); 
 +     if (!$ret) { 
 +    error("Frame signature fread()==FALSE"); 
 +     
 +     //dump($ret, "1.dump"); 
 +     $sig = unpack("H*", $ret); 
 +     if ($sig[1] != "000700060000") { 
 +    error("Frame signature incorrect"); 
 +     
 +     //echo("frame signature ok\n"); 
 + 
 +     // 2 byte: jpeg size. 
 +     $ret = fread($sock, 2); 
 +     if (!$ret) { 
 +    error("Frame size fread()==FALSE"); 
 +     
 +     //dump($ret, "2.dump"); 
 +     $unpacked = unpack("H*", $ret); 
 +     sscanf($unpacked[1], "%04x", $frame_size); 
 +     //echo("frame_size = $frame_size\n"); 
 + 
 +     // 20 byte ???. 
 +     $ret = fread($sock, 20); 
 +     if (!$ret) { 
 +    error("Skip before frame fread()==FALSE"); 
 +     
 + 
 +     // JPEG: $frame_size byte. 
 +     $ret = stream_get_contents($sock, $frame_size); 
 +     if (!$ret) { 
 +    error("Frame data stream_get_contents()==FALSE"); 
 +     
 +     if (strlen($ret) != $frame_size) { 
 +    error("Frame data stream_get_contents() size: " . 
 +       "{$frame_size}/" . strlen($ret)); 
 +     
 + 
 +     header("Content-Type: image/jpeg"); 
 +     header("Content-Length: $frame_size"); 
 +     header("Content-Disposition: inline; filename=current.jpg"); 
 +     echo($ret); 
 + 
 +     fclose($sock); 
 + ?></code> 
 +
 +
 +Uff! Finally, habs ichs rausgefunden:
 +<code>
 +// Bild:
 +http://gerald.webhop.org:14322/snapshot.jpg
 +// stream:
 +http://gerald.webhop.org:14322/snapshot.cgi
 +</code>
 +
 +Vom Hersteller EdiMax gibt es auch die Software als OpenSource ((http://www.edimax.com/images/Image/OpenSourceCode/Wireless/IPCamera/IC-1500wg/IC1500_RTL865X.tar.gz))
 +
 +Mit einer URL alle Parameter verstellen:
 +[[http://admin:1234@192.168.2.3/form/camera?resolution=0&quality=3&framerate=25&frequency=0&autoexposure=ON&b_value=35&c_value=50&s_value=50&h_value=50&w_value=10&enet_source=camera_left.asp]] 
 + 
  
  
 
Nach oben
webcam/mjpeg.txt · Zuletzt geändert: 2024/02/29 13:36 von 127.0.0.1
chimeric.de = chi`s home Creative Commons License Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0
DFmW2CEce3htPL1uNQuHUVu4Tk6WXigFQp   Dogecoin Donations Accepted Here    DFmW2CEce3htPL1uNQuHUVu4Tk6WXigFQp  DFmW2CEce3htPL1uNQuHUVu4Tk6WXigFQp