3.2 KiB
3.2 KiB
| title | description | status | category | tags | draft | created | updated | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Jabodetabek CCTV live data — four public sources, hotlinked HLS | How the Jabodetabek public CCTV layer works: DKI Jakarta, BPJT toll-road, Bekasi, and Bogor camera catalogs, and the owner-hosted HLS streams that apps hotlink. Audited Oct 2026 via transit.oyenza.com/cctv. | concluded | technical |
|
true | 2026-10-13 | 2026-10-13 |
Jabodetabek CCTV live data — verified upstreams
What this is: a verified map of the public CCTV layer across Jabodetabek — which government portals publish camera catalogs, what stream servers actually serve the video, and how third-party apps assemble and play them.
Origin: reverse-engineering the /cctv page of transit.oyenza.com (the same tracker from transjakarta-live-data/index) to determine where its camera list and live video come from.
TL;DR
- Four upstreams: DKI Jakarta (
jakcctv.jakarta.go.id), BPJT toll roads (bpjt.pu.go.id/cctv), Kota Bekasi, Kota Bogor (BSW). All four cross-matched to oyenza's list with ~100% URL/ID agreement — see jabodetabek-cctv-live-data/analysis. - No aggregator API: oyenza ships a static catalog (214 cams / 310 views) inside its own bundle and hotlinks each camera's HLS URL directly from the owner's server (hls.js; CORS
*; no proxy, no tokens at capture). - Toll layer = one page scrape: BPJT's page embeds an inline JSON array of ~1,530 cameras (stream URL + operator + coordinates + status); the app's 154 toll cams are a curated, working Jabodetabek subset (all 190 of its toll view URLs appear verbatim).
- Stream stacks fingerprinted: Ant Media Server (
/LiveApp/streams/), MediaMTX, datarhei Restreamer (memfs/), Bali Tower custom fMP4 HLS, and plain nginx/Apache HLS.
Key verified numbers (Oct 13, 2026)
- oyenza catalog: 214 cameras / 310 views — DKI 14/46, toll 154/190, Bekasi 23/23, Bogor 23/51.
- Cross-match: DKI 46/46 views, toll 190/190 views, Bekasi 23/23 names, Bogor 51/51 detail IDs (the Bogor Alun-Alun detail page embeds the exact
restreamer2.kotabogor.go.id/memfs/…URL oyenza lists). - Stream hosts probed live: 12/12 answered with valid HLS playlists (2–8 s segments).
- Catalog
checkedAt:2026-10-12T22:07:39Z(page footer: "Daftar diperiksa 13 Oktober 2026").
Using it
- Per-source endpoints and stream hosts: jabodetabek-cctv-live-data/sources
- Evidence archive:
workspace/cctv-jabodetabek-captures/(catalog JSON, portal dumps, probe logs)
Files
- jabodetabek-cctv-live-data/sources — portals, stream hosts per operator, context
- jabodetabek-cctv-live-data/analysis — the chain, overlap evidence, stack fingerprints
- jabodetabek-cctv-live-data/methodology — how it was verified (repeatable)
- jabodetabek-cctv-live-data/next-steps — risks, gaps, ideas
Related Research
- jakarta-public-transport-data/index — umbrella topic
- transjakarta-live-data/index — same site, bus layer