docs: live video CCTV

This commit is contained in:
Daniel Slay committed 2026-09-14 20:35:12 +00:00
1 parent 2c2c287315
commit 842ebeec6c
4 files changed
+43 -2

No files matched your search

+28 -2
View File
@@ -188,7 +188,7 @@ Choose a first-run mission, or try these in order. The GIFs show Google Photorea
![Moving from a full airport overhead down to close taxiway inspection with 3D flight models](docs/media/start-here/airport-ground-traffic-google-3d.gif)
4. **Look through a public camera.** Turn on **CCTV** over Austin, London, California, or Finland. The feeds aren't webcam embeds — they project *into* the 3D city. Cycle coverage to **VIEWSHED** and every camera draws its estimated coverage volume — where it reaches, and where it goes blind.
4. **Look through a public camera.** Turn on **CCTV** over Austin, London, California, Finland, or Delaware (live video). The feeds aren't webcam embeds — they project *into* the 3D city. Cycle coverage to **VIEWSHED** and every camera draws its estimated coverage volume — where it reaches, and where it goes blind.
![Diving into an Austin intersection with a live public camera projected into the 3D scene](docs/media/03-austin-cctv.gif)
@@ -275,7 +275,7 @@ Thirteen layers and map sources. **Eleven have a keyless path.** Some offer addi
| 🛰️ **Satellites** | 838-object catalog, color-coded by class with a live legend — the **DENSE** chip drops in the whole Starlink shell | CelesTrak | 🟢 |
| 🌍 **Earthquakes** | Global seismic activity, last 24h | USGS | 🟢 |
| 🚗 **Traffic** | Simulated vehicles on OSM roads. With TomTom, live flow speeds drive the simulation and congestion colors below ~8 km; individual vehicle positions are not live observations | TomTom + OSM | 🟢 simulation · 🟡 live flow speeds |
| 📹 **CCTV Mesh** | ~3,400 public cameras projected *into* the 3D space — Austin · Texas (TxDOT) · California (Caltrans) · London (TfL) · Ontario (511) · Finland (Fintraffic) · British Columbia (DriveBC) · Estonia (Tallinn, Tarktee) · New South Wales (Live Traffic NSW). Positions are published; poses are estimated priors **you calibrate by dragging a gizmo on the camera itself** | City APIs | 🟢 |
| 📹 **CCTV Mesh** | ~3,700 public cameras projected *into* the 3D space — Austin · Texas (TxDOT) · California (Caltrans) · London (TfL) · Ontario (511) · Finland (Fintraffic) · British Columbia (DriveBC) · Estonia (Tallinn, Tarktee) · New South Wales (Live Traffic NSW) · Delaware (DelDOT, **live video**). Stills refresh in place; video feeds play continuously on the monitor plane and in the panel. Positions are published; poses are estimated priors **you calibrate by dragging a gizmo on the camera itself** | City / state DOT APIs | 🟢 |
| 📻 **Radio** | Geolocated world radio with an **analog tuner** — drag the needle across up to 750 stations and the globe flies to each broadcaster | Radio Browser / broadcasters | 🟢 |
| 🚲 **Bikeshare** | Live station availability | GBFS | 🟢 |
| 🔥 **Active Fires** | Live NASA FIRMS detections, trailing 24h | NASA FIRMS | 🟡 |
@@ -430,6 +430,32 @@ OpenSky can run fully anonymous (`OPENSKY_AUTH_MODE=anon`), or import OAuth cred
</details>
<details>
<summary>Live video cameras (HLS / RTMP)</summary>
CCTV sources with `"feedType": "hls"` play as continuous video instead of
refreshed stills. The server owns the stream: it keeps one upstream session
per active camera, serves the browser a locally generated playlist, and the
client plays it through hls.js. Two upstream strategies, chosen by URL:
- **`.m3u8` upstreams** are pulled directly in Node — no extra dependencies.
- **RTMP and other stream URLs** go through **ffmpeg** (`-c copy`, no
re-encode), which is optional: without it those cameras fall back to the
stills path and everything else is unchanged. If you self-host in Docker,
add `ffmpeg` to your image.
The DelDOT Delaware pack is the working example — every `Active` camera in
DelDOT's public catalog registers with its `rtmpt://video.deldot.gov:80/…`
stream (the same stream as `rtmp://…:1935`, tunneled over HTTP, so it works
where port 1935 is blocked). `CCTV_DELDOT_ENABLED=0` turns the pack off.
Some agencies restart their streams on a timer or run encoders whose clock
lags real time (DelDOT does both). The pipeline absorbs that automatically —
a brief hitch at a restart, and a playback-rate governor that holds the
stream a few seconds behind live so it never starves. Nothing to configure.
</details>
### 💸 What it actually costs
Honest numbers, roughly, as of mid-2026 — always check the provider pricing pages: