Universal CCTV Viewer
Software Description
## Project Overview
**Universal CCTV Viewer** is a Windows-based CCTV monitoring and management application designed to discover, connect, view, and manage security cameras, DVRs (Digital Video Recorders), and NVRs (Network Video Recorders) from different manufacturers through a single centralized interface.
The application should support both **local network (LAN) connections** and **remote connections over the internet using a public (global) IP address**, allowing users to monitor multiple CCTV systems from one application without installing separate software for each manufacturer.
The application will be developed using **C++ and Visual Studio 2022**, with a modern, professional graphical interface.
## 1. Automatic Local CCTV Discovery
The application should automatically scan the local network to discover available CCTV devices, including:
- IP security cameras
- Network Video Recorders (NVRs)
- Digital Video Recorders (DVRs)
- ONVIF-compatible devices
- Supported CCTV systems from manufacturers such as UNV (Uniview), Hikvision, Dahua, Axis, and others
The discovery process should use ONVIF WS-Discovery and other supported discovery methods.
For every detected device, display its IP address, manufacturer, model, device type, connection status, and available services.
Users should be able to select a discovered device, enter its username and password, authenticate, and automatically retrieve its available camera channels.
## 2. Remote CCTV Connection Using Public IP Address
Users should be able to manually add a CCTV system located outside the local network.
The application should provide an **Add Remote CCTV System** option with the following fields:
- System name
- Public (global) IP address or DDNS hostname
- Connection port
- Device manufacturer or automatic detection
- Device type (DVR, NVR, or IP Camera)
- Username
- Password
- Connection protocol
After entering the information, the application should attempt to connect to the remote device using supported protocols, authenticate the user, and retrieve the camera channels.
Remote connectivity should support secure VPN connections, HTTPS where available, ONVIF, RTSP, and manufacturer-specific SDKs.
The application should recognize that a public IP address alone does not guarantee connectivity. The remote device must be reachable through an appropriately configured network, VPN, or secure gateway.
## 3. Universal Manufacturer Compatibility
The application should be designed to work with multiple CCTV manufacturers through a modular integration system.
Supported integration methods should include:
- **ONVIF:** Device discovery, authentication, camera information, streaming profiles, and supported playback services.
- **RTSP:** Live video streaming from compatible cameras and recorders.
- **Manufacturer SDKs:** Advanced features such as channel enumeration, recording search, playback, and device management.
- **HTTP/HTTPS APIs:** Device information and management where supported.
Manufacturer-specific integrations should be implemented as separate plugins or adapters, allowing additional CCTV brands to be supported without redesigning the application.
The software should automatically identify compatible protocols when possible and allow manual configuration when necessary.
## 4. Live Camera Viewing
After successfully connecting to a CCTV system, the application should retrieve and display all accessible camera channels.
The live monitoring interface should support:
- Single-camera viewing
- 2×2 grid (4 cameras)
- 3×3 grid (9 cameras)
- 4×4 grid (16 cameras)
- Custom multi-camera layouts
- Full-screen camera viewing
- Switching between main stream and substream
- Camera names and connection status
- Snapshot capture
- Local video recording
- PTZ (Pan, Tilt, Zoom) controls for supported cameras
Users should be able to view cameras from multiple DVRs, NVRs, and standalone IP cameras simultaneously in one monitoring screen.
## 5. Recording Search and Playback
The application should support searching and playing recorded footage stored on compatible DVRs, NVRs, or cameras.
Playback features should include:
- Selecting a camera channel
- Searching recordings by date and time
- Timeline-based playback
- Play, pause, stop, and seek controls
- Playback speed adjustment where supported
- Downloading authorized video recordings
- Exporting video clips
- Capturing snapshots from recorded footage
Recording and playback capabilities will depend on the manufacturer, device model, supported protocol, and user permissions.
## 6. CCTV Device Management
The application should provide a centralized device management panel where users can:
- Add and remove CCTV systems
- Edit IP addresses, ports, and connection settings
- Save device profiles
- Organize systems by location
- Rename cameras
- Group cameras from different systems
- Test device connectivity
- Reconnect automatically after temporary network interruptions
- View device online/offline status
All saved credentials must be securely encrypted using Windows-supported credential protection mechanisms.
## 7. User Interface
The application should have a modern, professional Windows desktop interface.
The main window should contain:
**Left panel – Device Explorer**
Display all saved CCTV systems organized by location, device, and camera channel.
**Center panel – Live Monitoring**
Display camera streams using configurable multi-camera grids.
**Right panel – Camera Information**
Show selected camera details, connection status, stream information, and supported controls.
**Bottom panel – Playback and Controls**
Provide recording search, playback timeline, snapshots, recording controls, and system messages.
The application should also include a settings page for network discovery, remote connections, manufacturers, video performance, and credential management.
## 8. Technical Requirements
**Development Environment:** Visual Studio 2022
**Programming Language:** C++17 or C++20
**Operating System:** Windows 10 and Windows 11, 64-bit
**Recommended Technologies:**
- Qt 6 for the graphical user interface
- FFmpeg for video decoding and streaming
- ONVIF services for compatible device discovery and management
- RTSP/RTP for video transport
- Manufacturer SDKs for advanced device functionality
- SQLite for locally saved device configurations
- Windows DPAPI or Credential Manager for protecting credentials
- Multithreading and asynchronous networking for simultaneous camera streams
The software should use a modular architecture separating device discovery, authentication, connection management, video streaming, playback, and the user interface.
## 9. Security and Reliability
The application should prioritize secure access to CCTV systems.
Security requirements include encrypted credential storage, secure communication where supported, proper authentication, and access only to devices the user is authorized to manage.
For remote connections, VPN-based access should be preferred over exposing DVR/NVR services directly to the public internet.
The application should handle failed connections, incorrect credentials, unavailable channels, and network interruptions gracefully without freezing or crashing.
## 10. Final Project Goal
The final goal is to create a **universal, centralized CCTV viewer** that allows users to manage multiple security camera systems from different manufacturers using one Windows application.
The user should be able to:
1. Open the application and automatically discover compatible CCTV devices on the local network.
2. Select a device, enter valid credentials, and view its available cameras.
3. Add a remote DVR, NVR, or IP camera using a public IP address or hostname, port, username, and password.
4. View local and remote cameras simultaneously.
5. Search and play recorded footage from supported devices.
6. Save and organize multiple CCTV systems for future access.
The application should be expandable, allowing new manufacturers, protocols, and advanced CCTV features to be added in future versions.
**Important:** Universal compatibility is the design objective, not a guarantee that every proprietary CCTV system will work. Device discovery, live viewing, and playback must be implemented according to each device's supported interfaces and permissions.
test
Oct 9, 2026