Detección de movimiento con Motion y cámara ESCAM QD520

Me reincorporo de nuevo a este blog para explicaros como podemos montar un sistema de videovigilancia con motion y una cámara barata HD720 como la ESCAM QD520.

La cámara en cuestión es la siguiente:

Cámara Escam QD520.

Cámara Escam QD520.

 

Se trata de una cámara bastante barata (35€ puesta en casa enviada desde China). Para no aburriros con la tabla de detalles estas son las más importantes:

  • Tiene visión nocturna, con un alcance de unos 15 metros.
  • Es fija, aunque la podemos orientar una vez anclada a la pared o techo que queramos.
  • Resolución 1280 x 720 H.264 (RTSP).
  • Conexión RJ45, sin Wifi.
  • Sirve para exterior (IP66) e interior, la carcasa de aluminio es bastante resistente.
  • Funciona con 12V/1A.
  • Permite detectar movimiento, enviar correos, subir imágenes a FTP, …
  • El panel de control web que lleva funciona con un ActiveX en Internet Explorer.

Un ejemplo de imagen capturada es el siguiente (en un sótano que estoy pintando y limpiando):

Captura de la Cámara. Clic para ampliar.

Captura de la Cámara. Clic para ampliar.

Lo realmente importante es que a través del protocolo RTSP podemos obtener un flujo de video que posteriormente motion podrá usar como fuente de video para detectar movimiento.

La otra pieza clave es motion, un software de detección de movimiento para sistemas Linux, bastante flexible y potente. La última versión, la 3.2.12, es del 1 de Junio de 2010, aunque existen varios forks que amplían funcionalidades. En nuestro caso vamos a usar uno de esos forks, el de Dr dave.

Compilando  motion

Lo primero que debemos hacer es instalar las dependencias que vamos a necesitar para luego compilar el software:

Con esto ya tendremos la herramientas para compilar, las librerías libav para procesar el video, y el código fuente de motion. Ahora entramos en la carpeta motion y configuramos las opciones de compilación:

Esto comprobará el sistema y al final nos mostrará un resumen como el siguiente:

Las lineas importantes son las de ffmpeg a Yes y la de librerías avformat, avcodec y avutil.

Al cabo de unos segundos tendremos el software compilado e instalado. Solo nos falta crear un enlace de /usr/etc/motion a /etc/motion (para tener las cosas ordenadas):

 

Configurando motion

Una vez instalado el software, ahora tenemos que configurarlo para ello necesitamos saber la dirección IP de la cámara y la URL del stream RTSP que nos dará el video. En el caso de la cámara QD520, es la siguiente:

donde IP_CAMARA es la dirección IP de la cámara, USUARIO es el usuario con permisos para visualizar el video (yo uso admin) y PASSWORD es la contraseña del usuario (en mi caso la de admin).

Editamos el fichero /etc/motion/motion.conf y ajustamos las siguientes variables:

  • Modo de funcionamiento, en segundo plano (on) o en primer plano (off): daemon on
  • Archivo de registro: logfile /var/log/motion.log
  • Ancho de la imagen: width 1280
  • Alto de la imagen: height 720
  • URL del stream de video: netcam_url “rtsp://IP_CAMARA:554/user=USUARIO&password=PASSWORD&channel=1&stream=0.sdp?” (es muy importante que comentemos la linea videodevice /dev/video0, si usamos una cámara IP). También son importantes las comillas en la URL para no tener problemas con los caracteres especiales.
  • Número de píxeles que deben cambiar entre imágenes para detectar movimiento: threshold 1500
  • Guardar imágenes si se detecta movimiento: output_pictures on
  • Calidad de las imágenes guardadas (calidad jpeg): quality 75
  • Guardar video si se detecta movimiento: ffmpeg_output_movies on
  • Formato de video de salida: ffmpeg_video_codec mpeg4
  • Marcar con un recuadro la zona de movimiento: locate_motion_mode on
  • Carpeta donde se guardaran imágenes y videos: target_dir /mnt/Data/motion/capturas

Hay montones de variables que podemos modificar aparte de las anteriores, un grupo importante para los sistemas de videovigilancia son las de gestión de eventos: on_event_start, on_event_end, on_motion_detected, on_picture_saved, on_movie_start, on_movie_end, on_camera_lost… que nos permiten ejecutar un comando de nuestra elección (generalmente un script) cuando se produce un evento. Por ejemplo: podemos hacer que nos envie una foto por email, o que nos mande un correo si se pierde la conexion con la camara, o que cuando haya acabado de grabar un video lo suba a un ftp,…

Cuando acabamos de modificar el fichero motion.conf, lo guardamos, y lanzamos el programa con:

y si no hemos especificado fichero de log (logfile) en el fichero de configuración obtendremos por pantalla una lista de todo lo que va haciendo y detectando motion durante su ejecución. El registro sería algo parecido a esto (obtenido de un archivo de log):

Fácil, ¿verdad? Pues en mi odroid U3, tan solo consume un 7% de CPU, funciona perfectamente, y muchísimo más configurable que la detección de movimiento de la propia cámara.

Espero que os haya gustado, y como siempre, todas las pregustas y comentarios serán bien recibidas 🙂

Actualización 1/12/2015:

A petición de Juan, publico aquí el contenido de mi fichero motion.conf para que podáis comparar con el vuestro si tenéis algún problema:

 

Comentarios

  1. Por Nelson

    Responder

    • Por José María

      Responder

  2. Por Nelson

    Responder

    • Por José María

      Responder

  3. Por Juan

    Responder

    • Por Juan

      Responder

      • Por José María

        Responder

    • Por José María

      Responder

    • Por José María

      Responder

  4. Por Juan

    Responder

  5. Por Juan

    Responder

    • Por José María

      Responder

  6. Por Juan

    Responder

    • Por José María

      Responder

  7. Por andres

    Responder

    • Por José María

      Responder

  8. Por Rubén Espinoza

    Responder

    • Por José María

      Responder

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *