title: capturing video from ip camera
body: <p>I am trying to capture video from ip camera into my application , its giving exception</p>
  
  <pre><code>com.sun.image.codec.jpeg.ImageFormatException: Not a JPEG file: starts with 0x0d 0x0a
      at sun.awt.image.codec.JPEGImageDecoderImpl.readJPEGStream(Native Method)
      at sun.awt.image.codec.JPEGImageDecoderImpl.decodeAsBufferedImage(Unknown Source)
      at test.AxisCamera1.readJPG(AxisCamera1.java:130)
      at test.AxisCamera1.readMJPGStream(AxisCamera1.java:121)
      at test.AxisCamera1.readStream(AxisCamera1.java:100)
      at test.AxisCamera1.run(AxisCamera1.java:171)
      at java.lang.Thread.run(Unknown Source)
  </code></pre>
  
  <p>its giving exception at  image = decoder.decodeAsBufferedImage();</p>
  
  <p>Here is the code i am trying </p>
  
  <pre><code>private static final long serialVersionUID = 1L;
      public boolean useMJPGStream = true;
      public String jpgURL = "http://ip here/video.cgi/jpg/image.cgi?resolution=640×480";
      public String mjpgURL = "http://ip here /video.cgi/mjpg/video.cgi?resolution=640×480";
      DataInputStream dis;
      private BufferedImage image = null;
      public Dimension imageSize = null;
      public boolean connected = false;
      private boolean initCompleted = false;
      HttpURLConnection huc = null;
      Component parent;
  
      /** Creates a new instance of AxisCamera */
      public AxisCamera1(Component parent_) {
          parent = parent_;
      }
  
      public void connect() {
          try {
              URL u = new URL(useMJPGStream ? mjpgURL : jpgURL);
              huc = (HttpURLConnection) u.openConnection();
  
              // System.out.println(huc.getContentType());
              InputStream is = huc.getInputStream();
  
              connected = true;
              BufferedInputStream bis = new BufferedInputStream(is);
              dis = new DataInputStream(bis);
              if (!initCompleted)
                  initDisplay();
          } catch (IOException e) { // incase no connection exists wait and try
                                      // again, instead of printing the error
              try {
                  huc.disconnect();
                  Thread.sleep(60);
              } catch (InterruptedException ie) {
                  huc.disconnect();
                  connect();
              }
              connect();
          } catch (Exception e) {
              ;
          }
      }
  
      public void initDisplay() { // setup the display
          if (useMJPGStream)
              readMJPGStream();
          else {
              readJPG();
              disconnect();
          }
          imageSize = new Dimension(image.getWidth(this), image.getHeight(this));
          setPreferredSize(imageSize);
          parent.setSize(imageSize);
          parent.validate();
          initCompleted = true;
      }
  
      public void disconnect() {
          try {
              if (connected) {
                  dis.close();
                  connected = false;
              }
          } catch (Exception e) {
              ;
          }
      }
  
      public void paint(Graphics g) { // used to set the image on the panel
          if (image != null)
              g.drawImage(image, 0, 0, this);
      }
  
      public void readStream() { // the basic method to continuously read the
                                  // stream
          try {
              if (useMJPGStream) {
                  while (true) {
  
                      readMJPGStream();
                      parent.repaint();
                  }
              } else {
                  while (true) {
                      connect();
                      readJPG();
                      parent.repaint();
                      disconnect();
  
                  }
              }
  
          } catch (Exception e) {
              ;
          }
      }
  
      public void readMJPGStream() { // preprocess the mjpg stream to remove the
                                      // mjpg encapsulation
          readLine(3, dis); // discard the first 3 lines
          readJPG();
          readLine(2, dis); // discard the last two lines
      }
  
      public void readJPG() { // read the embedded jpeg image
          try {
  
  
              JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder(dis);
              image = decoder.decodeAsBufferedImage();
  
          } catch (Exception e) {
              e.printStackTrace();
              disconnect();
          }
  
      }
  
      public void readLine(int n, DataInputStream dis) { // used to strip out the
                                                          // header lines
          for (int i = 0; i &lt; n; i++) {
              readLine(dis);
          }
      }
  
      public void readLine(DataInputStream dis) {
          try {
              boolean end = false;
              String lineEnd = "\n"; // assumes that the end of the line is marked
                                      // with this
              byte[] lineEndBytes = lineEnd.getBytes();
              byte[] byteBuf = new byte[lineEndBytes.length];
  
              while (!end) {
                  dis.read(byteBuf, 0, lineEndBytes.length);
                  String t = new String(byteBuf);
                  System.out.print(t); // uncomment if you want to see what the
                                          // lines actually look like
                  if (t.equals(lineEnd))
                      end = true;
              }
          } catch (Exception e) {
              e.printStackTrace();
          }
  
      }
  
      public void run() {
          System.out.println("in Run...................");
          connect();
          readStream();
      }
  
      @SuppressWarnings("deprecation")
      public static void main(String[] args) {
  
  
          JFrame jframe = new JFrame();
          jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          AxisCamera1 axPanel = new AxisCamera1(jframe);
          new Thread(axPanel).start();
          jframe.getContentPane().add(axPanel);
          jframe.pack();
          jframe.show();
      }
  
  }
  </code></pre>
  
  <p>Any suggestions what I am doing wrong here??</p>