Click here to Skip to main content
Rate this: bad
good
Please Sign up or sign in to vote.
See more: from
Hi every one,
I wrote a Java Applet for displaying image from ipcamera. It work well on Applet Viewer that embed on Eclipse but doesn't work on browser. Please help me if you known. Thanks allots
 
Here is the source code:
import java.applet.Applet;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import java.io.BufferedInputStream;
import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
 
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageDecoder;
 
/**
*
* @author David E. Mireles, Ph.D.
*/
public class LiveDemo extends Applet implements Runnable {
	/**
	* 
	*/
	private static final long serialVersionUID = 1L;
	public boolean useMJPGStream = false;//true;
	public String jpgURL="http://10.0.0.81/axis-cgi/jpg/image.cgi?resolution=1024x768";
	public String mjpgURL="http://10.0.0.81/axis-cgi/jpg/image.cgi?resolution=1024x768";
	DataInputStream dis;
	private Image image = null;
	public Dimension imageSize = null;
	public boolean connected = false;
	private boolean initCompleted = false;
	HttpURLConnection huc = null;
	Component parent;
	
	/** Creates a new instance of Ax52Camera */
	public void init()
	{
		new Thread(this).start();
	}
	
	public void connect(){
		try{
			URL u = new URL(useMJPGStream?mjpgURL:jpgURL);
			huc = (HttpURLConnection)u.openConnection();			
			
			System.out.println(huc.getContentType());
			InputStream is = huc.getInputStream();
			System.out.println(is.toString());
			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(33);
			}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);
		this.setSize(imageSize);
		this.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();
					this.repaint();
				}
			}
			else{
				while(true){
					connect();
					readJPG();
					this.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() {
		connect();
		readStream();
	}
	
}
Posted 10-Jan-11 17:22pm
Edited 10-Jan-11 17:42pm
TweakBird17.1K
v2

1 solution

Rate this: bad
good
Please Sign up or sign in to vote.

Solution 1

You need to enable java in the browser:
http://www.java.com/en/download/help/enable_browser.xml[^]
 
And embed your applet into a html page:
http://www.java-forums.org/java-applets/11851-first-applet-not-running-browsers.html[^]
 
Good luck!
  Permalink  
Comments
Espen Harlinn at 11-Jan-11 10:22am
   
5+ Sounds reasonable :)

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



Advertise | Privacy | Mobile
Web02 | 2.8.141220.1 | Last Updated 11 Jan 2011
Copyright © CodeProject, 1999-2014
All Rights Reserved. Terms of Service
Layout: fixed | fluid

CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100