Tengo algunas cámaras IP que generan una transmisión RTSP (h264 mpeg4).
Golpear la URL localmente a través de VLC: rtsp: //192.168.0.21: 554 / mpeg4
Puedo transmitir la cámara y volcar en el disco (en mi escritorio). Sin embargo, me gustaría almacenar estos archivos en mi NAS (FreeNAS). Estaba buscando formas de capturar el flujo RTSP y volcarlos en el disco, pero no puedo encontrar nada.
¿Es posible capturar la transmisión en FreeBSD o Linux (RaspberryPi) y volcar el contenido transmitido a un disco local a Linux o FreeBSD, preferiblemente cada 30 minutos?
EDITAR: El NAS no tiene cabeza (HP N55L o algo así) y los RaspberryPi tampoco tienen cabeza.
Ya he examinado ZoneMinder pero necesito algo pequeño. Esperaba tal vez usar Motion para detectar movimiento en la transmisión, pero eso vendrá más tarde.
Respuestas:
Las cámaras IP son de diferente calidad, algunas se comportan de manera errática en mi experiencia. Tratar con sus flujos RTSP requiere una dosis de tolerancia a fallas.
El proyecto Live555 proporciona una implementación de cliente RTSP relativamente tolerante a fallas, openRTSP, para extraer transmisiones de audio / video RTSP a través de CLI: http://www.live555.com/openRTSP/
Por ejemplo, para guardar el audio / video RTSP de una cámara en archivos en formato QuickTime (AVI y MP4 también disponibles), un archivo cada 15 minutos:
Estas opciones significan:
La eliminación de la opción -t hace que openRTSP tenga el valor predeterminado UDP, lo que puede reducir un poco el tráfico de red. Tendrá que jugar con las opciones para encontrar la combinación que más le convenga.
Francamente, las cámaras en sí mismas a veces no son confiables, o simplemente se implementan de manera diferente, como cerrar el zócalo inesperadamente no es tan inusual.
A veces, el cliente openRTSP no detecta estos problemas técnicos. Así que opté por codificar un controlador en Python usando el módulo 'subprocesos' para invocar y monitorear la salida estándar de cada instancia de cliente openRTSP, y también verificar que los archivos continúen creciendo en tamaño.
Esto parece ser un subproducto de la gama baja de la industria de CCTV que juega rápido y suelto con los estándares, RTSP y ONVIF son los dos más abusados.
Afortunadamente, generalmente puede solucionar estos problemas. A menos que sus cámaras IP y su controlador estén diseñados para jugar bien juntos, solo use ONVIF para el descubrimiento único y la administración de configuraciones.
Uso openRTSP en algunos Raspberry Pi B + con Raspbian. Cada transmisión de 1280x1024 ocupa alrededor del 8-10% del tiempo de la CPU, y he ejecutado con éxito hasta ocho cámaras por RPi, escribiendo los archivos en el almacenamiento NAS. Otro RPi procesa archivos completados con ffmpeg, busca movimiento y produce PNG de índice de esos cuadros, para ayudar a detectar robos.
Hay un esfuerzo de código abierto llamado ZoneMinder que realiza esta última parte, pero no pude hacerlo funcionar con mis cámaras. El soporte de ONVIF es nuevo y naciente en ZM, y no parece competir bien con las transmisiones RTSP irregulares producidas por mi colección de cámaras IP de menos de $ 100.
fuente
Solo pensé en agregar mis dos centavos y complementar la respuesta de BjornR.
En lugar de ejecutar un trabajo cron para eliminar periódicamente el proceso de VLC, uno podría decirle a VLC que se ejecute durante un período de tiempo especificado y que se cierre después.
Este es el comando que ejecuto en mi caja:
Esto ejecuta VLC durante el tiempo especificado y luego se cierra. Se requiere el parámetro vlc: // quit ya que VLC dejaría de grabar y permanecería abierto. Este comando debe colocarse dentro de un bucle.
El único problema que he encontrado hasta ahora es que puede faltar unos segundos cada vez que comienza una nueva grabación.
fuente
Si sigo su pregunta correctamente, ¿por qué no prueba el siguiente comando en un sistema Linux (RPi):
Esto debería guardar el video en fragmentos de 300 segundos. (Tenga en cuenta que la longitud del clip dependerá de sus velocidades de cuadros de entrada y salida)
fuente
VLC parece un candidato ideal para procesar su transmisión. Los métodos básicos para capturar una transmisión se describen en el sitio web de Videolan. Grabé con éxito la salida de mi cámara de red D-Link DCS-5222 usando el siguiente comando:
En su caso, esto podría funcionar para guardar la salida localmente:
Sugeriría ejecutar un script que finalice este proceso vlc y lanzar una nueva instancia cada 30 minutos, ya que no estoy seguro de que VLC pueda hacer esto.
En cuanto al almacenamiento en un NAS, simplemente móntelo en su sistema de archivos local.
fuente