Watermarks require either a custom image file uploaded to ErsatzTV or a channel logo already configured on the channel. Without an image source the watermark overlay will not render.
Watermarks
AChannelWatermark is a named, reusable overlay configuration. A single watermark record can be assigned to a channel (applied to all content on that channel) or overridden on individual schedule items, block items, or Deco configurations.
Watermark Fields
string
required
A label for this watermark (e.g.
Channel 5 Bug, Network Logo). Used in dropdowns throughout the UI.ChannelWatermarkMode enum
Controls when the watermark is visible.
ChannelWatermarkImageSource enum
Selects where the overlay image comes from.
string
Relative path or identifier of the custom image file. Only used when
ImageSource is Custom. Supported formats: PNG, JPEG, GIF (static frame only).WatermarkLocation enum
Screen position of the watermark overlay.
WatermarkSize enum
How the watermark image dimensions are interpreted.
double
When
Size is Scaled, this is the watermark width as a percentage of the output video width (e.g. 10.0 = 10% of frame width). The height is scaled proportionally.double
Distance from the nearest horizontal edge, expressed as a percentage of the frame width. Used to inset the logo away from the frame edge.
double
Distance from the nearest vertical edge, expressed as a percentage of the frame height.
int
For
Intermittent mode: the interval in minutes between watermark appearances.int
For
Intermittent mode: how many seconds the watermark remains visible each time it appears.int (0–100)
Fixed opacity of the watermark as a percentage.
100 = fully opaque. 0 = invisible (but still processed). Overridden by OpacityExpression when Mode is OpacityExpression.string
A dynamic expression evaluated per frame to determine watermark opacity. Used with
Mode = OpacityExpression for fade-in/fade-out effects. Expressions follow FFmpeg’s enable expression syntax relative to the media item’s timestamp.bool
When
true, the watermark is composited inside the active picture area of the source video (respecting letterbox/pillarbox padding). When false, it is placed over the full output frame including padding bars.int
Z-order for layering multiple watermarks. Higher values appear on top of lower values when two overlays occupy the same screen region.
Assigning Watermarks
Watermarks can be attached at multiple levels, with more specific assignments overriding broader ones:1
Channel-level watermark
Go to Channels, edit a channel, and set the Watermark field. This watermark applies to all content playing on that channel unless overridden.
2
Schedule item watermark
In a programme schedule, individual items can specify their own watermark. This overrides the channel-level watermark for the duration of that item.
3
Block item watermark
Block schedule items similarly support a per-item watermark override.
4
Deco watermark
Deco configurations (see Decos below) can define a watermark that applies to all items in the Deco’s scope, with
DecoMode controlling whether it is inherited, disabled, or merged with other watermarks.Filler Presets
AFillerPreset defines a named collection of media content and rules for how ErsatzTV should select and insert that content to fill time gaps in the schedule. Filler can pad to exact minute boundaries, add a fixed number of clips, or play tail content after the main item finishes.
FillerPreset Fields
string
required
A label for this preset (e.g.
30-Second Commercials, Movie Bumpers, Dead Air Loop).FillerKind enum
The role this filler plays in the playout.
FillerMode enum
Determines how much filler content is inserted each time the preset fires.
TimeSpan?
Target duration for
FillerMode.Duration. ErsatzTV inserts items from the filler collection until this total duration is reached.int?
Number of items for
FillerMode.Count and upper bound for FillerMode.RandomCount.int?
Used with
FillerMode.Pad. ErsatzTV pads to the nearest multiple of this many minutes (e.g. 5 pads to the next 5-minute boundary).bool
When
true, the channel watermark is displayed during filler content. When false, the watermark is suppressed for filler items.CollectionType enum
The kind of media collection from which filler items are drawn.
string
A custom scripted expression for advanced filler selection logic.
bool
When
true, individual chapter markers within a media file are treated as separate filler items, allowing fine-grained padding with a single multi-chapter file.Filler Attachment Points
Filler presets are attached to channels and schedule items at several levels:Channel Fallback Filler
Set on the Channel record (
FallbackFillerId). Plays continuously when there is no scheduled content — prevents dead air on the channel. Assign a looping collection or long-duration media as the fallback.Schedule Item Filler
Attached directly to individual programme schedule items. Controls pre-roll, post-roll, or tail content specific to that item’s time slot.
1
Create a Filler Preset
Go to Filler Presets and click Add Filler Preset. Choose
Fallback as the FillerKind, set the collection, and configure FillerMode (typically Pad or Duration).2
Assign to the Channel
Edit your channel and set the Fallback Filler field to your new preset. ErsatzTV will play this content whenever the schedule runs out of items.
Decos
Decos are decoration configuration objects that can be applied to block-based playouts. A Deco bundles together a watermark, graphics elements, default filler, dead-air fallback, and break content into one reusable unit. Decos are organised into Deco Groups and assigned to block playouts.Deco Fields
DecoMode Values
Break Content
DecoBreakContent defines media inserted at break points within a block. Each break-content entry references a media collection and a DecoBreakPlacement:
Graphics Elements
AGraphicsElement is an overlay asset (image, text, subtitle, motion graphic, or script) that can be composited on top of video output. Graphics elements are more flexible than watermarks — they support different rendering kinds and can be attached to schedule items, block items, or Deco configurations.
GraphicsElementKind Values
Graphics elements are managed in Settings → Graphics Elements and associated with schedule items via the
ProgramScheduleItemGraphicsElements relationship, or with Decos via DecoGraphicsElements.
Slug Seconds
Slug seconds is a per-channel setting that inserts a brief black video segment between consecutive playout items. This mimics the brief cut-to-black seen between segments on traditional broadcast television.- Set on the
Channelrecord asSlugSeconds(typedouble?). - A value of
nullor0disables slug insertion. - Typical values:
0.5–2.0seconds. - During the slug, the channel produces silent black frames, so watermarks and graphics elements are suppressed.
FFmpeg Profiles
Configure the transcoding settings that apply watermark filters to the video stream.
Streaming Modes
Understand how watermarks and filler are included in each streaming output mode.
