A tactical geospatial surveillance console mapping over 22,000+ live public CCTV streams, webcams, traffic cameras, and harbor feeds across the globe on Android, Linux, Windows, and macOS.
CCTV is an open reconnaissance console that aggregates, verifies, and plots thousands of publicly accessible live video feeds across the globe onto an interactive geospatial map. From major metropolitan traffic networks and international harbors to research stations, coastlines, and public squares, CCTV gives you real-time visual situational awareness from anywhere on Earth.
- π Massive Global Feed Database:
- Over 22,000+ active live video endpoints mapped with precise GPS coordinates.
- Global coverage across 150+ countries, including traffic cams, coastal cams, airport runways, and weather stations.
- πΊοΈ High-Performance Geospatial Map:
- Powered by Leaflet and optimized MarkerCluster algorithms to render tens of thousands of pins smoothly at 60 FPS without UI hitching.
- Interactive clustering, custom tactical pin icons, and automatic cluster expansion on zoom.
- πΊ Universal Live Stream Player:
- Plays direct HLS (
.m3u8) video streams with auto-recovery and fallback support. - Native embedding support for YouTube Live, EarthCam, HDOnTap, Ozolio, WetMet, and direct webcam streams.
- Theater mode with full-screen playback and camera metadata overlay.
- Plays direct HLS (
- π Instant Tactical Search:
- Search by city, country, landmark, provider, or coordinates.
- Quick-focus shortcut (
/) for rapid keyboard navigation.
- π Data Curation & Pipeline Tooling (
scripts/):- Automated Python utilities to scrape, deduplicate, validate HTTP stream status, and curate new camera networks.
- π± 4-Platform Native Support:
- Android: Native Kotlin application with hardware-accelerated WebView and mobile UI scaling.
- Linux: Standalone desktop app for Linux (Fedora KDE Plasma, Ubuntu, Arch).
- Windows: Native Windows 10/11 x64 application with system tray minimization.
- macOS: Universal desktop client with native builds for both Apple Silicon (M-series) and Intel processors.
CCTV/
βββ app/ # Android Native Client (Kotlin, Jetpack, Hardware WebView)
β βββ src/main/java/ # Android bridge & activity lifecycle
β βββ src/main/assets/ # Bundled core web assets & database
βββ Linux app/ # Linux Desktop Client (Electron)
β βββ main.js # Electron lifecycle & window management
β βββ preload.js # IPC communication bridge
β βββ src/ # Packaged application sources & map engine
βββ Windows app/ # Windows Desktop Client (Electron)
β βββ main.js # Electron lifecycle & Windows tray integration
β βββ preload.js # IPC communication bridge
βββ Mac app/ # macOS Desktop Client (Electron)
β βββ main.js # macOS dock & window handlers
β βββ preload.js # IPC communication bridge
βββ scripts/ # Data Curation & Verification Pipelines
β βββ curate_all_sources.py # Multi-source stream aggregator
β βββ curate_cctv_cams.py # Primary camera database manager
β βββ update_and_prioritize_feeds.py # Feed health & priority ranker
β βββ validate_and_filter_feeds.py # Dead stream validation scanner
βββ cctv_cameras.json # Master database of 22,000+ CCTV camera endpoints
Requirements: Android Studio or Android SDK (API 34+), Java 17+.
# Debug build:
./gradlew assembleDebug
# Release build:
./gradlew assembleRelease
# Output APK: app/build/outputs/apk/release/app-release.apkRequirements: Node.js 18+ and npm.
cd "Linux app"
# Install dependencies:
npm install
# Run in development mode:
npm start
# Build packaged distributable:
npm run dist:linuxRequirements: Node.js 18+ and npm.
cd "Windows app"
# Install dependencies:
npm install
# Run in development mode:
npm start
# Build packaged distributable:
npm run dist:winRequirements: macOS 12+, Node.js 18+, and npm.
cd "Mac app"
# Install dependencies:
npm install
# Run in development mode:
npm start
# Build packaged distributable:
npm run dist:macRequirements: Python 3.10+.
cd scripts
# Validate active stream endpoints:
python3 validate_and_filter_feeds.py
# Re-curate database from all sources:
python3 curate_all_sources.pyPackaged installers and portable archives are available under Releases:
- Android:
CCTV.apk(Universal APK) - Linux (x64):
CCTV-Linux-x64.zip - Windows (x64):
CCTV-Windows-x64.zip - macOS (Apple Silicon):
CCTV-Mac-AppleSilicon-arm64.zip - macOS (Intel):
CCTV-Mac-Intel-x64.zip
Follow the simple visual instructions below to install and launch CCTV through your operating system's graphical interface:
- Download
CCTV.apkfrom Releases directly on your device (or download to PC and transfer via USB). - Open your device's Files or Downloads app and tap
CCTV.apk. - If Android displays "For your security, your phone is not allowed to install unknown apps from this source":
- Tap Settings in the prompt.
- Toggle "Allow from this source" ON.
- Tap the back arrow.
- Tap Install and wait for the installer to finish.
- Tap Open to launch CCTV directly, or tap the CCTV icon in your app drawer.
- Download
CCTV-Windows-x64.zipfrom Releases. - Locate the downloaded file in Windows File Explorer (in your
Downloadsfolder). - Right-click
CCTV-Windows-x64.zip-> select Extract All... -> click Extract. - Open the extracted
CCTV-win32-x64folder. - Double-click
CCTV.exeto launch the console. - (First Launch / SmartScreen): If Windows SmartScreen displays "Windows protected your PC":
- Click "More info".
- Click "Run anyway".
- (Optional Desktop Shortcut): Right-click
CCTV.exe-> Show more options -> Send to -> Desktop (create shortcut).
- Download the correct archive from Releases:
CCTV-Mac-AppleSilicon-arm64.zip: For Apple Silicon (M1, M2, M3, M4) Macs.CCTV-Mac-Intel-x64.zip: For Intel-based Macs.
- In Finder, double-click the
.zipfile to extract it. - Open the extracted folder and drag
CCTV.appinto your Applications folder (/Applications). - Launch
CCTVfrom your Applications folder, Launchpad, or Spotlight (Cmd + Space). - (First Launch / Gatekeeper Approval):
- If macOS displays "CCTV cannot be opened because the developer cannot be verified":
- Option 1: Right-click (or Control-click)
CCTV.appin Finder -> choose Open -> click Open in the dialog. - Option 2: Go to System Settings -> Privacy & Security, scroll down to the Security section, and click "Open Anyway".
- Option 1: Right-click (or Control-click)
- If macOS displays "CCTV cannot be opened because the developer cannot be verified":
- Download
CCTV-Linux-x64.zipfrom Releases. - Open your desktop file manager (Dolphin in KDE, Nautilus / Files in GNOME) and right-click the
.zipfile -> choose Extract Here (or Extract Archive). - Open the extracted
CCTV-linux-x64folder. - Enable executable permission:
- Right-click the
CCTVbinary -> select Properties. - Navigate to the Permissions tab.
- Check the box "Is executable" (KDE) or "Allow executing file as program" (GNOME).
- Click OK.
- Right-click the
- Double-click
CCTVto launch! - (Optional System Menu Integration): To integrate into your desktop application menu (Kickoff / Application Grid), open a terminal in
Linux appand run./install.shto install desktop icons and.desktoplaunchers automatically.
All video feeds indexed in this repository are publicly accessible streams openly broadcasted over the internet by municipal transport departments, public harbor authorities, ski resorts, weather stations, and research centers. No private or password-protected streams are accessed or indexed.
Distributed under the MIT License. See LICENSE for details.
Maintained with ποΈ by Prime3vil