Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    Leggere immagini dalla rete

    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.

  2. #2
    Per lo streaming video non ti posso aiutare. per quanto rigurda le immagini, ho scritto il codice che trovi all'indirizzo seguente un po' di tempo fa per fare la stessa cosa: http://scr4tchp4d.blogspot.com/2008/...m-network.html

    Si appoggia all'http common client by Apache. Ovviamente ti basta lanciare un thread che faccia il getImage ogni x secondi.
    max

    Silence is better than bullshit.
    @mmarcon
    jHERE, Maps made easy

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.