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.

Rispondi quotando