Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 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)
- 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 < 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();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement