domingo, 16 de junio de 2013

Control múltiple de webcams

En este post vamos a explicar como realizar un sistema de vídeo vigilancia que combine cámaras locales con cámaras externas. Para ello vamos a utilizar el programa Motion que nos permite utilizar más de una webcam.



Paso 1: 

Realizamos una instalación estándar con el comando apt-get install motion.


Paso 2: 

Conectamos las webcam a los puertos USB. En el caso de que queramos utilizar varias cámaras, necesitaremos un HUB USB alimentado, pues la Raspberry no puede alimentar varios dispositivos, tal y como explicamos en este post.

Paso 3:

Comprobar que la Raspberry ha detectado las webcam que le hemos conectado. Para realizar esta comprobación utilizamos la instrucción lsusb. 



Como observamos en la imagen anterior, detecta las cámaras Microelectronics y Microdia. Una vez hemos visto que las ha detectado correctamente pasamos al siguiente paso.


 

Paso 4:

Comprobamos mediante el comando ls /dev que nos ha cargado los drivers de video para las webcam. En este caso, deberían de salir dos, video0 y video1.

Nota: si reiniciamos la aplicación motion en caliente, a veces, pierde un driver y no lo restablece hasta que hacemos un reinicio en frío.


Paso 5:

En este punto, gestionaremos el fichero de configuración de motion, que se encuentra en la ruta /etc/motion/motion.conf.

En dicho fichero, si trabajamos en modo multicámara, sólo definiremos, los parámetros comunes a todas las cámaras que vamos a conectar. Todos los elementos específicos a las diversas cámaras, ya sea resolución, paletas, etc. los configuraremos en ficheros especiales denominados thread(n), siendo n el número que le queramos asociar a la cámara.

Paso 6:

Configuración básica del fichero motion.conf



Paso 8:

Una vez configurado el motion realizamos la configuración específica de cada webcam (thread).

Nota:

  • thread1.conf: webcam1, local
  • thread2.conf webcam2, local
  • thread3.conf: webcam pública, conectada desde internet.


Paso 9:

Definición de parámetros básicos:
  • v412_palette 3: tipo de fichero de imagen a capturar, en nuestro caso JPEG.
  • text_left: etiqueta identificadora de la webcam.
  • target_dir: directorio donde se guardarán las imágenes capturadas.
  • web_port: puerto para acceder a una cámara especfícia. (ej. 192.168.10.10:8001)
  • webcam_localhost: desactivamos el modo local de la webcam para poder acceder remotamente.
  • videodevice: Driver de video específico asignado a esta cámara.

Configuración thread 1:


Configuración thread 2:




Para las webcam remotas, las variantes con respecto a la configuración anterior serían:
  • netcam_userpass: password de la máquina remota en el caso de necesitarlo.
  • netcam_url: dirección de la IP pública de la cámara que estamos conectando.

Configuración thread 3 (webcam remota):


Paso 10 (opcional):

Para tener una opción de visión múltiple en una página web (cámaras, configuración...) podemos utilizar los frames de html.

Un ejemplo muy básico para poder contemplar, las tres webcam (dos locales y una remota) y el fichero de configuración online sería:

Nota: obviamente el siguiente código lo crearemos en un fichero html.


 Con este frame nuestro entorno quedaría de la siguiente manera:

1 comentario:

  1. Muy buena la explicación, creo que está faltando explicar el enlace entre "loquesea.cgi" y como llega a ejecutar el html.
    Necesitaría ver que contiene loquesea.cgi.

    ResponderEliminar