Sto realizzando un software di videosorveglianza devo leggere le immagini da una IP-Cam.

Le IP-Cam sono delle telecamere di sicurezza dotate di interfaccia di rete, web server e di indirizzo IP.

Per es. è possibile, quindi, prelevare le immagini in questo modo:
http://xxx.xxx.xxx.xxx/image.cgi?width=XXX&height=XXX

Io ho implementato una soluzione però analizzando il software in funzione, mi sono reso conto che dopo un po' ci sono moltissime connessioni aperte e aumentano in continuazione.

codice:
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.net.URL;
import javax.imageio.ImageIO;
import javax.swing.JPanel;

class Monitor extends JPanel implements Runnable {

    private URL source;
    private int rate;
    private Thread thread;
    private BufferedImage image;

    /**
     * Crea un nuovo pannello "monitor".
     * 
     * @param source La sorgente video (IP CAM).
     * @param rate I fotogrammi al secondo (fps).
     */
    public Monitor(URL source, int rate) {
        super(true); // Double Buffered
        this.source = source;
        this.rate = rate;
        play();
    }

    public synchronized void play() {
        if (thread == null) {
            thread = new Thread(this);
            thread.start();
        }
    }

    public synchronized void pause() {
        if(thread != null) {
            thread = null;
        }
    }

    public void run() {
        while (thread != null) {
            try {
                setImage(ImageIO.read(source));
                Thread.sleep(Math.round(1000 / rate));
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }
    }

    private void setImage(BufferedImage bi) {
        this.image = bi;
        this.updateUI();
    }

    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.drawImage(image, 0, 0, null);
    }

}



Ecco le mie domande:
1. Come posso leggere le immagini in sequenza in modo più efficiente?
2. E se volessi fare lo streaming di video M-JPEG (video.cgi) come potrei fare?


Ringrazio per l'attenzione.