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 11:09] – gerald | webcam:mjpeg [2008/10/28 12:37] – gerald | ||
---|---|---|---|
Zeile 27: | Zeile 27: | ||
Problem: Keine Dokumentation. Webinterface soll das zwar können, aber JAvaScript zu schlecht. | Problem: Keine Dokumentation. Webinterface soll das zwar können, aber JAvaScript zu schlecht. | ||
- | Schaut gut aus, klappt aber nicht: | + | <del>Schaut gut aus, klappt aber nicht: |
- | < | + | |
- | mplayer http:// | + | mplayer http:// |
- | </code> | + | |
Webinterface ruft folgendes JavaScript auf: | Webinterface ruft folgendes JavaScript auf: | ||
Zeile 43: | Zeile 43: | ||
document.write('< | document.write('< | ||
document.write('</ | document.write('</ | ||
+ | |||
+ | Das Plugin kann man mit < | ||
+ | wget http:// | ||
+ | </ | ||
Das Plugin ist von der Firma ' | Das Plugin ist von der Firma ' | ||
+ | |||
+ | Ruby-Skript, | ||
+ | <code ruby> | ||
+ | # | ||
+ | |||
+ | # Script to extract images from the Hawking HNC230G | ||
+ | # | ||
+ | # Copyright (C) Tim Haynes | ||
+ | # HNC230G{at}stirfried.vegetable.org.uk | ||
+ | # | ||
+ | # Redistributable under the terms of the GNU Public License: see | ||
+ | # < | ||
+ | # | ||
+ | # Requires ruby, imagemagick | ||
+ | # | ||
+ | |||
+ | nopics=ARGV[1] || " | ||
+ | nopics=nopics.to_i | ||
+ | |||
+ | require ' | ||
+ | require ' | ||
+ | |||
+ | xsize, | ||
+ | |||
+ | puts " | ||
+ | |||
+ | s=TCPSocket.new(' | ||
+ | |||
+ | nopics.times { |n| | ||
+ | |||
+ | puts " | ||
+ | s.puts(" | ||
+ | |||
+ | len=s.read(2).reverse.unpack(" | ||
+ | 2.times {s.getc } | ||
+ | |||
+ | puts "Len: # | ||
+ | jpeg=s.read(len) | ||
+ | |||
+ | puts " | ||
+ | |||
+ | img=Magick:: | ||
+ | |||
+ | puts " | ||
+ | img.write(" | ||
+ | |||
+ | } | ||
+ | </ | ||
+ | |||
+ | 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(" | ||
+ | " | ||
+ | | ||
+ | |||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | | ||
+ | ?></ | ||
+ | |||