Channels · CG · Schedule





Broadcast playout automation — file playback, live inputs, CG graphics overlay, scheduling and multi-format outputs. Each channel runs its own independent encoder.
Each channel has a dedicated FFmpeg encoder (NVENC GPU encode). The TEE muxer feeds all outputs simultaneously — UDP/SRT/RTMP outputs, HLS preview and the WebRTC program monitor share one encode.
Multiple independent channels, each with its own playlist, encoder and outputs
Output resolution, frame rate and audio format per channel
Multiple simultaneous outputs (UDP, SRT, RTMP) via TEE — one encode, many destinations
Transport bar: PLAY / STOP / PAUSE / NEXT, item and total timers
CG and ON-AIR indicators visible on every tab
Drag & drop editor — drop or move inserts above the focused row
Item types: media files from the library and live inputs (HLS/UDP/SRT)
Per-item trim: start offset + duration — following start times recalculate automatically
Loop mode for continuous 24/7 playback
Computed start/end times for every item; temp editor for batch changes
A yellow duration cell marks an item that plays shorter than its full file length. The tooltip shows the original duration and start offset. Scissors icon opens the trim editor.
File browser with folders, multi-select and delete
Upload via dialog or drag & drop — progress modal with per-file status
Uploads can be minimized to a floating widget and keep running in the background while you work
Files are normalized to the house format (uniform timescale, color space) for glitch-free playback
Eye icon previews a file before adding it to the playlist
HLS, UDP and SRT sources as reusable live input definitions
A live input is a playlist item like any other — switch between files and live
Fixed duration or manual NEXT to leave a live segment
Text, logo, ticker/crawl, clock, lower thirds, video overlay, weather
CG templates are per-channel; each element has its own properties (position, size, animation, timing)
Master CG switch + per-element toggles; preview reflects the on-air state
Named profiles override element properties per profile — e.g. a clean feed and a branded feed
Switching the on-air profile re-renders the overlay
Secondary events in the schedule can activate a CG profile or item automatically
With live CG enabled in channel config, toggling CG switches the overlay instantly inside the running encoder — no output interruption. Without it, CG changes restart the encoder (short glitch).
Stereo LED level meters (L/R) live from the program output
Master volume — drag on the meter card
AUTO loudness normalization (EBU R128) per channel
Opt-in per channel (enable in Settings); manual transport keeps working
Rules: daily, weekly (per weekday) or one-time date
Channel time zone aware, handles playlists crossing midnight
Priority resolves overlapping rules
Autostart option launches the scheduled playlist after a server restart
Low-latency WebRTC (WHEP) program monitor directly in the browser
Sticky preview row stays visible at the top while editing
Block EPG — programme titles generated from the playlist
EPG dialog closes only via X / OK / Cancel (no accidental close)
Address format
e.g.
Client reads via
GPU is used for encoding only; decode/filters run on CPU
Heterogeneous sources are normalized on upload — do not bypass the media library for playlist files
Without live CG, every CG change restarts the encoder (short output glitch)
CG Overlay
Channels
Outputs
Playlists
Signal Flow
Broadcast playout automation with file playback, live switching, CG overlay, and scheduling. Access via /playout.
Signal Flow
Channels
Multiple independent channels
Output resolution & audio format per channel
Multiple simultaneous outputs (UDP, SRT, RTMP)
Master volume control
Playlists
Drag & drop playlist editor
Loop mode (continuous)
File items (video/audio from media library)
Live input items (HLS/UDP/SRT sources)
Schedule-based auto-switching
CG Overlay
HTML/CSS-based CG templates
Logo overlay, lower thirds, tickers
Chromium-based rendering
Real-time preview
Per-element show/hide control
Outputs
UDP multicast (IPTV network)
SRT (remote mediamtx / contribution)
RTMP (YouTube, Twitch, etc.)
HLS (web player)
Multiple outputs simultaneously
SRT Output:
Automation & Live Graphics
Audio Metering & Loudness
Stereo L/R LED level meters next to the program preview show the live output level. Drag the meter vertically to set the on-air master volume (drives the streamer level).
The AUTO checkbox enables EBU R128 auto loudness (loudnorm) on the output — it normalizes the level automatically instead of the manual gain.
Automation: Scheduler
Enable per channel in Settings → Automation (opt-in). The scheduler switches the channel's playlist by time (daily / weekly / one-off), evaluated in the channel timezone; the highest priority wins. Auto-start can start a stopped channel when a schedule begins.
Add schedules in Settings → Schedule (playlist, recurrence, day/date, start–end time, priority).
Live CG (instant toggle)
Enable in Settings → Graphics. With Live CG on, the CG overlay turns on/off instantly via ZeroMQ without restarting the encoder (no seam). It uses the cg.pipe renderer (text/logo/ticker). Restart playback after changing the option.
This is also the real fix for stale CG lingering in the preview after turning CG off.
Transport Bar & Preview
Transport controls (Play/Stop/Pause/Next, CG and ON-AIR toggles, timers) live in the tab strip; the active button is highlighted and the total-elapsed timer turns light blue while playing.
The preview row is frozen at the top while the lists below scroll.
Secondary Events & SCTE-35 Ad Breaks
Each playlist item can carry secondary events — graphics or ad cues fired at an offset within that item. Open them from the purple clapper icon next to the EPG eye. Types: CG show/hide (needs live-CG mode) and SCTE-35 ad out/in. A duration auto-pairs the matching hide/return.
Fire an ad break live from the transport bar: the SCTE AD presets (15/30/60/120s) or a custom length emit a SCTE-35 CUE-OUT into the HLS output immediately; a red countdown badge shows the remaining time and RETURN ends it early (CUE-IN).
The Item / Remaining / Elapsed timers sit in the top breadcrumb bar: Item is green, Elapsed is dark blue, Remaining flashes red under 10 seconds.