# SCTAK South Carolina public camera inventory

Collected September 28, 2026. This is data preparation for AE/SCTAK, not a deployed member service. Open `camera-catalog.html` through the local website for a searchable directory.

Playback follow-up: see [PLAYBACK-REPORT.md](PLAYBACK-REPORT.md). Full direct-media decoding and retries found 764 playable SCDOT video streams, 96 decodable primary images, and 28 failed-video snapshot fallbacks. Seven Palmetto Dunes videos also played in-browser. Per-camera results are now attached to the catalog; 77 page-only records remain unverified.

## Snapshot

974 provider camera/viewing-location records; 815 have provider-supplied coordinates; 889 have a direct image or video URL. Nine WebCOOS entries are archived and hidden by default in the directory. These counts are not counts of verified-live, unique physical cameras: some networks overlap, and some resort pages contain multiple views.

| Provider | Records | Access collected |
|---|---:|---|
| SCDOT 511SC | 792 | Coordinates, HLS playlists, still images, RTSP |
| USGS NIMS | 23 | Coordinates, periodic images, timestamps, timelapse |
| BeaufortCountyCams | 80 | 74 traffic image URLs and six external viewing pages |
| WebCOOS | 17 | Individual pages and provider status; nine archived |
| Myrtle Beach tourism | 18 | Resort, pier and beach viewing pages |
| Palmetto Dunes | 7 | Named resort camera views |
| WYFF / WIS | 10 | Weather camera viewing pages |
| SC State Parks | 10 | Named park views |
| SCETV / WeatherSTEM | 9 | Regional weather camera locations |
| Sea Pines | 5 | Named resort views |
| Lake Murray | 3 | Two osprey cameras and weather view |

## Files and refresh

- `catalog.json`: normalized camera records and totals.
- `catalog.geojson`: same records, longitude/latitude points where known; null geometry elsewhere. Map clients must skip null geometry.
- `curated*.json`: manually reviewed directories. Recheck these pages periodically; rebuild does not scrape them.
- `raw/sc511.geojson`, `raw/usgs-cameras.json`, `raw/beaufort.html`: downloaded source snapshots. Raw USGS inventory is national; output is filtered to visible SC entries.
- `media-checks.json`: timestamped HTTP checks of 23 USGS images, image/HLS for one camera from each of nine SCDOT jurisdictions, and three Beaufort images. All 44 returned recognized media on this run. No video segments were played and no continuous monitoring is running.

From the website directory:

```powershell
python tools/build_camera_catalog.py
python tools/build_camera_catalog.py --refresh
python tools/check_camera_media.py
```

The first command rebuilds offline. `--refresh` downloads three source inventories, validates JSON and rebuilds. It requires network access. Keep the previous catalog if refresh fails. Source snapshot file modification times are used as retrieval timestamps; preserve them when copying snapshots. Run the checks separately after refreshing.

## Integration rules

Use stable `id` values to upsert records. Keep provider attribution and `source_url`. Use `viewer_url` as the fallback. Public visibility does not establish rebroadcast or commercial embedding permission; `embedding_permission` remains unverified unless separately reviewed. No provider credentials are included or required to rebuild from these public sources.

Do not treat SCDOT's `active` flag as playback confirmation. Recompute image age from `last_media_at` at display time; a successful image request may return an old frame. USGS has daylight-only cameras and five images older than 24 hours in this snapshot. Timelapse is historical video. WebCOOS labels and displayed dates are preserved separately because its labels do not always match simple elapsed-time thresholds.

Beaufort entries are deduplicated by image/viewer URL within that source. Cross-provider physical-camera deduplication remains unresolved; Palmetto Dunes, Sea Pines, piers and marinas can appear in multiple directories. Unknown coordinates remain null instead of guessed town centers. Page-only records may need a user click and cannot yet be rendered as embedded live video.

## Source URLs

- https://sc.cdn.iteris-atis.com/geojson/icons/metadata/icons.cameras.geojson (published by the 511SC website; not a documented stable developer API)
- https://www.511sc.org/
- https://api.waterdata.usgs.gov/nims/v0/cameras
- https://api.waterdata.usgs.gov/docs/nims/
- https://www.beaufortcountycams.com/ (government affiliation not verified)
- https://webcoos.org/cameras/
- https://webcoos.org/usage-guidelines
- https://www.visitmyrtlebeach.com/web-cams
- https://www.palmettodunes.com/live-webcams
- https://www.wyff4.com/article/skycams/7024478
- https://www.wistv.com/weather/cams/
- https://southcarolinaparks.com/webcams
- https://www.scetv.org/weather
- https://www.seapines.com/livestreams
- https://www.lakemurrayosprey.com/
- https://www.lakemurrayweather.com/

## Remaining coverage

This is a broad initial collection, not proof that every public camera in SC has been found. Remaining discovery includes municipal park/riverwalk cameras, public airport and rail cameras, additional owner-published wildlife feeds, other TV networks, and additional WeatherSTEM stations. Resolve exact page-only camera URLs, coordinates and cross-network duplicates before claiming a unique-camera count. The frontend directory is local; deployment and AE/member ingestion are not completed by creating these files.
