Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube
JC Mouse Bolivia
Index / Java / Java / Proyectos / Camara de Seguridad por Internet (LiveCam)

Camara de Seguridad por Internet (LiveCam)

Autor jc mouse martes, junio 28, 2011
Existen muchas camaras de seguridad por internet algunas protegidas por contraseña pero la mayoria no, utilizando el hack-google se puede encontrar muchas de estas camaras en todo el mundo.

¿Como funciona una camara de seguridad en internet?
1. La camara de seguridad toma una foto cada cierto intervalo de tiempo
2. Esta fotografia es almacenada en disco en el servidor
3. Esta imagen esta disponible en internet
4. Cuando un usuario ve la camara de seguridad por internet, esta viendo la imagen de disco

Algunas camaras de seguridad guardan esta secuencia de imagenes en formato de video y es de este video de donde se extraen las imagen despues para ver en internet.

Este proceso se repite una y otra vez, esto da la sensacion de movimiento al usuario. Como dije ma arriba podemos aprovechar las tecnicas de hacking google para buscas estas camaras sin proteccion y utilizar sus imagenes desde JAVA. La siguiente clase LiveCam.java dada la URL de una de estas camaras baja la imagen de internet y la coloca en un JLabel, utilizando un Timer podemos automatizar este proceso y tener una secuencia de imagenes continua.

codigo: Clase LiveCam.java

01 import java.awt.Dimension;
02 import java.awt.Image;
03 import java.net.MalformedURLException;
04 import java.net.URL;
05 import java.util.Timer;
06 import java.util.TimerTask;
07 import javax.swing.ImageIcon;
08 import javax.swing.JLabel;
09 import javax.swing.JPanel;
10 /**
11  * @web http://jc-mouse.blogspot.com/
12  * @author Mouse
13  */
14 public class LiveCam extends JPanel{
15     //se carga una imagen
16     private  Image snap= new ImageIcon( getClass().getResource("/livecam/snap.jpg") ).getImage() ;
17     //variables para la animacion
18     private TimerTask task; // animacion
19     private Timer tiempo ; //animacion
20     private int speed = 7000; // velocidad de la animacion 1000 = 1 segundo
21     //objeto JLabel para cargar la imagen
22     private JLabel lbSnap = new JLabel();
23     //tamaño del JPanel
24     private Dimension d = new Dimension(352, 240);
25 
26     private String Axis="axis-cgi/jpg/image.cgi?resolution="+d.width+"x"+d.height+"";
27 
28     public LiveCam(){
29         //se asigna el tamaño de los objetos
30         this.setSize(d);
31         this.setPreferredSize(d);
32         this.lbSnap.setSize(this.getSize());
33         //se añade un LAYOUT
34         this.setLayout(new javax.swing.BoxLayout(this, javax.swing.BoxLayout.LINE_AXIS));
35         //se añade el objeto JLabel al JPanel y se asigna la primera imagen no de internet
36         this.add(lbSnap);
37         lbSnap.setIcon( new ImageIcon(snap) );
38         this.setVisible(true);
39         lbSnap.setVisible(true);
40     }
41 
42  
43     //metodo que descarga una imagen de internet y la coloca en el JLabel
44      private void Cargar_Imagen(){        
45         try {
46             //libera lo que se halla almacenado en el buffer
47             snap.flush();
48             //carga la nueva imagen
49             /* ----------------- */
50             //Odate street
51             //snap = new ImageIcon(new URL("http://www.odate-houjinkai.or.jp/snap.jpg")).getImage();
52             //tienda japon
53             //snap = new ImageIcon(new URL("http://www.hifido.co.jp/camera/osu.jpg")).getImage();
54             //barberia japon
55             //snap = new ImageIcon(new URL("http://www.salon-net.org/realtime100.jpg")).getImage();
56             //Camaras AXIS
57             //aeropuerto de rochester
58             //snap = new ImageIcon(new URL("http://84.92.80.192:8081/axis-cgi/jpg/image.cgi?resolution=352x240")).getImage();
59             //snap = new ImageIcon(new URL("http://206.127.116.63/axis-cgi/jpg/image.cgi?resolution=352x240")).getImage();
60             //snap = new ImageIcon(new URL("http://62.42.19.194/axis-cgi/jpg/image.cgi?resolution=352x240")).getImage();
61             //tokio
62             //snap = new ImageIcon(new URL("http://221.255.120.171/axis-cgi/jpg/image.cgi?resolution=352x240")).getImage();
63             //restorant
64             //snap = new ImageIcon(new URL( "http://80.25.78.169/" + this.Axis )).getImage();
65             //calle
66             snap = new ImageIcon(new URL( "http://123.220.250.252/" + this.Axis )).getImage();
67             
68             /* ----------------- */
69         } catch (MalformedURLException ex) {
70         }
71         lbSnap.setIcon( new ImageIcon(snap) );
72         lbSnap.repaint();        
73     }
74 
75      //metodo que utiliza un timer para recargar la imagen de internet  cada cierto tiempo
76      public void Comenzar_Animacion(){
77         tiempo = new Timer();
78         task = new TimerTask(){
79             public void run(){
80                 Cargar_Imagen();
81             }
82         };        
83         tiempo.schedule(task,0, speed);
84     }
85 
86     //detiene la animacion
87     public void Detener_Animacion(){
88         lbSnap.setIcon( new ImageIcon(snap) );
89         tiempo.cancel();
90         task.cancel();
91         lbSnap.setIcon( new ImageIcon( getClass().getResource("/livecam/snap.jpg") ) );
92     }
93 }
La clase LiveCam.java se extiende de un JPanel y cuenta con el metodo Cargar_Imagen(), metodo principal escargada de bajar la imagen de internet, ademas tiene  los metodos Comenzar_Animacion() Detener_Animacion() los cuales utilizan la clase Timer para generar una animacion. La variable SPEED nos permite indicar el intervalo en milisegundos de la siguiente imagen, dependiendo de la velocidad de internet que se tenga se puede aumentar o disminuir el valor de eta variable para si tener casi video en tiempo real.

De la linea 50-56 tenemos varios ejemplos de camaras de internet, incluso podemos utilizar tambien imagenes de camaras AXIS sin problemas, pero cuidado con el tamaño de las imagnes porque no todas las camaras de seguridad soportan varios tamaños en la imagen,

El codigo completo del proyecto aqui abajo

Click para descargar

Tags

Si te ha gustado podrías compartirlo o dejar un comentario. ¡Muchas gracias!
Autor: JC Mouse

Yo soy yo :) JC Mouse, Soy orgullosamente boliviano soy fundador y CEO de la web jc-Mouse.net uno de las pocas web en emprendimiento y tecnología en Bolivia.

Toda la información que encuentres en este sitio es y sera completamente gratis siempre, puedes copiar, descargar y re-publicar si así lo deseas en otros blogs o sitios web, solo te pido a cambio que dejes una referencia a esta web. Esto nos ayuda a crecer y seguir aportando. Bye

Enjoy! :)

También Te Podría Interesar

Reproduce archivos MP3 desde android

Reproduce archivos MP3 desde android

Reproducir archivos de audio en nuestras aplicaciones android. Necesitamos IDE Eclipse y SDK Android instalado Un archiv...

Descargar Doodle Google Pacman

Descargar Doodle Google Pacman

Hace un par de años atras google para el aniversario del juego de Pacman saco un doodle en su homenaje, ese doodle que s...

Sumar 2 numeros

Sumar 2 numeros

Una vez que terminamos el obligatorio 🙂 “Hola mundo“, podemos crear aplicaciones un tanto más elaboradas, pe...

Código de Control en PHP v7.0 Bolivia

Código de Control en PHP v7.0 Bolivia

NUEVA ESPECIFICACIÓN TÉCNICA DEL CÓDIGO DE CONTROL (Ver.7.0) En el marco del Nuevo Sistema de Facturación implementado p...

THE LAST JEDI: El Salar de Uyuni forma parte del universo Star Wars

THE LAST JEDI: El Salar de Uyuni forma parte del universo Star Wars

Así es, el Salar de Uyuni ubicado en el suroeste de Bolivia con una extensión de 10582 Km2 y a una altitud 3663 mts sobr...

Programa en la nube sin instalar nada con repl.it

Programa en la nube sin instalar nada con repl.it

Repl.it es un proyecto de tres jóvenes emprendedores (Amjad, Haya, Maso), es un compilador en linea el cual te permite p...

Comparte lo que sabes

Categorias

Últimas entradas

Los números narcisistas o números de Armstrong son aquellos números enteros positivos  cuya suma de las n-ésimas potenci...

En la convención de Chain React  en Portland (Oregon), Marc Horowitz ingeniero de software en Facebook presentó el motor...

En un post anterior [Introducción a VueJS framework para el desarrollo FrontEnd] realizamos una breve introducción a Vue...

La programación y la electrónica están a la orden del día. Cada vez son más importantes y prácticamente forman parte de...

Android Bolivia

MAUS