Hoy:

15 nov. 2017

Videovigilancia: motioneye - añadir botones de control - Logitech Orbit AF

En Motioneye existe la excelente posibilidad de añadir botones (iconos) para poder manejar la camara web. Por ejemplo, si tenemos una cámara con posibilidades PTZ (Pan/Tilt/Zoom) y que sea compatible con Linux, podremos moverla remotamente a izquierda-derecha, arriba-abajo y zoom.

Hay cámaras muy buenas con esas posibilidades, algo caras. En mi caso encontré una Logitech Orbit AF (la Orbit MP da problemas con Linux) a un precio muy interesante y considero que es una de las mejores calidad-precio.

Pues bien, en este tutorial voy a explicar cómo configurar esta cámara para poderla gestionar adecuadamente, y añadir iconos de gestion de movimientos a la interfaz web de Motioneye.

Consultando el manual de motioneye acerca de los botones (Action bottons)
hay numerosas posibilidades para añadir a la interfaz web para gestionar la cámara o añadir comandos a partir de scripts personalizados.

Vamos en concreto a manejar los movimientos Pan/Tilt (izquierda-derecha/ arriba-abajo):

Estos son los nombres de los archivos necesarios
  • left..............................izquierda
  • right...........................derecha
  • up...............................arriba
  • down..........................abajo
Estos archivos han de ser ejecutables y estar situados el directorio de configuración de motioneye. Si recordamos el tutorial de cómo instalar motioneye de forma local, en espacio de usuario, los archivos los situaremos en $HOME/motioneye/

Los nombres de cada archivo tendrán esta forma:

  • acción_ID cámara
Para nuestra primera cámara configurada será:


  • left_1
  • right_1
  • up_1
  • down_1
-Pasos previos para crear el contenido de cada script:
Para poder mover la webcam usaremos el comando uvcdynctrl 
Instalamos:

sudo apt-get  -y install uvcdynctrl
sudo apt-get -y install v4l-utils

 Para tener información de nuestra webcam para poder incluir opciones:

v4l2-ctl --list-devices >DISPOSITIVOS_DISPONIBLES.TXT
uvcdynctrl -c >CONTROLES_DISPONIBLES.TXT




 -Ahora terminamos toda la configuración:

  • Contenidos del archivo left_1:

#!/bin/bash
/usr/bin/uvcdynctrl -s "Pan (relative)" -- 100



  • Contenidos del archivo right_1:

#!/bin/bash
/usr/bin/uvcdynctrl -s "Pan (relative)" -- -100



  • Contenidos del archivo up_1:

#!/bin/bash
/usr/bin/uvcdynctrl -s "Tilt (relative)" -- -100



  • Contenidos del archivo down_1:

#!/bin/bash
/usr/bin/uvcdynctrl -s "Tilt (relative)" -- 100


No olvidar que han de ser ejecutables y estar situados en $HOME/motioneye

chmod +x $HOME/motioneye/left_1
chmod +x $HOME/motioneye/right_1 
chmod +x $HOME/motioneye/up_1 
chmod +x $HOME/motioneye/down_1


 

 Si  lo hemos hecho bien, cuando entremos en la gestión web de motioneye, ya veremos los iconos de los botones y podremos mover nuestra cámara web de forma remota.




 




8 abr. 2017

Videovigilancia: motioneye - un tutorial extenso

Zoneminder es un excelente programa para tener videovigilancia en Linux, pero excesivo para mis necesidades. Yo suelo usar la videovigilancia para asuntos más triviales, y con una o dos cámaras por usb tengo suficiemte. Hasta ahora usaba un sencillo pero muy eficiente programa: Kmotion (que he comprobado que ha tenido mucho exito en el blog), pero ya no es compatible con las nuevas distribuciones, y estoy perezoso para investigar y solucionarlo.
Pero os traigo un excelente trabajo del programador Calin Crisan: motioneye
Voy a explicar detalladamente cómo instalarlo y configurarlo con un ejemplo de mi instalación personal.

Personalmente uso un minipc con Ubuntu 16.04. Vamos a ello:

1-Añadimos repositorio para ffmpeg 3.2 e instalamos motion (detección de la webcam), ffmpeg (codificar en video las capturas) y v4l-utils (herramienta de dispositivo)
      Para no tener que esscribir tantas veces sudo en el terminal:

sudo su

add-apt-repository ppa:jonathonf/ffmpeg-3
apt-get update
apt-get install motion ffmpeg v4l-utils

2-Seguídamente  lo necesario para instalar y mantener actualizado motioneye

apt-get install python-pip python-dev curl libssl-dev libcurl4-openssl-dev libjpeg-dev

3-Instalamos motioneye

apt-get install python-pip
pip install --upgrade pip

pip install motioneye


  •  Si se va usar una configuración de Sistema para guardar las capturas (yo prefiero una configuración de usuario):

 mkdir  -p /etc/motioneye

cp /usr/local/share/motioneye/extra/motioneye.conf.sample  /etc/motioneye/motioneye.conf

cp  /usr/local/share/motioneye/extra/motioneye.systemd-unit-local 

/etc/systemd/system/motioneye.service

4-Configurar

Editamos  /etc/systemd/system/motioneye.service  para adaptarlo a un uso como usuario:

nano  /etc/systemd/system/motioneye.service

y modificamos según nuestros datos:

[Unit] 
Description=motionEye Server

[Service]
ExecStart=/usr/local/bin/meyectl startserver -c /home/pepe/motioneye/motioneye.conf
User=pepe
Restart=on-abort


[Install]
WantedBy=multi-user.targe
t

Ahora actualizamos los cambios:

  systemctl daemon-reload
  systemctl enable motioneye

  systemctl start motioneye
  • Ahora vamos con la configuración en nuestro home personal:
  • Entramos en nuestro espacio de usuario:
cd
o tambien: cd $HOME

mkdir  motioneye

Donde se guardarán las capturas:
mkdir motioneye/media
Donde se guardará el log:
mkdir motioneye/log
Donde se guardará motion.pid y motioneye.pid
mkdir motioneye/run

Ahora añadimos y editamos el archivo de configuración de nuestro motioneye:

nano motioneye/motioneye.conf

Y escribimos nuestros datos (sustituir cada uno por los suyos), este es un ejemplo real:
motioneye.conf

Cada cual ajuste según sus necesidades

Si vamos a acceder desde el exterior habrá que redirigir en el router el puerto 8765  a la IP de nuestra red local.

Desde fuera de nuestra red local:  IP_PÚBLICA:8765

Nota: Si lo creemos oportuno podemos cambiar el puerto 8765

5-Vamos a conectarnos vía web, añadir nuestra webcam y configurarla:

Abrimos el navegador y apuntamos a la dirección IP de nuestro servidor de videovigilancia: 

192.18.1.2:8765

Entrada inicial por defecto, después se cambia para más seguridad:
Login : admin
password : vacío, no tiene



Entramos y hacemos clic en el enlce para añadir las webcams:


Normalmente detectará nuestra webcam, la añadimos y entramos en la sección de configuración:

Descripción detallada de la configuración (guardar la imagen para verla a resolución completa):

Y para ver cada sección detallada:

Preferencias

 Usuarios y Backup

Dispositivo de Video

Almacenamiento

Texto en capturas

Configuración del streaming

Configuración de imágenes estáticas

Configuración de videos

Configurar detecciones

Notificaciones

Reglas de tiempos


Y cuando queremos ver los cambios realizados:




  • Añadir máscara de detección:

Vamos al apartado: Motion Detection ---> Mask


Y encontramos 2 posibilidades
Smart : define la zona de máscara automáticamnete dependiendo estadísticamente donde hay más detecciones o movimientos. Hay poco más que comentar.
Editable : La definimos nosotros manualmente



Y ahora a probar las detecciones y disfrutar del programa!!

Próximamente añadiré un tutorial de cómo colocar botones (iconos) en la interfaz web para gestinar el movimiento de la cámara.
Pondré un ejemplo práctico para una Logitech Orbit AF.


23 feb. 2017

Instalar ffDiaporama en Ubuntu 16.04

Teniendo en cuenta que el desarrollo de ffDiaporama se ha detenido es algo complicado instalarlo en las nuevas distribuciones. Gracias a un parche aplicado por Boenki ( mantiene ffDiaporama para AUR) soluciona los errores de compilación con el nuevo ffmpeg 3.0.
 






sudo apt-get update

sudo apt-get install libqt5multimedia5-plugins libtag1-dev libssh-dev libssl-dev libcurl4-openssl-dev libcurlpp-dev libcurlpp0 libqgsttools-p1 libqt5multimediaquick-p5 qtmultimedia5-dev build-essential libavcodec-dev libavdevice-dev libavfilter-dev libavformat-dev libavresample-dev libexiv2-dev libflac-dev libswscale-dev qt5-image-formats-plugins qt5-qmake libqt5quickwidgets5 libsdl-image1.2-dev libsdl-mixer1.2-dev qt5-default qttools5-dev-tools qttools5-dev libqt5svg5-dev libqt5help5 libqt5sql5-sqlite



























18 feb. 2017

Evolvotron, veterana aplicación muy interesante

Después de algún tiempo regreso para dar algo de dinamismo al blog.
Este nuevo año 2017 vamos a empezar con Evolvotron, una vieja aplicación gráfica poco conocida que siempre me gustó mucho y que ha sido muy práctica para mí.

¿Qué hace?
Pues como dice su autor, es un programa que genera imágenes artísticas de forma aleatoria. Nos puede ser útil para nuestras creaciones, para la web, para diseño de portadas, para menu de DVD, para videos..etc.

Depende del comando generará imágenes estáticas o animaciones (muy interesante para crear introducción de videoclips).
Suele estar en los repositorios de cualquier distribución Linux.
Voy a explicar un poco cómo funciona y cómo distribuyo mi trabajo con este programa:

- El comando principal es evolvotron, que nos lanzará una rejilla de 6x5 muestras aleatorias, con una calidad básica de muestras por píxel:


 - Si hacemos clic en cualquier rejilla nos mostrará otros ejemplos con mutaciones de la función que hemos elegido. Por ejemplo haciendo clic en esta:
Nos da este otro resultado, variaciones aleatorias de la función elegida:
Pero hay mucho más....

Vamos a profundizar un poco en las posibilidades, y veréis lo interesante de esta aplicación.
En primer lugar las opciones principales para evolvotron si queremos crear un script para lanzar la aplicación con resultados personalizados:
  • -g, --grid      columnasxfilas  (por defecto 5x6)
  • -m, --multisample      muestras por pixel en la rejilla (por defecto 1, yo suelo usar 3)
  • -j, --jitter     da un cierto aliasing al resultado
  •  -F, --fullscreen     si queremos que se muestre a pantalla completa
  • -M, --menuhide    ocultamos barra de herramientas y menu
Animando!!

Pues efectívamente , una de las opciones más gratificantes para crear es usar:
  • -f, --frames    frames, cuadros
  • -s, --fps     segundos  (por defecto 8)
Script que uso:

 #/bin/bash
 evolvotron -m 3 -f 120 -s 20 -a -g 5x5

Esto da una transición muy equilibrada para tener una base de trabajo.

Lo he guardado como Evolvotron_anim.sh en /usr/local/bin, con permisos de ejecución.
He creado un icono y lo he puesto en el escritorio como lanzador. 
Resulta algo así:




-Si no nos gusta el resultado podemos pulsar la tecla R para resetear y presentar otras variaciones
-Si nos gusta alguno pero queremos alguna varición más haremos clic en su celda
-Si nos gusta pero necesitamos probar otros colores, haremos clic en la celda, botón derecho y elegimos: Respawn_recoloured:


Y obtendremos este estupendo resultado !!!


Ahora supongamos que ya hemos decidido con cual vamos a trabajar, pues en ese caso guardamos su función matemática para tratarla posteriormente:



Guardamos la función, un archivo xml, en un directorio vacío, donde podamos trabajar. En este ejemplo lo he guradado como anim_evolvotron.xml

¿Qué vamos a hacer ahora con este archivo?  
Con uno de los comandos de Evolvotron vamos a renderizar la función con el resultado de una serie de imágenes en formato png que después codificaremos como video mp4. 
Atentos:

Entramos en la carpetaa donde está anim_evolvotron.xml:


Y ahora viene la magia, escribimos: 
evolvotron_render -s 1024x768 -m 2 -j -f 200 < anim_evolvotron.xml -o anim_evolvotron.png



-s 1024x768     El tamaño de las imágenes
-m 2            Las muestras por pixel para darle algo de calidad
-j              Jitter, algo de antialiasing
-f 200          200 frames o imágenes

Las imágenes renderizadas

Ahora para codificar el video vamos a hacerlo desde terminal, no vale la pena usar ningún editor como Openshot o Avidemux :
ffmpeg -i anim_evolvotron.f%6d.png -c:v libx264 -preset veryslow -crf 0 animacion_final.mp4


Resultado final

¿Qué os ha parecido? Una aplicación muy interesante

--------------------------------------------------------------------------------------------------------------------------
Como he comprobado el interés que ha despertado en un tiempo atrás el programa Kmotion para videovigilancia, y teniendo en cuento que con las últimas distribuciones no funciona demasiado bien ya que su desarrollo se ha parado voy a crear un nuevo artículo para tratar sobre otro que a mí personalmente me gusta mucho: Motioneye