Select a stream from the sidebar or create a new one
Combined stream statistics across all streams you can access (last 24 hours).
Collecting GPU metrics...
Used by streams that enable Use for SceneSat. Keep per-stream custom credentials for non-SceneSat channels.
For long-lived refresh tokens, publish your Google OAuth app to In production. Tokens from apps still in Testing mode may expire quickly.
https://www.googleapis.com/auth/youtube.readonly and
https://www.googleapis.com/auth/youtube.refresh_token, paste it here, then save defaults.Targets the Audio Analyzer judges a raw video-audio stream against — "Good to go" means the source sits close to the loudness target with true peaks under the ceiling.
Tracks all Google API calls by client identifier and endpoint. Day buckets reset at midnight Pacific Time.
Click "Refresh Quota" to fetch usage counters.
Register manually prepared relay hosts here. The origin box is always available as the built-in local playback edge.
No edge relays configured.
Manual cleanup tool for viewer_stats. Refresh status first, then run a dry run before executing deletion.
Click "Refresh Status" to inspect current database retention status.
Aggregates old sample rows into weekly trend rows in viewer_stats_weekly, then removes the archived raw rows.
Click "Refresh Archive Status" to inspect weekly archive readiness.
/work/continuity-media
/work/assets/continuity.png
Loading shared assets...
Copy a direct link or iframe code for this stream player:
quality mode when supported.Real-time raw-signal analysis of a live video stream's audio branch. Streams with Audio Branch enabled publish an Icecast audio mount while live; the signal is measured as-is — no on-air processing is modelled.
Authorization: Bearer <token>. The token is derived server-side; full admins see it here after saving with Push selected./video-{key}.aac + .mp3 mounts so plain Icecast listeners (VLC, car radios) see track names. Needs the audio branch enabled and the server-side Icecast admin credential — and make sure nothing else writes ICY metadata to these mounts.%Y-%m-%d (2026-02-23), %B %Y (February 2026), %A %B %d (Sunday February 23). Timestamp is when recording starts.-test stream key without creating a full stream configuration. The test feed uses the same renditions, WebRTC and HLS/DVR delivery as the main stream, but is never recorded or restreamed.
TEST badge to this stream in the sidebar whenever its -test feed is live. Uncheck to keep test broadcasts under the radar.
udp://host:port destination on the Restream tab instead.
., _, -./live/<streamKey>. Encoders must publish to the dedicated primary/secondary ingest paths instead. The fields below show the RTMP form for convenience, but the same ingest path also works via RTSP, SRT, or WebRTC/WHIP.
/work.
/work volume.
:8554), SRT (:8890 with streamid=publish:...), or WHIP on webrtc.scenesat.com. Playback stays on /live/<streamKey>./live/<streamKey>. If Keep running is also enabled, the public output stays on the fallback media until GO LIVE. The fields below show the RTMP form, but the same ingest path also works via RTSP, SRT, or WebRTC/WHIP.
/live/<streamKey> output to the preview source. STOP LIVE returns to the fallback media for keep-running streams, or turns the public output off for normal streams.
/live/<streamKey> output is re-encoded to a safer H.264/AAC profile whenever it is fed by primary or secondary. Raw preview inputs stay untouched, so you can still inspect a problematic source honestly.
Compare live session bitrate against recent byte deltas to detect drift, stale samples, or counter resets.
Run a check to view live drift diagnostics for this stream.
_internal/{streamKey}/webrtc (audio Opus) for low-latency playback._internal/{streamKey}/audio (copies AAC; transcodes only if the source isn't AAC). For mounting into Zarya audio shows (controlled from Manager) and for Manager analysis. When the Icecast push is configured server-side, this also publishes public /video-{streamKey}.aac + .mp3 mounts (Live Analyzer / Zarya live sources).NVENC_PRESET env var unless overridden.WEBRTC_MAX_VIDEO_KBPS.Opt-in mode: Only checked renditions will be created. Renditions not listed here or unchecked will NOT be created.
• 720p-60: 1280x720 at full source FPS (60→60, 59.94→59.94, 50→50; default ~4.8 Mbps CBR)
• 720p-30: 1280x720 at half source FPS (60→30, 59.94→29.97, 50→25; default ~2.8 Mbps CBR)
• 480p-30: 854x480 at half source FPS (60→30, 59.94→29.97, 50→25; default ~1.4 Mbps CBR)
• twitch: 1080p60 @ 5600k CBR (high profile, 2 B-frames)
You can tune encoder, profile, level, B-frames, GOP, FPS multiplier and bitrates per rendition above.
current_load / weight with deterministic tie-breaking per stream.
No registered edge relays available.
Changes saved but not yet applied to the active stream. Click "Apply Recording Config Now" below to apply immediately, or changes will take effect when the stream reconnects.
ARCHIVE_WEBHOOK_URL is configured, this stream will send the finalize webhook with a valid publish=1 query parameter appended.
If this stream is currently live, you can force-apply the recording settings immediately without stopping the stream:
This will immediately start or stop recording based on the "Enable recording" checkbox above.
For high-bitrate streams (12+ Mbps), use small DVR windows (10-30 segments) to minimize memory usage.
/dvr/{streamKey}). Multi-hour rewind without the manifest-size limits of the
low-latency window above. Playback latency is ~30s, so this feeds a separate rewind player — the
normal player stays on the live edge. The window only exists while the stream is live; use the
recording archive for after-the-fact playback.
Configure DVR separately for each rendition (720p, 480p, twitch, etc.)
Typical settings:
• Viewing renditions (720p, 480p): 300-900 segments (10-30 minutes)
• Restream-only (twitch): 3-10 segments (just buffering)
Leave empty to use global credentials from docker-compose.yml environment variables. Only needed if this stream uses a different Twitch account than the default.
Leave empty to use global API key from docker-compose.yml environment variables. Only needed if this stream uses a different YouTube account/quota than the default.
Shows current YouTube Live health notices for this stream using the configured OAuth credentials.
Click "Refresh Health" to fetch latest YouTube live health.
Default check validates OAuth refresh/token health without YouTube Data API quota usage. Enable channel check only when needed.
Click "Validate Token" to verify token health. Enable channel binding check only when needed.
If your Google OAuth app is in Testing mode, refresh tokens can expire quickly (often about 7 days). Move it to In production first to improve token lifetime.
https://www.googleapis.com/auth/youtube.readonly (health check) and
https://www.googleapis.com/auth/youtube (API recovery/transition).refresh_token.invalid_grant = revoked/expired token or app/client mismatch;
unauthorized_client = wrong OAuth client configuration.
Quota usage: YouTube API has 10,000 units/day quota. Each live stream uses ~1,540 units per 24h broadcast. Supports up to ~6 concurrent streams.
Health checks also use quota:
Each health poll calls liveBroadcasts.list and liveStreams.list (roughly 2 units/poll).
At a 60s poll interval, that is about 2,880 additional units/day per active monitored stream.
Stream-scoped statistics are loaded directly from Video Control APIs and respect your stream access permissions.
Selected stream: -
| Source | Sessions |
|---|---|
| No data loaded. | |
| Client | Sessions |
|---|---|
| No data loaded. | |
| Bucket | Sessions |
|---|---|
| No data loaded. | |
| Country | Sessions |
|---|---|
| No data loaded. | |
| Viewport | Sessions |
|---|---|
| No data loaded. | |
| Bucket | Sessions |
|---|---|
| No data loaded. | |
| Timestamp | Combined | Local | Twitch | YouTube | HLS | Other | Geo | Bandwidth |
|---|---|---|---|---|---|---|---|---|
| Select a stream and click Refresh to load statistics. | ||||||||
| Start | End | Rendition | Status | Peak Viewers | Avg Bitrate | Resolution/FPS | Codecs |
|---|---|---|---|---|---|---|---|
| No session data loaded yet. | |||||||
udp://host:port (unicast or multicast; pkt_size=1316 is added automatically).scenesatrotational).Choose Deactivate Conflicts & Continue to disable conflicting destination(s) on the currently active stream(s) and proceed.
You have unsaved configuration changes to .
Leaving now discards them. Save first, or continue without saving.