Written by Nathan de Balthasar, Software Engineer at TrackIt
Digital ad insertion in streaming workflows relies on precise signals that indicate when and where ads should play. Without these markers, platforms cannot synchronize breaks, resulting in poor viewer experiences and ineffective monetization. SCTE-35 has become the industry standard for defining such ad opportunities, ensuring compatibility across both broadcast and OTT environments.
Contents
MediaTailor’s Role in Translating SCTE-35 for Seamless Ad Insertion
The first article in this series, SCTE-35 Standard: Core Signaling for Digital Ad Insertion, introduced SCTE-35 and explained how it defines cue messages for marking ad breaks, segments, and content boundaries across broadcast and streaming workflows. It also set the stage by showing how services like AWS Elemental MediaTailor leverage SCTE-35 to enable server-side ad insertion (SSAI).
This second article focuses on MediaTailor itself. It explores how the service ingests SCTE-35 markers, interprets splice_insert and time_signal messages, and translates them into HLS and DASH-compatible ad markers. Practical considerations for choosing between message types, configuring Channel Assembly, and validating ad break behavior will also be covered.
Inserting Ads
There are two primary ways to insert ads in AWS Elemental MediaTailor: using time_signal messages or splice_insert messages. Both originate from SCTE-35 but differ in configuration requirements, signaling style, and downstream playback implications. The MessageType property in Channel Assembly determines which type MediaTailor applies for an ad break.
splice_insert
A splice_insert message explicitly marks the beginning of an ad break, either immediately or at a scheduled splice point, and may also define an end or duration. This approach is common in legacy broadcast and cable workflows, where deterministic start/stop signals are required to switch between linear content and ads.
In MediaTailor Channel Assembly, setting the ad break’s MessageType to SPLICE_INSERT ensures that the SCTE-35 payload is translated into enhanced HLS or DASH ad markers.
time_signal
A time_signal message is more typical in modern OTT SSAI workflows. Rather than relying on broadcast-style splice commands, it associates a scheduled event with a presentation timestamp. When paired with segmentation descriptors, time_signal messages carry richer metadata, such as:
- segmentation_type_id (e.g., program start, provider ad, distributor ad)
- segmentation_duration (length of the ad break)
- content identifiers (for tracking or uniqueness)
In HLS, MediaTailor writes this metadata into #EXT-X-DATERANGE tags. In DASH, it becomes part of the EventStream signaling.
HLS Ad Markup Types in MediaTailor
Depending on whether time_signal or splice_insert is used, MediaTailor generates different HLS ad markers.
Daterange Markup (time_signal style)
When time_signal is configured, MediaTailor emits #EXT-X-DATERANGE tags in the manifest. These tags include attributes for start time, duration, SCTE-35 payload, and optional identifiers.

SCTE-35 Enhanced Markup (splice_insert style)
When SCTE-35 Enhanced is selected in MediaTailor (based on splice_insert), the manifest includes a richer set of tags:
- #EXT-X-CUE-OUT – Marks the start of an ad break, with an optional duration
- #EXT-X-ASSET – Appears alongside #EXT-X-CUE-OUT. It carries metadata about the ad break, including the Conditional Access Identifier (CAID)
- #EXT-OATCLS-SCTE35 – Contains the raw SCTE-35 payload in base64 form
- #EXT-X-CUE-OUT-CONT – Appears on each media segment during the break, showing elapsed and remaining time
- #EXT-X-CUE-IN – Marks the return to program content immediately after the break
This style mirrors legacy broadcast behavior and is often preferred when interoperability with third-party players or legacy workflows is required.
Practical Considerations
- When to use time_signal: Best for OTT-native SSAI, where richer metadata (e.g., segmentation descriptors) improves ad decisioning and analytics.
- When to use splice_insert: Useful for compatibility with older systems, or when deterministic cue-out/cue-in markers are expected by downstream players.
- Player support: Not all players interpret #EXT-X-DATERANGE consistently, while #EXT-X-CUE-OUT/#EXT-X-CUE-IN enjoy wider historical support. Cross-environment testing is essential.
How to Configure Ad Breaks in MediaTailor
Ad scheduling in MediaTailor begins by creating a Channel that provides linear playback from live or VOD sources. A channel stitches together programs in sequence, and ad breaks are configured at the program level.
Step 1: Create a Channel
Define a MediaTailor Channel using the AWS Management Console, AWS CLI, or CloudFormation. A channel serves as the container for programs and ad scheduling.
Step 2: Add Programs
Once the channel exists, add programs, which represent the primary content (live feeds, VOD assets, or other media). Each program can have one or more ad breaks configured within its timeline.
Step 3: Define Ad Breaks

For each program, configure ad breaks by providing:
- Ad slate (ad source): A VOD asset or fallback content that plays if no ad is returned by the ad decision server (ADS).
- Start time: The offset within the program where the break should occur.
- Duration (optional): Specifies how long the break should run. If not set, MediaTailor uses the break duration provided by the SCTE-35 marker.
Step 4: Choose Message Type

The MessageType
property determines how SCTE-35 markers are expressed in the channel’s manifests:
- SPLICE_INSERT → MediaTailor emits SCTE-35 Enhanced markup (#EXT-X-CUE-OUT, #EXT-X-CUE-IN, etc.).
- TIME_SIGNAL → MediaTailor emits #EXT-X-DATERANGE tags in HLS or EventStream entries in DASH, with richer metadata support.
Example (console configuration excerpt):

This configuration schedules a time_signal ad break 10 minutes into the program, with a slate asset used if no ads are available.
Step 5: Validate and Test
- Manifests: Inspect HLS or DASH outputs to confirm correct ad marker insertion.
- Fallbacks: Verify the slate asset plays when no ad decision is returned.
- Monitoring: Use Amazon CloudWatch metrics and logs to confirm ad break signaling and playback behavior.
Conclusion
AWS Elemental MediaTailor acts as the bridge between traditional SCTE-35 signaling and modern OTT delivery. By translating splice_insert and time_signal messages into HLS and DASH ad markers, it enables standards-compliant SSAI that functions reliably across a wide range of players.
The distinction is clear: splice_insert provides deterministic start/stop cues, while time_signal delivers richer metadata for advanced ad decisioning and analytics. Selecting the appropriate approach and configuring ad breaks effectively ensures smooth and personalized ad experiences at scale.
For implementation details, see: Using AWS Elemental MediaTailor to create linear assembled streams documentation
About TrackIt
TrackIt is an international AWS cloud consulting, systems integration, and software development firm headquartered in Marina del Rey, CA.
We have built our reputation on helping media companies architect and implement cost-effective, reliable, and scalable Media & Entertainment workflows in the cloud. These include streaming and on-demand video solutions, media asset management, and archiving, incorporating the latest AI technology to build bespoke media solutions tailored to customer requirements.
Cloud-native software development is at the foundation of what we do. We specialize in Application Modernization, Containerization, Infrastructure as Code and event-driven serverless architectures by leveraging the latest AWS services. Along with our Managed Services offerings which provide 24/7 cloud infrastructure maintenance and support, we are able to provide complete solutions for the media industry.