This is the community-maintained camera database for the SeeTheWorld Roku channel — a global public webcam browser for your TV.
cameras.json — the full camera list. The Roku channel fetches this file at startup. Updates here appear in the channel without requiring a new app release.
Open an issue with the camera details. If the stream works on Roku, it gets merged.
What makes a camera eligible:
- Publicly accessible without login or API key
- Stream URL is stable (not a rotating token or session ID)
- Legal — the stream operator makes it publicly available
- Suitable for all audiences
Each entry in cameras.json follows this structure:
{
"id": "unique_snake_case_id",
"name": "Display Name",
"city": "City, State/Country",
"location": "Descriptive location string",
"region": "na",
"tags": ["beach", "nature", "live"],
"description": "One or two sentences shown in the channel.",
"preview_url": "https://example.com/snapshot.jpg",
"stream_url": "https://example.com/stream/playlist.m3u8",
"stream_type": "hls",
"lat": "37.123°N",
"lon": "122.456°W",
"hue": 200,
"online": true
}Field notes:
stream_type:"hls"for live video streams,"jpeg"for snapshot camerasregion:na,ca,sa,eu,me,af,as,oc, orotherhue: 0–360 color tint for the UI card (optional, defaults to 200)preview_url: static JPEG used as thumbnail in browse list; leave""if none availableonline: setfalseto hide a camera from the channel without deleting it
Use the broken camera issue template.
The Roku channel plays streams directly in its native video player. This means:
- HLS (m3u8) streams: must be publicly accessible without custom HTTP headers, rotating tokens, or authentication. Wowza/Streamlock
playlist.m3u8URLs work well. - JPEG snapshot cameras: any publicly accessible JPEG URL that updates server-side. The channel refreshes every 3 seconds.
EarthCam, SkylineWebcams, and similar platforms dynamically inject stream URLs via JavaScript and often require custom headers — these generally do not work on Roku without a proxy resolver.