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)
| Component | Purpose |
|---|---|
| Cloud VMS | Unified REST API for managing NVRs, channels and media |
| Cloud NVR | Manages recording metadata, presigns S3 URLs, coordinates clip creation |
| NVR Worker | Processes live streams, segments recordings, uploads to S3 |
| Local Agent | Runs on edge hardware, proxies camera streams to NVR Worker via WebSocket |
| AWS S3 | Stores 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:
- Client creates a channel on the Cloud NVR via the VMS API
- Client requests a stream token (encodes NVR URL and stream authorization session)
- Client sends the token to the Local Agent along with the camera address
- Local Agent initiates a WebSocket connection with the NVR Worker
- NVR Worker authorizes the stream session with the Cloud NVR
- Local Agent pulls the stream from the camera and pushes it to the NVR Worker
- 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:
- NVR Worker receives the live stream from the Local Agent
- Every 30 seconds, the worker uploads a recording segment to S3
- S3 notifies an SQS queue of each upload
- NVR Worker notifies the Cloud NVR of the upload
- 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:
- User initiates clip creation with a start and end time
- Cloud NVR creates a clip entry with status
in_progress - NVR queries recordings that fall within the time range
- As recordings upload (if the range includes the present), they are appended to the clip
- 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:
| Path | How It Works |
|---|---|
| Client-uploaded | Cloud NVR creates a snapshot entry, presigns an S3 PUT URL, and the client uploads the image directly to S3 |
| Agent-captured | Local 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:
| Action | Description |
|---|---|
up, down, left, right | Directional movement |
zoom | Optical zoom control |
home | Return to home position |
stop | Stop 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:
| Level | Typical Use |
|---|---|
| High Quality | Full recording, detailed viewing |
| Mid Quality | Balanced bandwidth and quality |
| Low Quality | Thumbnail preview, low-bandwidth clients |
| MJPEG | Browser-compatible motion JPEG stream |
Quality selection is made by the client at stream request time.
Inter-Service Communication
| Path | Protocol |
|---|---|
| Mobile App / Hubs ↔ Cloud VMS | HTTP REST API |
| Cloud VMS ↔ Cloud NVR | Artemis Broker with mTLS |
| NVR Worker ↔ Cloud NVR | HTTP (stream authorization, upload notifications) |
| NVR Worker ↔ AWS S3 | rclone |
| Cloud NVR ↔ AWS SQS | Recording upload notifications |
| Local Agent ↔ NVR Worker | WebSocket (stream data) |
Where to Continue
| Goal | Page |
|---|---|
| Understand camera configuration and stream URLs | Camera Configuration |
| Learn about recording, clip and snapshot storage | Media Storage |
| See the streaming and recording flows in detail | Streaming Flows |
| Understand the normalized device model that feeds cameras | Device Normalization |
| See how applications consume this capability | Applications Overview |