Camera Configuration
What This Page Covers
This page explains how IP cameras are modeled within the Zipato platform, how their connection details and stream URLs are configured, and how cameras are registered — both via device discovery and static IP. It also covers the channel creation process that links a camera to the Cloud NVR for recording and playback.
Camera Endpoint Model
A camera exists in the platform as an endpoint with the device class com.zipato.network.ip.IP. All configuration — credentials, stream URLs, snapshot paths — is stored in the endpoint's data map. This means any IP camera that speaks RTSP, RTMP, HTTP or MJPEG can be registered regardless of manufacturer.
IP Device
└── Camera Endpoint (class: com.zipato.network.ip.IP)
├── Connection: username, password, IP, port
├── Stream URLs: high, mid, low, MJPEG
├── Snapshot URL
├── Recording URL
├── Admin URL
└── Configuration checksum
Configuration Fields
The camera endpoint stores its configuration in a flat key-value data map. URL fields support template variables that are resolved at request time.
Connection Fields
| Field | Type | Purpose |
|---|---|---|
username | String | Camera authentication username |
password | String | Camera authentication password |
staticIp | String | Manually configured IP address |
discoveredIp | String | IP address found through auto-discovery |
port | Integer | Camera connection port |
adminUrl | String | Camera's web administration interface URL |
Stream URL Fields
| Field | Purpose |
|---|---|
hiQualityStream | High quality stream URL template |
midQualityStream | Medium quality stream URL template |
lowQualityStream | Low quality stream URL template |
mjpegUrl | Motion JPEG stream URL template |
snapshot | Snapshot capture URL template |
recording | Recording stream URL template |
Metadata Fields
| Field | Type | Purpose |
|---|---|---|
cameraConfig | JSON | Full configuration object from the camera |
configChecksum | String | SHA-1 hash of the current configuration |
videoThumbDelay | Integer | Frame offset in seconds for thumbnail extraction |
discovered | String | Discovery marker (value: "camera") |
URL Templates
Stream and snapshot URLs use template variables that the platform resolves at request time using the camera's stored connection details:
| Variable | Resolved To |
|---|---|
${cameraIp} | The camera's IP address (static or discovered) |
${cameraPort} | The camera's connection port |
${username} | The camera's authentication username |
${password} | The camera's authentication password |
Example template:
rtsp://${username}:${password}@${cameraIp}:${cameraPort}/cam/realmonitor?channel=1&subtype=0
Resolved URL:
rtsp://admin:pass123@192.168.1.50:554/cam/realmonitor?channel=1&subtype=0
This indirection allows stream URLs to remain valid when credentials or network addresses change — only the connection fields need to be updated.
Supported Stream Protocols
| Protocol | Typical Use |
|---|---|
| RTSP | Primary protocol for live and recorded streams |
| RTMP | Real-time streaming to cloud workers and YouTube Live |
| HTTP/HTTPS | Web-accessible streams and snapshot capture |
| MJPEG | Browser-compatible motion JPEG for low-latency preview |
The protocol is determined by the URL scheme in the stream template. A single camera can expose different protocols across its quality levels.
Adding a Camera
There are two methods for adding a camera to the platform:
On a Discovered Device
When a hub discovers an IP device on the local network, a camera endpoint can be created on that device:
- The hub discovers an IP device and reports it to the platform.
- The user selects the device and requests camera creation.
- The platform creates a camera endpoint on the device, using the device's discovered IP and port.
- The user provides a camera configuration (credentials, stream URLs).
- The configuration is applied to the endpoint's data map.
Static IP Camera
For cameras that are not auto-discovered (e.g. cameras on a different subnet or behind a router), a static camera can be created by specifying the IP address directly:
- The user provides an IP address, port and camera configuration.
- The platform creates a standalone camera endpoint with the
staticIpfield set. - Stream URLs are resolved using the provided static IP.
Applying Configuration
A camera configuration is a JSON object that maps directly to the endpoint's data fields. When a configuration is applied:
- The new configuration fields are written to the endpoint's data map.
- A SHA-1 checksum of the configuration is computed and stored in
configChecksum. - If the checksum differs from the previous value, the platform knows the camera's settings have changed.
The configure action can be triggered to push configuration to the physical camera device (for cameras that support remote provisioning).
Channel Creation
A channel links a camera to a Cloud NVR instance, enabling cloud recording, clip creation and snapshot storage. Without a channel, the camera can only be accessed for live viewing via its direct stream URLs.
Channel Providers
The platform supports multiple channel providers — the backend service that manages cloud video storage:
| Provider | Description |
|---|---|
| VMS | Zipato's own Cloud VMS with NVR workers and S3 storage |
The default provider is configured at the platform level. A camera's provider can be switched after channel creation.
Channel Creation Flow
- The user requests channel creation for a camera, optionally specifying a provider.
- The platform calls the provider's API to create a channel.
- The provider returns a channel ID and access credentials.
- The channel is associated with the camera endpoint.
- The camera can now be streamed to the Cloud NVR for recording.
Once a channel exists, the camera can obtain streaming tokens and playback tokens for cloud operations.
Stream Tokens
After channel creation, the camera uses token-based authorization for cloud streaming and playback:
| Token | Purpose |
|---|---|
| Streaming token | Authorizes pushing a live stream to the NVR Worker |
| Playback token | Authorizes retrieving recordings and clips from cloud storage |
A streaming token encodes the NVR URL and a stream authorization session. It is passed to the Local Agent to initiate the stream push. A playback token authorizes the client to access stored media for that channel.
PTZ Configuration
For cameras with Pan-Tilt-Zoom capability, PTZ commands are dispatched as control events through the device model:
| Action | Parameters | Description |
|---|---|---|
up | pan, tilt | Tilt camera upward |
down | pan, tilt | Tilt camera downward |
left | pan, tilt | Pan camera left |
right | pan, tilt | Pan camera right |
zoom | zoom | Optical zoom in/out |
home | — | Return to home position |
stop | — | Stop current movement |
preset/{n} | — | Move to saved preset position |
patrol/{n} | — | Start a PTZ patrol route |
PTZ does not require additional configuration on the camera endpoint — it uses the platform's device control event system. The camera hardware must support ONVIF PTZ or the manufacturer's proprietary PTZ protocol.
IP Resolution
When resolving a camera's IP address for stream URL construction, the platform follows this precedence:
- Static IP — if
staticIpis set, it is always used. - Discovered IP — if
discoveredIpis available from device discovery. - Device IP — falls back to the parent device's known IP address.
This allows cameras to be accessed reliably whether they were manually configured or auto-discovered.
Where to Continue
| Goal | Page |
|---|---|
| See the streaming and recording flows in detail | Streaming Flows |
| Learn about recording, clip and snapshot storage | Media Storage |
| Understand the full video management model | Overview |
| Learn how physical devices are normalized | Device Normalization |