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

4.7 KiB
Raw Permalink Blame History

Sources

★ = directly verified during this investigation (Oct 13, 2026). Unmarked items are leads not yet re-verified.

Government portals (catalog sources)

  • ★ https://jakcctv.jakarta.go.id/publik — DKI Jakarta public CCTV portal. The page is a server-rendered paginator; the underlying data endpoint is https://jakcctv.jakarta.go.id/publik/data?q=&page=N, returning JSON {cards, pagination, count, total}. Each card embeds an iframe to a Bali Tower player (embed.html). 52 cameras listed at capture.
  • ★ https://bpjt.pu.go.id/cctv/ — BPJT (Kementerian PU) toll-road page. Renders an inline JSON array of ~1,530 camera records directly in the page HTML: per-cam streamhls (HLS URL), bujt (operator tag), nama_km, lat, lon, status, updated_at. This is the single source for the toll layer.
  • ★ https://bekasikota.go.id/cctv — Kota Bekasi page. Consumes https://eofficev2.bekasikota.go.id/backupcctv/m3/list.json (24 entries: path, name, pic). Thumbnails hosted on pemkotbekasi.github.io/cctv_pic/ (fronted by i0.wp.com).
  • ★ https://bsw.kotabogor.go.id/cctv — Kota Bogor "Bogor Single Window" page; per-camera detail pages at /cctv/<id>/detail (96 camera IDs observed). Detail pages embed datarhei Restreamer HLS. TCP-timeout from our network (likely geo/IP filtering); read via a reader proxy — see jabodetabek-cctv-live-data/methodology.

Stream servers by operator (what actually serves video)

  • ★ DKI Jakarta — dki-jkt.balitower.co.id:7028 — Bali Tower (PT Bali Towerindo Sentra) custom stack, server: Streamer 26.04.1. fMP4 HLS (index.fmp4.m3u8, multi-track under tracks-v1/), ~7.5 s segments, separate embed.html "Live Player" page per camera. Camera paths encode the agency, e.g. 501844_JKP_DISHUB_JL.-MH.-THAMRIN-C01_CCTV-01.
  • ★ Hutama Karya (HK) — pub2.hk-opt.com (+ pub.hk-opt.com) — Ant Media Server (/LiveApp/streams/<id>.m3u8), behind Cloudflare; 2.07 s segments. The operator's own CCTV portal is extern.hk-opt.com ("CCTV External — Divisi OPT — PT Hutama Karya (Persero)"), plus traffic.hk-opt.com ("SMARTCCTV").
  • ★ Trans Bumi Serbaraja — info.serbaraja-tollroad.co.id:20443 — Ant Media Server; ~2 s segments.
  • ★ Cimanggis–Cibitung Tollways (CCT) — streaming-cct.co.id — Ant Media Server.
  • ★ Cibitung–Tanjung Priok (CTP) — cctv.ctptollways.com:2254 — MediaMTX (server: mediamtx); master playlist → stream.m3u8.
  • ★ Jakarta Tollroad Development (JTD) — camera.jtd.co.id — nginx + Express packager (X-Powered-By: Express); camera/share/tios/<a>/<b>/index.m3u8.
  • ★ Marga Mandalasakti (MMS) — cctv.mms-corp.id — nginx HLS (<cam>/stream.m3u8, _seg<N>.ts).
  • ★ Kresna Kusuma Dyandra Marga (KKDM) — cctv.kkdm.co.id — nginx + Express (api/cctv/<a>/<b>/index.m3u8, seg_<N>.ts).
  • ★ Jakarta Lingkar Baratsatu (JLB) — cctvjorrw1.com — nginx HLS (e.g. KM/7+950B.m3u8), ~5 s segments.
  • ★ CMNP — cctv.citramarga.com — Apache HLS (hls/cam3-…/stream.m3u8), ~1 s segments.
  • ★ Pemkot Bekasi — eofficev2.bekasikota.go.id — nginx serving backupcctv/m3/… (city e-office host).
  • ★ Pemkot Bogor — restreamer{1,2,3,4,5,6}.kotabogor.go.id — datarhei Restreamer (memfs/<uuid>.m3u8; sub-playlists append a ?session= token).

Not selected by the audited app but present on BPJT's page: Jasa Marga (jmlive.jasamarga.com, ~605 cams — manifest returns empty 200 from outside), Waskita (cctv.waskitabumiwira.com), BSD Toll (stream.bsdtol.com — datarhei, 502 at capture), PPTR (pptrlive.co.id — datarhei), and ~25 other hosts.

Site under study

  • ★ https://transit.oyenza.com/cctv — "CCTV Jakarta Live" third-party map. Key surfaces:
    • static catalog: /assets/asset-cctv-<hash>.json (fetched at runtime by cctv-<hash>.js)
    • playback: hls.js (lazy-loaded chunk) → directly loads each view's owner-hosted URL
    • map: MapLibre with self-hosted tiles (/tiles)
    • analytics: /_e (POST events)
    • robots.txt: Disallow: /
  • Related domains: transit.vantis.sh (alias), vantis.sh — same developer, per the TransJakarta audit.

Context (third-party / first-party-adjacent)

  • https://smartcity.jakarta.go.id/en/blog/pantau-lalu-lintas-dan-keamanan-dengan-cctv-jakarta/ — Jakarta Smart City blog listing Balitower embed.html links for city cameras (first-party-adjacent evidence that Balitower hosts DKI public camera streams).
  • https://iameberhard.com/jakarta-cams and its blog post — independent dashboard over Balitower / LewatMana / ATCS feeds; names further aggregators (LewatMana, atcs-jakarta.com, atcs-bptj.dephub.go.id). Third-party; not re-verified here.