Axis 205 Netzerk Cam

Status
Nicht offen für weitere Antworten.

deathhero

Mitglied
Hallo

Ich habe folgendes Problem:

Ich soll ein einfach GUI schreiben, welches Bilder der Netcam Axis 205 http://www.axis.com/products/cam_205/ darstellt.

Ich hab aber leider noch nie mit Netzwerkprogrammierung in Java gearbeite, und so fehlt mir auch der komplette Denkansatz: " Wie bekomme ich Bilder von dieser Netzwerkamera auf meinen PC in mein Programm?"

Hat jemand schon einmal mit dieser Kamera gearbeitet ? Oder hätte Tipps wie ich das anstellen könnte ?

mfg deathhero
 

foobar

Top Contributor
Wenn die Kamera über ein Webinterface verfügt kannst du mit der Klasse URL darauf zugreifen und dann den Content parsen:

Code:
url = new URL("http", "localhost", 80, "/cam");
                        connection = (HttpURLConnection) url.openConnection();
                        connection.setRequestMethod("GET");

                        // ################################

                        BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream()));
                        String buffer = null;
                        while ((buffer = br.readLine()) != null)
                        {
                                System.out.println( ">>>" + buffer );
                        }
                        br.close();
 

deathhero

Mitglied
hmm danke für die schnelle Antwort...

allerdings hat diese Netcam kein Webinterface...

ich hab jetzt einige beschreibungen gefunden und darin war die rede von

JMF PushBufferStream Objekten
und Media Locator Objekten

sprich ich muss mit dem Java Media Framework arbeiten, sofern ich das richtig verstanden habe....

das wird was.. :shock: :autsch: :D

danke trotzdem.....

mfg deathhero

PS: bin natürlich noch immer für div. Vorschläge offen :D
 

deathhero

Mitglied
so wieder mal ich... :roll:

ich habe jetzt ein prog irgendwie mit hilfe zusammenbekommen....das problem hier liegt allerding darin, dass ich bei dieser version nur genau 1 bild bekomme....

wie soll ich das machen, wenn ich zB jede Sekunde eines haben will ? also quasi ein Live Stream ?

Code:
import java.awt.*;
import java.awt.image.BufferedImage;
import javax.swing.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
import java.util.*;
import com.sun.image.codec.jpeg.*;


public class Viewer extends Frame {
	
    private Image image;

        public Viewer(String fileName) {

                System.setProperty("http.proxySet", "true");
                System.setProperty("http.proxyHost", "10.1.1.50");
                System.setProperty("http.proxyPort", "8080");
                System.setProperty("http.proxyType", "4");
                String proxyUser = "",
                proxyPassword = "";
             
                
                try{
                          URL u1 = new URL("http://10.1.1.82/jpg/image.jpg");
                     try{
                    
                            URLConnection con = u1.openConnection();
                            
                            con.setRequestProperty("Proxy-Authorization",
                            "Basic " + new sun.misc.BASE64Encoder().encode(
                            (proxyUser + ":" + proxyPassword).getBytes()));
                            
                            con.connect();
                            u1.openConnection();
                            
                                                     
                            Toolkit toolkit = Toolkit.getDefaultToolkit();
                            image = toolkit.getImage(u1);
                           
                            MediaTracker mediaTracker = new MediaTracker(this);
                            mediaTracker.addImage(image, 0);
                                                        
                            try
                            {
                                mediaTracker.waitForID(0);
                            }
                            catch (InterruptedException ie)
                            {
                                System.err.println(ie);
                                System.exit(1);
                            }
                            addWindowListener(new WindowAdapter() {
                            public void windowClosing(WindowEvent e) {
                                System.exit(0); }});
                                
                            setSize(image.getWidth(null), image.getHeight(null));
                            setTitle(fileName);
                            show();
                            saveJPG(image,"k:\\cam\\webcam.jpg");
                                                                             
                      }
                      catch(IOException e){}
                
                }
                catch(MalformedURLException e){}
                }

    

            public void paint(Graphics graphics) {
		
                graphics.drawImage(image, 0, 0, null);
            }
        
        
        public static void saveJPG(Image img, String s)
        {
            BufferedImage bi = new BufferedImage(640, 480, BufferedImage.TYPE_INT_RGB);
            Graphics2D g2 = bi.createGraphics();
            g2.drawImage(img, null, null);

            FileOutputStream out = null;
            try
            {
              out = new FileOutputStream(s);
            }
            catch (java.io.FileNotFoundException io)
            {
              System.out.println("File Not Found");
            }

            JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
            JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(bi);
            param.setQuality(0.9f,false);
            encoder.setJPEGEncodeParam(param);

            try
            {
              encoder.encode(bi);
              out.close();
            }
            catch (java.io.IOException io)
            {
              System.out.println("IOException");
            }
          }

	public static void main(String[] args) {
		
            for(int i=0; i<100; i++)
             new Viewer("Webcam");
	
        
        }
}
 

rapthor

Bekanntes Mitglied
Benutz' doch einen Thread! Die Stelle, an der du das Bild holst, lässt du so oft wie du willst wiederholen in der run()-Methode. Wenn du abbrechen möchtest, müssteste halt ne boolean Variable mit einbauen, die ständig überprüft wird.
 
G

Guest

Gast
hmm, ja das mit dem thread habe ich schon gemacht...aber komischerweise kommt trotzdem immer nur das gleiche bild herein....

es wird dann zwar zB 100 mal auf der HDD abgespeichert, aber eben immer das gleiche Ding.... :?: :autsch:

sprich ich hab da irgendwo einen generellen fehler drinnen, denke ich....

sg
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben