Canal de Video
📹 Objeto: Video Channel (El Ojo Digital del Sistema)¶
Representa un único flujo de video proveniente de un dispositivo, típicamente una cámara de seguridad.
Es uno de los objetos más complejos porque actúa simultáneamente como:
- Sensor → Provee información visual y metadatos.
- Actuador → Puede ser comandado para grabar, moverse, etc.
📖 Concepto¶
Es el "ojo" del sistema, permitiendo observar un área en tiempo real.
Responde a:
- ¿Qué está sucediendo aquí?
- ¿Puedes mostrarme los detalles?
- ¿Puedes guardar un registro de esto?
Un solo dispositivo de cámara puede tener múltiples objetos Video Channel (ej. main stream de alta calidad y sub stream de baja calidad para vistas previas).
⚙️ Funcionamiento¶
El Video Channel expone propiedades que describen: - Sus capacidades → Si es PTZ, si soporta grabación. - Su estado técnico actual → Resolución, FPS, bitrate.
Las reglas pueden: - Leer estas propiedades. - Enviar comandos para iniciar grabaciones, mover la cámara, etc.
✨ Punto Clave¶
Es la fuente de verdad visual y la evidencia contextual.
Mientras otros sensores ofrecen datos abstractos, el Video Channel provee prueba visual irrefutable, crucial para verificación e investigación.
📊 Propiedades Clave¶
1️⃣ Capacidades del Canal (estáticas)¶
ptz→ Indica si la cámara soporta Pan, Tilt, Zoom.support_recording→ Informa si el canal puede grabar video.resolutions→ Lista de resoluciones soportadas.
2️⃣ Estado del Stream (dinámicas)¶
resolution→ Calidad de imagen.fps→ Frames por segundo.bitrate→ Tasa de datos de video.codec→ Formato de compresión.- Main stream → Alta calidad (grabación).
- Sub stream → Baja calidad (visualización en vivo optimizada).
3️⃣ Identificadores y Recursos¶
stream_id→ Identificador único para acceder al flujo.thumbnail_url→ Imagen estática reciente para vista previa.
🧠 Estados Derivados y Acciones Comunes¶
recording(Grabando) → Estado más importante; puede activarse por una regla (ej. Panel de Alarma enin_alarm).motion_detected(Movimiento Detectado) → Activado por analítica de movimiento interna.ptz_control(Control PTZ) → Siptz = true, permite mover la cámara a posiciones predefinidas (presets).idle/offline(Inactivo / Desconectado) → Indica disponibilidad o pérdida de conexión.
✨ Punto Clave a Resaltar¶
El Video Channel convierte el sistema de una colección de datos a una plataforma de verificación y evidencia.
Pasa de saber que algo ocurrió (ej. una puerta se abrió)
a entender cómo, quién y qué pasó después, con contexto visual para seguridad y toma de decisiones.
Propiedades¶
- ptz: booleano que indica si el canal de video es PTZ
- support_recording: booleano que indica si el canal de video soporta grabación
- resolutions: array de strings que indica las resoluciones soportadas
- main_stream_fps: number que indica la tasa de frames por segundo actual
- main_stream_resolution: string que indica la resolución actual
- main_stream_bitrate: number que indica el bitrate actual. El bitrate es el ancho de banda utilizado por el canal de video.
- main_stream_codec: string que indica el codec actual. El codec es el algoritmo de compresión utilizado para el canal de video.
- main_stream_audio_codec: string que indica el codec actual. El codec es el algoritmo de compresión utilizado para el canal de audio.
- main_stream_support_audio: booleano que indica si el canal de video soporta audio.
- main_stream_profile_name: string que indica el nombre del perfil actual. El perfil es el nombre del perfil de video utilizado para el canal de video.
- sub_stream_fps: number que indica la tasa de frames por segundo actual
- sub_stream_resolution: string que indica la resolución actual
- sub_stream_bitrate: number que indica el bitrate actual. El bitrate es el ancho de banda utilizado por el canal de video.
- sub_stream_bitrate: number que indica el bitrate actual. El bitrate es el ancho de banda utilizado por el canal de video.
- sub_stream_codec: string que indica el codec actual. El codec es el algoritmo de compresión utilizado para el canal de video.
- sub_stream_audio_codec: string que indica el codec actual. El codec es el algoritmo de compresión utilizado para el canal de audio.
- sub_stream_support_audio: booleano que indica si el canal de video soporta audio.
-
sub_stream_profile_name: string que indica el nombre del perfil actual. El perfil es el nombre del perfil de video utilizado para el canal de video.
-
stream_id: string que indica el id del stream principal, es decir, el stream de mayor calidad.
- sub_stream_id: string que indica el id del stream secundario, es decir, el stream de menor calidad.
- thumbnail_url: string que indica la url de la miniatura del canal de video.
- video_engine_id: string que indica el id del motor de video que está asignado al canal de video para la codificación y decodificación de video.
Las propiedades de fps, resolution, bitrate, codec, audio_codec, support_audio, profile_name son actualizadas por el driver solo si el protocolo de integración lo soporta.