42 lines
4.7 KiB
Markdown
42 lines
4.7 KiB
Markdown
# 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|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.
|