Skip to main content

Video Management Overview

What This Capability Provides

The Video Management Capability provides a complete model for IP camera and video surveillance management within a Zipato deployment. It introduces cameras, channels, recordings, clips and snapshots built on top of the normalized device model, and handles live streaming, recording storage, clip creation and playback as a reusable module.

It is not a standalone product. It runs on top of the Core Platform, using the normalized device model and event stream to deliver video management logic that any application or integration can consume.


Core Model

Camera Device

The capability is structured around camera endpoints. A camera appears in the platform device tree as an endpoint with the IP device class. All connection details, stream URLs and configuration are held within it.

IP Device
└── Camera (endpoint, class: com.zipato.network.ip.IP)
├── Connection (username, password, IP, port)
├── Streams (high, mid, low quality + MJPEG)
├── Snapshot URL
└── Recording URL

This structure separates the logical video model from the physical camera hardware. Any supported IP camera — RTSP, RTMP, HTTP or MJPEG — can be registered regardless of its manufacturer or protocol.


Channels

A channel represents a camera's registration with the Cloud NVR. Creating a channel for a camera enables cloud-based recording, clip creation and snapshot storage for that camera. Each channel is hosted on a specific NVR instance and is the unit of stream authorization and storage allocation.


Cloud NVR Architecture

The Cloud Video Management System provides unified management of Network Video Recorders that record and store video streams from IP cameras.

Cloud VMS
├── Cloud NVR (recording, storage, metadata)
│ ├── NVR Worker (stream processing, S3 upload)
│ └── RDS Database (recording/clip/snapshot metadata)
├── Local Agent (runs on Zipato Hubs / Zipatiles)
└── AWS S3 (recordings, clips, snapshots)
ComponentPurpose
Cloud VMSUnified REST API for managing NVRs, channels and media
Cloud NVRManages recording metadata, presigns S3 URLs, coordinates clip creation
NVR WorkerProcesses live streams, segments recordings, uploads to S3
Local AgentRuns on edge hardware, proxies camera streams to NVR Worker via WebSocket
AWS S3Stores all media — recordings, clips and snapshots — accessed via presigned URLs

Live Streaming

Live streaming follows a token-based authorization flow that routes camera streams through the Local Agent to the NVR Worker:

  1. Client creates a channel on the Cloud NVR via the VMS API
  2. Client requests a stream token (encodes NVR URL and stream authorization session)
  3. Client sends the token to the Local Agent along with the camera address
  4. Local Agent initiates a WebSocket connection with the NVR Worker
  5. NVR Worker authorizes the stream session with the Cloud NVR
  6. Local Agent pulls the stream from the camera and pushes it to the NVR Worker
  7. NVR Worker notifies the Cloud NVR when the stream starts and stops

Recordings

While a stream is active, the NVR Worker continuously segments and uploads recordings:

  1. NVR Worker receives the live stream from the Local Agent
  2. Every 30 seconds, the worker uploads a recording segment to S3
  3. S3 notifies an SQS queue of each upload
  4. NVR Worker notifies the Cloud NVR of the upload
  5. Cloud NVR saves recording metadata to the database

Recordings are stored in AWS S3 and accessed by clients via presigned URLs. When a client requests recordings for a channel, the Cloud NVR retrieves metadata from the database, presigns S3 GET URLs, and returns them directly to the client for download.


Clips

A clip is a user-defined time range extracted from continuous recordings. Clip creation is an asynchronous process:

  1. User initiates clip creation with a start and end time
  2. Cloud NVR creates a clip entry with status in_progress
  3. NVR queries recordings that fall within the time range
  4. As recordings upload (if the range includes the present), they are appended to the clip
  5. Once all recordings in the range are available, the clip status becomes finished

Clips are stored in S3 and accessed via presigned URLs, the same as recordings.


Snapshots

Snapshots are single-frame captures from a camera. Two upload paths are supported:

PathHow It Works
Client-uploadedCloud NVR creates a snapshot entry, presigns an S3 PUT URL, and the client uploads the image directly to S3
Agent-capturedLocal Agent captures a frame from the camera and uploads via the presigned URL

PTZ Control

For cameras that support Pan-Tilt-Zoom, the capability exposes directional and preset control:

ActionDescription
up, down, left, rightDirectional movement
zoomOptical zoom control
homeReturn to home position
stopStop current movement
preset/{n}Move to a saved preset position

PTZ commands are dispatched as camera control events through the platform's device control layer.


Stream Quality Levels

Each camera can expose multiple stream quality levels for different use cases:

LevelTypical Use
High QualityFull recording, detailed viewing
Mid QualityBalanced bandwidth and quality
Low QualityThumbnail preview, low-bandwidth clients
MJPEGBrowser-compatible motion JPEG stream

Quality selection is made by the client at stream request time.


Inter-Service Communication

PathProtocol
Mobile App / Hubs ↔ Cloud VMSHTTP REST API
Cloud VMS ↔ Cloud NVRArtemis Broker with mTLS
NVR Worker ↔ Cloud NVRHTTP (stream authorization, upload notifications)
NVR Worker ↔ AWS S3rclone
Cloud NVR ↔ AWS SQSRecording upload notifications
Local Agent ↔ NVR WorkerWebSocket (stream data)

Where to Continue

GoalPage
Understand camera configuration and stream URLsCamera Configuration
Learn about recording, clip and snapshot storageMedia Storage
See the streaming and recording flows in detailStreaming Flows
Understand the normalized device model that feeds camerasDevice Normalization
See how applications consume this capabilityApplications Overview