Un hub. Un bus. Todo lo demás se suscribe.
El núcleo, cctv_hub, es un solo hilo epoll sobre llamadas de sistema, sin libc. Ingiere las cámaras por RTSP y reparte cada flujo a quien lo pidió. Nada más en el sistema habla con una cámara, y ningún suscriptor sabe qué hacen los demás.
Un flujo principal y uno secundario por cámara, traídos por el hub. Hoy Reolink; el driver de cada fabricante es un objeto compartido.
Cada fotograma, evento, comando y resultado pasa por aquí, y por ningún otro sitio. Hechos, órdenes y resultados viajan por el mismo protocolo documentado, y por eso añadir un consumidor nunca implica tocar la ruta de ingesta.
Grabador
Clips de evento activados por movimiento: margen previo, episodio, margen posterior, contiguos.
Detector
Detección de objetos en su propio equipo, con seguimiento de novedad: la presencia no es un evento.
Control de cámara
Un vocabulario neutral, con las formas de cada fabricante aisladas en un driver.
Vigilante
Una cámara apagada es un evento de primera clase con reglas de alarma, no un hueco que se descubre después.
También en la lista: el muro en vivo, la aplicación, el exportador, la consola — cada uno un proceso que pidió al bus lo que necesita. También lo que usted escriba.
Qué viaja por el bus
events.jsonl como registro consultable.Medido, con la máquina en la que se midió
Los valores absolutos dependen de la máquina: las proporciones viajan, los absolutos no. Cada cifra indica su máquina y su compilación para que pueda repetirla en la suya.