research/jabodetabek-cctv-live-data/index.md

3.2 KiB
Raw Blame History

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
jabodetabek
cctv
video-streaming
hls
reverse-engineering
transit-data
jakarta-public-transport-data
balitower
bpjt
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