MOBOTIX – Cambiar la resolución de la grabación cuando ocurre un evento
Hoy volvemos a la carga con un manual en el que vamos a explicar cómo cambiar la resolución de la grabación cuando ocurra algo en el escenario que cubre la cámara.
Los que conocéis MOBOTIX ya sabréis que las cámaras pueden grabar por eventos, es decir, en lugar de grabar todo el rato, podemos grabar sólo cuando esté ocurriendo algo interesante en nuestro escenario (detección de movimiento en vídeo, análisis MxActivitySensor, botón de pánico pulsado, sensor infrarrojo activado…). Hay ocasiones en las que, aunque esto sería lo más lógico desde cualquier punto de vista, los requisitos del cliente son de grabación continua por pura política de seguridad de la empresa, pero es un desperdicio de espacio de almacenamiento y podría encarecer la solución en cuanto al dimensionamiento del NAS o la tarjeta uSD que propongamos.
Existe una manera de hacer que nuestras cámaras graben en alta resolución cuando algo ocurra y que el resto del tiempo estén grabando en otra resolución, mucho más baja, y a menos frames por segundo. Los propios menús de la cámara nos permitirán configurarla de tal manera que suban los frames por segundo, pero no hay una opción para hacer el cambio de resolución.
¿Y entonces? ¿Qué hacemos? ¿Acaso os he engañado para que os leáis esta entrada y no se puede? Tranquilos, tranquilos, que todo es verdad: Hay algo muy importante en las cámaras MOBOTIX que se pasa por encima a la hora de mirar sus especificaciones, y es que la cámara puede recibir comandos CGI a través de los cuales podemos hacer que la cámara realice acciones o se reconfigure a sí misma; así que vamos a hacer uso de las posibilidades que esto nos abre para “programar” la cámara para que se reconfigure a sí misma.
En el ejemplo que vamos a utilizar, grabaremos de manera continua en resolución PDA (y 4 frames por segundo) y cuando tengamos un evento de detección de movimiento en vídeo gracias al análisis MxActivitySensor incorporado en la cámara, pasaremos a resolución QXGA (y máximos FPS) durante 30 segundos (si volvemos a tener una detección durante esos 30, se reiniciará la cuenta). Una vez concluya la actividad, volveremos a PDA. Allá vamos.
- Configuramos la cámara para grabar continuamente:
- Accedemos a la interfaz web de la cámara, Setup Menu => Recording
- Armamos la grabación: Arming => Enabled
- En Recording (REC) elegimos Continuous Recording
- En Continuous Recording Frame Rate elegimos 4 fps
- En mi caso voy a grabar también el audio, así que elijo Include audio en Record Audio Data
- Ahora en Start Recording, elegiremos el evento o eventos que iniciarán nuestra fase de máximos frames por segundo, en nuestro caso el evento Image Analysis: AS
- Ponemos el Event Frame Rate en Max fps
- Elegimos la duración de nuestro evento, en Recording Time, 30 s
- En Retrigger Recording definiremos los eventos que pueden reiniciar la cuenta de los 30s, en nuestro caso el mismo Image Analysis: AS
- En Stop Recording no seleccionamos ninguno. Aquí podríamos seleccionar algún evento que parara la grabación, por ejemplo, una puerta de emergencia que se cierra.
- Full Image Recording lo dejaremos en Off, ya que posteriormente vamos a jugar con la resolución de visualización para grabar lo mismo que vemos.
- Ahora que hemos fijado el tema de los frames por segundo, vamos a hacer que la cámara cambie su resolución utilizando comandos de la API que la cámara lanzará contra sí misma. Vamos a Admin Menu => IP Notify Profiles para crear esas auto-notificaciones IP:
- Hacemos click en Add new profile para crear una nueva notificación IP
- Le doy un nombre significativo, en este caso, Full-QXGA, para el modo en alta resolución
- Dejamos el tipo de notificación como Custom Configuration
- En Destination Address usamos localhost:80
- Data Protocol: HTTP/1.0 Request
- CGI-Path: /control/control
- En HTTP Authentication usaremos usuario:contraseña de la cámara. Si fueran los de la cámara por defecto usaríamos admin:meinsm
- Data Type: Plain text
- En Message insertaremos el comando a utilizar para que la cámara cambie a QXGA:
set§ion=imagecontrol&framerate100=400&size=2048x1536&display_mode=simple&textdisplay=disable
- En Send port dejamos 0
- Hacemos click en Set
- Hacemos click en Add new profile para crear una nueva notificación IP
- Le doy un nombre significativo, en este caso, Full-240×180, para el modo en baja resolución
- Dejamos el tipo de notificación como Custom Configuration
- En Destination Address usamos localhost:80
- Data Protocol: HTTP/1.0 Request
- CGI-Path: /control/control
- En HTTP Authentication usaremos usuario:contraseña de la cámara. Si fueran los de la cámara por defecto usaríamos admin:meinsm
- Data Type: Plain text
- En Message insertaremos el comando a utilizar para que la cámara cambie a PDA:
set§ion=imagecontrol&framerate100=400&size=customize&customsize=240x180&display_mode=simple&textdisplay=disable
- En Send port dejamos 0
- Hacemos click en Set, Close y Aceptamos
- Ahora que ya tenemos los comandos para cambiar la resolución a QXGA y a PDA (podemos comprobar su correcto funcionamiento en Admin Menu => Test Current Network Configuration igual que comprobábamos los perfiles FTP en este artículo), vamos a decirle a la cámara cuándo tiene que lanzarlos:
- Nos vamos a Setup Menu => Event Overview
- Buscamos Internal Events y hacemos click en su botón Edit…
- Hacemos click Add new profile
- Le damos un nombre significativo, en mi caso le he puesto Final_Evento
- Seleccionamos el Event Sensor Type => Recording
- El Recording Trigger lo fijamos en Recording is stopped
- Hacemos Set, Close y Aceptamos
- Nos vamos a Setup Menu => Action Group Overview
- Hacemos click en Add new group y le damos un nombre significativo, en nuestro caso Full_QXGA
- Hacemos click en el botón Edit… de su derecha
- En Event Selection elegimos el mismo evento que inicia la grabación al máximo de FPS, en nuestro caso, Image Analysis: AS
- El Action Deadtime lo dejamos en 5 segundos
- El Action Chaining lo dejamos Simultaneously (sólo vamos a tener una acción)
- En la sección de Actions, vamos a añadir una haciendo click en Add new action
- Elegimos la que creamos anteriormente: IP Notify: Full-QXGA
- Hacemos click en Set, Close y Aceptamos
- Volvemos a Setup Menu => Action Group Overview
- Hacemos click en Add new group y le damos un nombre significativo, en nuestro caso Full_PDA
- Hacemos click en el botón Edit… de su derecha
- En Event Selection elegimos el evento que señala el final de la grabación, en nuestro caso, Internal: Final_Evento
- El Action Deadtime lo dejamos en 5 segundos
- El Action Chaining lo dejamos Simultaneously (sólo vamos a tener una acción)
- En la sección de Actions, vamos a añadir una haciendo click en Add new action
- Elegimos la que creamos anteriormente: IP Notify: Full-240×180
- Hacemos click en Set, Close y Aceptamos
- Si todo está bien configurado, nuestra cámara estará a resolución PDA siempre, excepto cuando detecte movimiento por el MxActivitySensor, que cambiará a QXGA, y cuando acabe la actividad (pasados 30 segundos desde el último movimiento), volverá a PDA.
Lo veo evidente, a la par que sencillo, pero tengo una cuestión: si el evento es, por ejemplo, que pasa un coche por una carretera, tendremos su paso a Max frame rate y resolución, si el coche esta apenas unas décimas de seg. En la escena? Tendremos siempre el evento completo a max FR Y RES?
Ahí has dado en el clavo, porque el cambio de resolución toma unas décimas de segundo, por lo que si esperamos que en nuestro escenario los lapsos de tiempo en los que vamos a tener a nuestro objetivo encuadrado van a ser muy cortos, esta técnica no sería la mejor posible. En ese caso o bien hacemos grabación continua a la resolución mínima necesaria para cumplir las exigencias de identificación; o bien hacemos grabación por eventos estableciendo un pre-bufer para no perdernos nada del evento.