Cómo hicimos una grabadora de video en la nube de tamaño pequeño a partir de una cámara IP normal



El tema de la videovigilancia se ha agudizado para mí con la llegada de las viviendas suburbanas. En Internet puede encontrar mucha información sobre la organización de la videovigilancia. Desafortunadamente, la mayoría de las opciones se redujeron a comprar kits confeccionados en China. De amigos escuché muchas críticas al respecto. De alguna manera, él mismo incluso participó en la configuración del equipo comprado en Aliexpress. En algún lugar, la mitad de las funciones declaradas no funcionaron como se indicó, algunas de las opciones no funcionaron en absoluto, aunque el registrador no era barato. Y hubo muchas críticas y opiniones. Además, muchos critican el hecho de que los videos se almacenan en servicios en la nube chinos. Y luego surgió la idea: ¿qué pasa si intenta hacer su propio DVR con una funcionalidad mínima? Que? En ese momento comencé a involucrarme en Linux, escribí aplicaciones con funcionalidad elemental en bash, experimenté con la web ... En principio, todo lo que necesitas para resolver el problema. Apenas dicho que hecho.

Vamos Selección de hierro


Se eligió un enrutador TP-LINK TL-MR3020 con OPENWRT a bordo como sujeto de prueba.



Características del enrutador:

  • Procesador MIPS de 300 MHz;
  • 32 MB de RAM;
  • chip flash para 4 MB;
  • Puerto USB 2.0;
  • Puerto RJ-45 con 100 Mb full duplex;
  • Pines GPIO, tanto libres como con LED;
  • Abotone y encienda los pines GPIO;

La cámara es una cámara IP HD china común que se ordenó en China. Tomamos video sobre el protocolo RTSP. La utilidad openRTSP nos ayudó con esto, que era parte del repositorio OPENWRT y tenía toda la funcionalidad necesaria. Decidimos trabajar con el servicio en la nube Yandex.Disk a través del protocolo webdav. Este servicio proporciona 10 Gb de espacio libre en disco a cada nuevo usuario. Bueno, allí puedes comprar según sea necesario.

Esencia de la idea.


Usando el protocolo rtsp, tomamos la transmisión de video de la cámara IP. Hacemos un directorio de búfer. Grabamos videos en ella. Usando la utilidad CURL a través del protocolo webdav, enviamos videos a la nube. En nuestro caso, este es Yandex.Disk.

Prueba


Después de conectar la cámara IP a través del ethernet al enrutador, lanzamos una grabación de prueba de un clip de 10 segundos en formato .mp4 al disco Yandex:

OPENRTSP -V -B 51200 -b 200000 -4 -f 25 -d 10>/tmp/ya_disk/test.mp4 

Luego lo enviaron a la nube:

 curl -v -m 180 --stderr /tmp/log -k -u $email:$pass -T /tmp/ya_disk/test.mp4 https://webdav.yandex.ru/ 

Funciona!


Las pruebas comenzaron con diferentes longitudes de clips, diferentes intervalos de grabación, grabación periódica. En general, las pruebas fueron exitosas. Sin embargo, hubo un problema con la grabación de clips muy cortos (del orden de 5 segundos). Los clips se grabaron a mayor velocidad y su longitud fue menor que la establecida. Resolvieron el problema editando las fuentes openRTSP: se aseguraron de que el programa cumpliera estrictamente con el valor fps ingresado por el usuario, y no tomado de SDP, también eliminó los marcos de menos de 100 bytes.

Pensamos en la funcionalidad.


Después de pruebas exitosas, se decidió hacer una interfaz de control. En ese momento comencé a familiarizarme con la web, así que decidí hacer una versión web. Pila de tecnología en el lado del usuario (frontend): HTML5, CSS3, JQUERY, AJAX. En el lado de hierro (backend): UHTTPD, CGI, BASH. No se volvieron inteligentes con el diseño, utilizaron la disposición en mosaico de los botones de la página principal.

Inicio de la aplicación

Las páginas de administración y entrada de datos se realizaron con JQUERY. Con los primeros resultados exitosos de administrar un enrutador de registro, comenzamos a agregar funcionalidad. Tal vez fue un error. Debido a la inexperiencia, descuidamos las pruebas. Ahora, cuando hay mucha funcionalidad, es difícil de probar. Debido a la falta de disciplina al escribir código al comienzo del desarrollo, se hace cada vez más difícil entender lo que está escrito. Las fallas aparecen de vez en cuando, las eliminamos, por supuesto, pero sería mucho más fácil hacerlo en las primeras etapas de desarrollo y en etapas.

Entonces, la funcionalidad:

  • Soporte para cualquier cámara IP;
  • Soporte para módems 3G / 4G;
  • Grabe en el almacenamiento en la nube (gratis) y / o en una unidad usb;
  • Grabación periódica y / o grabación de movimiento;
  • Loop to disk;
  • Ajuste de la longitud del rodillo;
  • Modos de grabación: por tiempo, por movimiento, día, noche;
  • Trabajo autónomo en caso de falla de energía (aproximadamente 20 min);

Implementación del lado del cliente


Hay 6 botones en el menú de configuración de la grabadora: WIFI, GRABACIÓN, CÁMARA, 3G / 4G, ALMACENAMIENTO y AYUDA. Entonces, en orden:

Wifi




Aquí puede configurar la grabadora wi-fi. WI-FI puede funcionar en 2 modos: "cliente" y "punto de acceso". En el modo "Punto de acceso", todo está claro: número de canal, SSID, tipo de cifrado, contraseña. En el modo "cliente", el registrador está conectado a cualquier punto de acceso wi-fi.

En consecuencia, en este modo no se necesita un módem 3G / 4G. Para que el usuario no pierda el registrador cuando el cliente se conecta al punto de acceso, implementamos físicamente el modo repetidor.

Lo único a lo que debe prestar atención es que al conectar el registrador al punto de acceso, debe verificar si el dispositivo móvil del usuario ha "saltado" a otro punto de acceso wifi, porque El punto de acceso al registrador de Wi-Fi desaparecerá por un corto tiempo. El campo "Modo de recuperación" es una garantía de que no "perderá" el registrador. Este es un momento garantizado cuando lo enciende, cuando el usuario puede configurar el dispositivo o encender el punto de acceso. Después del modo de recuperación, irá automáticamente a la página del menú principal. Esta parte de la funcionalidad aún se está probando y deshabilitando temporalmente.

Registro




Campo de indicación de fecha y hora, menú “Establecer hora”, “Grabar en almacenamiento local” y “Grabar en almacenamiento en la nube”.

Ajuste de hora. Al hacer clic en el botón "Cambiar hora", puede cambiar la hora y la fecha. Además, utilizando el control deslizante, se establece la hora del comienzo y el final del día (para todos es individual). Esto se hace para optimizar los modos de funcionamiento del registrador en diferentes momentos del día.
Escribir al almacenamiento local. Aquí puede habilitar o deshabilitar la grabación en medios externos, habilitar o deshabilitar la grabación de movimiento y / o la grabación periódica con la capacidad de establecer la duración del clip grabado y el período de grabación de los clips (en el modo de grabación periódica).
Escribir en el almacenamiento en la nube. Aquí, como en el párrafo anterior, se configura el registro en el almacenamiento en la nube. Se ha agregado un elemento para configurar un servicio en la nube, donde puede especificar en qué nube de servicio grabar (por el momento, solo funciona con un disco Yandex), el nombre de usuario y la contraseña de su cuenta Yandex.

Ayuda




El contenido de los elementos del menú de la interfaz, así como el propósito de cada uno de ellos, se describen por puntos.

CÁMARA




Dirección de transmisión RTSP de la cámara. Los datos para este campo se pueden encontrar visitando la página de configuración de la cámara IP. En el futuro, planeamos recibir estos datos a través de ONVIF y el campo se completará automáticamente. Si bien el funcionamiento estable de ONVIF en todas las cámaras IP solo puede soñar.
El retraso entre los rodillos. Parámetro que determina la pausa en segundos al grabar películas. Se utiliza en modo de grabación de movimiento. Le permite guardar el tráfico de Internet con movimientos constantes o frecuentes en el marco.
Video de la cámara. Útil para controlar la imagen grabada al instalar la cámara.

3G / 4G




Esto muestra información sobre su conexión a Internet utilizando un módem 3G / 4G. Los datos se actualizan cada 3 segundos. Útil para controlar la calidad de la comunicación al instalar la cámara.

ALMACENAMIENTO




Hay dos submenús: "Almacenamiento local" y "Yandex.Disk". Cuando selecciona el primero, ingresamos al árbol de archivos de los medios externos conectados, cuando selecciona el segundo, vamos a Yandex.disk.

Versión móvil de la interfaz.












Los videos grabados se pueden ver en Yandex.Disk con el reproductor incorporado del servicio. Además, cualquier reproductor de video puede descargar y ver el video localmente. El almacenamiento de videos grabados se organiza de la siguiente manera:



CAM - carpeta para grabar videos del registrador;
MOVIMIENTO: una carpeta para grabar videos grabados por movimiento en el cuadro;
TIME - carpeta para grabar videos grabados a una frecuencia especificada;
AAAA-MM-DD - carpeta para videos grabados durante el día;
DDMMYYYY-HH_MM_SS.mp4: videos grabados en formato mp4;

Organización del almacenamiento de archivos en Yandex.Disk





Que hay adentro Implementación del lado del servidor


Como escribí anteriormente, el enrutador TP-LINK TL-MR3020 con OPENWRT a bordo se convirtió en el primer experimento. Barrier Breaker versión 14.07. Al comienzo de la prueba, era la última versión. Ahora actualizado a LEDE. OpenRTSP no estaba en el repositorio de esta versión, por lo que agregamos la utilidad nosotros mismos, al mismo tiempo que eliminamos todo lo superfluo.

Después de pruebas exitosas, comenzamos a considerar otros enrutadores con arquitectura similar. Estábamos buscando una plataforma que sea más adecuada para el registrador en dimensiones y características. La idea es que al flashear cualquiera de los enrutadores con firmware modificado y conectar una cámara IP con un módem 3G / 4G, obtienes un registrador. La lista de dispositivos en los que se probó la funcionalidad del registrador:

  • TP-LINK TL-MR3020;
  • HAME A5;
  • CARAMBOLLA2;
  • UNWIREDONE;
  • Skywork skw71;
  • TP-LINK TL-MR10U (con batería);
  • TP-LINK TL-MR3040 (con batería);
  • TP-LINK TL-MR3220 V: 2.3 (4 puertos ethernet);

Intentamos probar las placas de enrutadores en el caso. La idea era que, aparte del estuche, nada sobresale y no se cuelga, y el estuche en sí es de tamaño mínimo. Por lo tanto, según lo planeado por 3G / 4G, el módem debe estar dentro de la caja. Así que obtuvimos un prototipo de calle de granja colectiva basado en la placa TP-LINK TL-MR3020:









Por supuesto, preferimos enrutadores con tamaños mínimos. Por lo tanto, decidimos probar el enrutador chino HAME A5, imprimir un estuche y ver qué sucede:





En HAME A5, nuestro firmware de registrador era inestable, el enrutador colgaba y se reiniciaba constantemente. Lo más probable es que esto se deba a un sobrecalentamiento severo. Por lo tanto, tuve que abandonarlo en favor de una opción más confiable y probada.

Probamos muchas opciones, pero nada es mejor que el mío. Por lo tanto, decidieron distribuir su placa con un módulo de CARAMBOLLA2 y la posibilidad de duración de la batería.



Características de CARAMBOLLA2:

  • Procesador AR9331, 400 MHz;
  • 64 MB de RAM DDR2;
  • 16 MB de FLASH;
  • 802.11 b / g / n, 2.4 GHz, 1x1 SISO, velocidad de datos máxima de 150 MBps, potencia de salida de 21 dB;
  • Tensión de alimentación 3,3 V;
  • Dimensiones 28 x 38 mm;

Al diseñar el tablero, quedó claro que resulta bastante pequeño:





Otra foto!
















¿Por qué no instalarlo directamente en la cámara? Entonces resolvemos de inmediato el problema con el caso del registrador. Entonces lo hicieron. Esto es lo que sucedió:









La foto muestra que la placa grabadora está montada paralela a las placas de la cámara en los bastidores. Por razones de enfriamiento del chip, es mejor usar cámaras IP con una carcasa de metal y hacer un radiador para que el calor se elimine de la carcasa. Para conectar un módem 3G / 4G y / o una unidad usb, se usó un cable de cámara IP Ethernet estándar. La autonomía de la cámara con la grabadora en el interior proporciona una batería de 700mAh 3.7V. La función de la batería será útil en caso de un corte de energía deliberado. Esta batería es suficiente para unos 20 minutos de funcionamiento del DVR con la cámara.

¡Regala más cámaras!


Además, se realizaron experimentos con la grabación de videos de varias cámaras IP. Los experimentos mostraron que la grabación de videos de 2 cámaras IP funcionó de manera bastante estable, por lo que estamos considerando la posibilidad de crear una grabadora en un caso separado con la capacidad de conectar 2 cámaras IP. Ahora estamos probando el trabajo del registrador con tres y cuatro cámaras IP. Los resultados aún no están claros. Las cámaras serán alimentadas desde la grabadora a través de PoE pasivo.



Más fotos!












La funcionalidad de esta opción puede ser útil, por ejemplo, al instalar cámaras con intersección de zonas de vigilancia. Para trabajar con una gran cantidad de cámaras, puede mirar en la dirección de las minicomputadoras actualmente muy populares. Pero debe comprender que el consumo de energía de tales dispositivos es un orden de magnitud más alto, y el precio también.

¿Cómo se llama un barco para que navegue?


Probablemente hayas notado la inscripción en la pizarra. Pensamos que no valía la pena que un proyecto no tuviera título. Se les ocurrió un nombre modesto: "Vip-Cam" (Video-Ip-Camera). Bueno, la versión con múltiples cámaras - "Vip-Box".

Que sigue


Planes de futuro:

  • Optimiza y prueba el código. Obtenga un dispositivo de trabajo estable;
  • Realizar investigaciones sobre la posibilidad de configurar una cámara IP a través del menú de la aplicación web;
  • Explore la posibilidad de integrar un DVR en un sistema doméstico inteligente;
  • Continúe probando el funcionamiento del DVR con dos o más cámaras IP;
  • Realice pruebas sobre el funcionamiento de la cámara con una batería solar;
  • Crear una modificación al DVR con soporte para cámaras IP 2-x;
  • Agregar funcionalidad para la configuración remota del DVR y la cámara IP;
  • Agregar la capacidad de hacer un video a pedido de forma remota;

Las fuentes del proyecto están aquí .

Así que actualmente implementamos la idea de una mini grabadora en la nube. El proyecto se implementa en su tiempo libre, por lo tanto, el tiempo de desarrollo se retrasa considerablemente. Como resultado, tenemos un prototipo funcional de un DVR de pequeño tamaño que puede grabar videos en el almacenamiento en la nube de forma gratuita. Todavía hay mucho trabajo, pero una de las tareas se ha resuelto: es muy posible crear un registrador de alta calidad y sin paralelo. Gracias por su atencion

Source: https://habr.com/ru/post/es422797/


All Articles