SCTE-35 at the Edge

From the Venue to the
Ad Decisioning Layer

Live video monetization needs accurate break signaling. LiveEdge® generates SCTE-35 splice commands through its REST API or translates SCTE-104 from SDI—so the cue is created at the encoder, not in a separate appliance at every venue.

LiveEdge® SCTE-35

Insert and transport cues with the encoded program

REST API splice commands Create splice_insert from a browser, automation system, Edge App, or Stream Deck.
SCTE-104 to SCTE-35 Ingest supported SCTE-104 from SDI and translate it into SCTE-35 on MPEG-2 TS.
Data-driven Edge Apps Containerized rules turn scoreboard, schedule, or AI events into local marker requests.
Fleet-wide LiveEdge Cloud Validate on one feed, then deploy, monitor, and update the same workflow across venues.

Why the Cue Belongs at the Source

The production environment already knows when the break happens

Creating the cue at the edge means the same operational trigger can be associated with the encoded program before contribution and travel with supported MPEG-2 transport-stream outputs through distribution.

The trigger may come from a director, production automation, SCTE-104 on SDI, an API call, or software correlating external data with the event. Remote and automated operations do not require a master-control operator to originate every marker manually.

Associated before contribution

The cue can travel with the encoded program instead of being reconstructed later in the chain.

Repeatable venue workflows

The same operational trigger can be built into local production, API, or Edge App automation.

Logged close to the source

Cue requests and device events support post-event analysis and an operational audit trail.

Selected outputs only

An SCTE-35 Data Encoder is created, configured, and attached to the transport-stream outputs that should carry the data.

LiveEdge® SCTE-35 Signal Paths

Two ways to introduce SCTE-35

Videon separates the SCTE-35 data path from audio and video encoder profiles. Creating the Data Encoder alone does not place cues into every output—the operator selects which outputs carry the data.

1. Generate a splice command through the REST API

An application sends a command to the LiveEdge device. The device creates the SCTE-35 splice_insert command and inserts it into the MPEG-2 TS output associated with the SCTE-35 Data Encoder. Process immediately or at a specified UTC time, with preroll and duration.

2. Translate SCTE-104 embedded in SDI to SCTE-35

Beginning with LiveEdge device software 10.2.0, Videon can ingest supported SCTE-104 from the selected SDI input and translate it into SCTE-35 on the associated MPEG-2 TS output. Production automation stays responsible for the cue; the encoder handles compression and transport.

Attach the Data Encoder to the output

Select an input source when using SCTE-104 translation, add the Data Encoder as a data source on the desired output, save, and enable the output. The CDN, packager, or downstream system then receives SCTE-35 with the compressed contribution stream.

The API method is appropriate for a browser-based or cloud-based control interface, production automation, a custom application or Edge App, a physical control surface integrated through middleware, event data or business logic that calls the device API, and a Stream Deck operated through Bitfocus Companion.

SCTE-104 and SCTE-35 are industry standards designed for interoperable cue signaling. Customers should test workflows involving new SCTE-104 equipment with the complete signal path as far in advance of go-live as possible.

Data-Driven Markers

Turn real-time data into SCTE-35 with an Edge App

A marker does not require a button press. LiveEdge exposes SCTE-35 insertion through a REST API and runs containerized applications on the same platform that encodes the event. The Edge App receives data, applies customer-defined rules, and invokes the local SCTE-35 API when a condition is met.

When this event occurs, generate this marker with this preroll and duration on this output.
Live data or event
Containerized Edge App
Rules or AI decision
Local LiveEdge REST API
SCTE-35 in MPEG-2 TS

Potential trigger inputs

Scoreboard / game clock Official stats feeds Production rundowns Webhooks Third-party REST APIs Serial / GPIO Stream Deck Audio / tone detection Scene analysis On-device AI inference Device / output state Combined conditions

LiveEdge provides the programmable execution environment and marker-insertion interface; it does not imply that every scoreboard connector, data provider, detection model, or business rule is included as a built-in feature.

Example

Timeout-driven ad opportunity

In a distributed sports workflow, a data provider sends a webhook when an official timeout begins. The same architecture can support richer rules, but one real-world event should produce one marker sequence—webhooks retry, feeds repeat state, and operators may press a control twice.

  1. A containerized Edge App receives the webhook or polls the authorized data source.
  2. The application validates the event, source, event identifier, and timestamp.
  3. It checks local state or policy—for example, that the production is live, the correct output is enabled, and an equivalent event has not already been processed.
  4. A rules engine maps the timeout to a 30-second placement opportunity with four seconds of preroll.
  5. The application calls the local LiveEdge SCTE-35 splice_commands endpoint.
  6. LiveEdge constructs and inserts the splice_insert command into the MPEG-2 transport stream.
  7. The application records the decision, API request, device response, and correlation identifier.
  8. Downstream monitoring confirms that the cue reached the packager or SSAI service and that the expected manifest and ad-decision events occurred.
Example rule
IF event.type == "official_timeout"
AND event.status == "started"
AND output.primary.state == "streaming"
AND event.id has not already been processed
THEN request splice_insert(preroll=4000 ms, duration=30000 ms)
AND record event.id, request, response, and UTC timestamps

The Edge App should retain an event or correlation identifier and implement idempotency, debounce windows, and state-transition logic so one real-world event produces one marker sequence.

Edge Execution

Run the automation in a LiveEdge container

Applications are deployed through LiveEdge Cloud. A sample SCTE-35 Ad Insertion Button is available as an example. A production automation container follows the same deployment model.

  1. Build the container image for linux/arm64.
  2. Publish the image to Docker Hub, Amazon ECR, or the approved registry used by the deployment.
  3. Use LiveEdge Cloud UI or API to pull the image to the target device or fleet.
  4. Supply the required environment variables, volume mappings, device mappings, port mappings, network mode, and restart policy.
  5. Run the container on the LiveEdge device.
  6. Have the container call the local LiveEdge REST API to create and issue SCTE-35 commands.
Example cross-platform build
docker buildx build \
  --load \
  --platform linux/arm64 \
  --no-cache \
  --progress=plain \
  -t registry-account/liveedge-marker-automation:1.0.0 .

Local decisions avoid unnecessary cloud round trips

Running the automation on the edge means the final decision and API call can occur next to the encoder. A cloud service can still provide schedules, configuration, models, or data, but the Edge App can apply the rule locally once the necessary information is available. This can reduce control-path latency and allows customers to define degraded-mode behavior when cloud connectivity is interrupted.

For example, the application might cache the event schedule, continue processing a locally available scoreboard feed, queue audit records for later upload, and refrain from generating markers that require unavailable external validation. The correct behavior is determined by the customer's rights, monetization, and operational policies.

Security belongs in the container from the start

Credentials for data providers should be supplied through the approved deployment mechanism, scoped to the minimum required access, and kept out of the image and application logs. The container should validate incoming webhooks, authenticate API clients, restrict exposed ports, avoid privileged execution unless specifically required and approved, and reject stale or malformed events. An always restart policy is useful for an event listener that must recover automatically, but the application must persist or reconstruct enough state to avoid duplicating an event after recovery.

Explainable Automation

Data-driven signaling and auditability belong together

Every automated decision should be explainable after the event. In addition to LiveEdge device logs, the Edge App should record the source data, rule version, decision, exact SCTE-35 request, timestamps, and API response.

The record traces source data → automation rule → marker request → edge execution → downstream observation.

Trigger

Source event

The source data or event that triggered evaluation, plus the normalized event type and a stable event identifier.

Policy

Rule and health state

The rule version that was evaluated and the relevant input and output health state at decision time.

Decision

Triggered or suppressed

Triggered, suppressed, rejected, duplicated, or failed—plus the exact SCTE-35 request parameters.

Evidence

Request, response, downstream

UTC request and response timestamps, the device and output targeted, the LiveEdge API response or error, and any downstream confirmation with the same correlation identifier.

LiveEdge Cloud Visibility and Scale

From one live feed to a fleet

LiveEdge Cloud provides centralized deployment, configuration, monitoring, and support for distributed LiveEdge devices. The same SCTE-35 workflow can be validated on one feed and then rolled out across many venues.

Build and validate the SCTE-35 workflow on one live feed, then use LiveEdge Cloud to deploy, manage, monitor, and update it across a fleet of live feeds.
Build and validate one workflow
LiveEdge Cloud
Deploy configuration and Edge App
Many venues and live feeds
Central health, logs, and operational data

Prove Once

Start with one representative path

One input, one LiveEdge device, one automation container, one SCTE-35 Data Encoder, one contribution output, and the intended downstream packager or SSAI service. Use that feed to validate data source, rule logic, marker construction, preroll, duration, transport, downstream interpretation, logging, and recovery.

Deploy Many

Same automation across feeds

A versioned linux/arm64 image, a standard encoder/output template, environment-specific venue and credential values, staged rollout, version tracking, and rollback. One design can run across hundreds of feeds; each instance still evaluates its local event before generating a marker.

Operate

Central visibility without removing local intelligence

LiveEdge Cloud distributes the application and configuration and shows exceptions. The Edge App still evaluates time-sensitive conditions locally and calls the local marker-insertion API. A timeout marker is generated only for the venue and feed where the qualifying timeout occurs.

What operators can review in Cloud

  • Device connectivity and availability
  • Input presence and signal status
  • Encoder and output configuration
  • Whether the intended streaming output is enabled
  • Container installation and operation
  • Device software and Cloud Agent versions
  • Configuration consistency across sites
  • Remote commands and operational actions
  • Downloadable device logs and debug information
  • Exceptions that require investigation

When an expected marker is missing, the team can check the source input, automation container, device configuration, active output, connectivity, clock synchronization, and downstream systems without immediately dispatching someone to the venue. Where a centralized per-marker view is required, the Edge App or an associated cloud service can publish structured event records that correlate feed, rule, request, acknowledgement, and SSAI result. LiveEdge Cloud supplies fleet health; marker-event analytics are a separate layer.

Supported Output Paths

SCTE-35 on MPEG-2 TS contribution

Videon currently documents SCTE-35 support for MPEG-2 TS outputs. This is a transport-level capability. The LiveEdge device originates or transports the cue; the downstream platform remains responsible for translating and acting on it.

Network

Unicast

Point-to-point MPEG-2 TS output with attached SCTE-35 data.

Network

Multicast

MPEG-2 TS multicast contribution with in-band cue signaling.

Contribution

RTSP

Documented MPEG-2 TS output path for SCTE-35 transport.

An RTMP-only workflow should not be assumed to carry in-band SCTE-35 in the same way as MPEG-2 TS over SRT. If a production simultaneously sends an MPEG-2 TS/SRT contribution feed and an RTMP feed to a platform such as YouTube, the SCTE-35 signaling applies to the supported transport-stream path; the RTMP destination may require its own platform-specific ad trigger.

Downstream, a packager or SSAI platform can interpret SCTE-35 and express the opportunity in the delivery format. In HLS this may become EXT-X-CUE-OUT, EXT-X-CUE-IN, or EXT-X-DATERANGE. A DASH workflow may use an event stream or period boundary.

Configuration

Configuring the SCTE-35 Data Encoder

The REST API is exposed on port 2020. Before creating a profile, an application should enumerate the existing Data Encoders. If the response already contains a Data Encoder whose codec is scte35, reuse its returned identifier—attempting to create a duplicate can return an HTTP 500 error.

List Data Encoders
GET http://[IP_ADDRESS]:2020/v2/encoders/data_encoders
Create SCTE-35 Data Encoder
POST http://[IP_ADDRESS]:2020/v2/encoders/data_encoders
Content-Type: application/json

{
  "name": "SCTE-35 Data Encoder",
  "codec": {
    "value": "scte35",
    "scte35": {
      "splice_duration": 30000
    }
  }
}

splice_duration is expressed in milliseconds. In this example, the default opportunity duration is 30,000 milliseconds, or 30 seconds. The POST response returns the Data Encoder identifier needed for subsequent configuration and splice-command requests. JSON sent to the device must be valid JSON—comments used in documentation examples are not valid JSON and must be removed from actual requests.

Update default duration
PUT http://[IP_ADDRESS]:2020/v2/encoders/data_encoders/[DATA_ENCODER_ID]
Content-Type: application/json

{
  "name": "SCTE-35 Data Encoder",
  "codec": {
    "value": "scte35",
    "scte35": {
      "splice_duration": 60000
    }
  }
}

Attach to a running output

  1. Create or select the SCTE-35 Data Encoder.
  2. Select an input source when using SCTE-104 translation.
  3. Add the Data Encoder as a data source on the desired output.
  4. Save the configuration.
  5. Enable the output and verify that it is streaming successfully.

Timed Insertion

Creating a timed splice_insert

To create a splice command, POST to the Data Encoder's splice_commands collection. During preroll, Videon reinserts the command every two seconds for redundancy, improving the probability that a downstream receiver observes the cue despite packet loss or a transient disruption.

POST splice_commands
POST http://[IP_ADDRESS]:2020/v2/encoders/data_encoders/[DATA_ENCODER_ID]/splice_commands
Content-Type: application/json

{
  "process_time_utc": "2026-09-10T20:15:30.789Z",
  "splice_command": {
    "value": "splice_insert",
    "splice_insert": {
      "preroll_time_msec": 4000,
      "duration_msec": 30000
    }
  }
}
  • process_time_utc specifies when the device processes the request. If omitted, the request is processed immediately.
  • preroll_time_msec specifies the advance interval before the splice point. If omitted, Videon uses a four-second default.
  • duration_msec specifies the expected opportunity duration. If omitted, the Data Encoder's configured splice_duration is used.

UTC scheduling depends on accurate device time. Use NTP and monitor clock health. On supported products running version 12.1.0 or later, system time can be inspected and corrected through the local Web UI when NTP is unavailable. A manual change does not disable NTP; the clock may update again when the NTP service becomes reachable.

Operator Control

Stream Deck, Bitfocus Companion, and SCTE-104

Videon publishes a Bitfocus Companion module and sample configuration for LiveEdge Max workflows. Production operators can use purpose-built controls instead of constructing REST requests during an event. The Companion connection points to the local address of the LiveEdge device and uses a configurable polling rate, with ten seconds documented as the default. The input channel must be selected for the SCTE-35 buttons. A Data Encoder must already exist, and a supported TS output must be enabled with that Data Encoder attached.

Cue Out

Opportunity Start

Inserts an Opportunity Start marker for the active SCTE-35 path.

Cue In

Opportunity End

Inserts an Opportunity End marker to return to programming.

Cancel

Cancel active commands

Cancels active SCTE commands when the break should not proceed.

Splice 15

15-second splice

Inserts a 15-second splice from the control surface.

Splice 30

30-second splice

Inserts a 30-second splice from the control surface.

Splice 60

60-second splice

Inserts a 60-second splice from the control surface.

The published module and sample configuration are provided as-is, do not perform error checking, and do not themselves grant the required feature license. A Videon data license is required for SCTE-35 commands. A production control layer should expose positive acknowledgement, failure states, device reachability, active-output state, and—where possible—independent confirmation from the downstream receiver.

SCTE-104 in the local Web UI

  1. Create an SCTE-35 profile under Data Profiles.
  2. Add the appropriate SDI input as the profile's input source.
  3. Add the SCTE-35 profile to the desired output as a data source.
  4. Save and enable the output.

SCTE-104 in LiveEdge Cloud Control

  1. Navigate to Configuration > Encoders.
  2. Create a new Data Encoder with data type SCTE-35.
  3. Select the appropriate SDI input under Input Selection.
  4. Open the desired output and select the Data Encoder under Data Encoder(s).
  5. Save the configuration and verify the output.

For SCTE-104 translation, the SCTE-35 Data Encoder is bound to the SDI input carrying the SCTE-104 messages. Videon's published cloud procedure specifies device firmware later than version 10.2.0 and Cloud Agent later than version 1.16.3. Current release requirements should always be checked before deployment.

Source-Side Evidence

Building an audit trail from LiveEdge logs

After an event, rights holders, advertisers, engineering teams, and distribution partners may need to know whether an ad opportunity was requested, which device generated it, what preroll and duration were used, and why a downstream record disagrees with the source-side operation.

1. Business event

Why the cue exists

The scheduled break, game event, traffic instruction, or automation decision.

2. Control request

What initiated it

The REST, SCTE-104, Stream Deck, or application action that initiated the cue.

3. Edge execution

What the device did

LiveEdge device logs, device identity, configuration, output state, and UTC timestamps.

4. Downstream

What was observed

Confirmation from the receiver, packager, CDN, or SSAI platform that the SCTE-35 message was received and acted upon.

Debug information can be requested remotely from LiveEdge Cloud Control by selecting the device, opening Commands, selecting Download Logs, requesting new device logs, and downloading the resulting bundle. Correct UTC device time is essential because time drift can affect logs as well as other time-sensitive services.

A device log can establish that the device received or processed a request and show the surrounding operating context. It does not prove that a remote packager received every packet, interpreted the message correctly, requested an ad, or completed the replacement. Billing-grade reconciliation should combine LiveEdge logs with transport monitoring, downstream manifest inspection, SSAI decision logs, and player or delivery analytics.

Example fleet audit record — not a native LiveEdge log entry
{
  "device_id": "venue-encoder-042",
  "venue_id": "arena-west",
  "input": "sdi-1",
  "output": "srt-primary",
  "event_type": "splice_insert",
  "requested_at_utc": "2026-09-10T20:15:26.789Z",
  "process_time_utc": "2026-09-10T20:15:30.789Z",
  "preroll_time_msec": 4000,
  "duration_msec": 30000,
  "trigger_source": "production-automation",
  "request_status": "accepted",
  "downstream_status": "verified"
}

This is an audit-system data model, not a guaranteed Videon API response. The aggregation service should retain the original request, response, device-log references, downstream evidence, clock-health information, and a stable event identifier. Access and retention policies should follow the organization's commercial and compliance requirements.

End-to-End Validation

Downstream integration and resilient operations

Before production deployment, test the complete workflow with the actual SCTE-104 source, LiveEdge configuration, contribution transport, downstream platform, and commercial requirements. AWS Elemental MediaPackage, for example, can process SCTE-35 in source content and produce corresponding markers in HLS, CMAF, and DASH outputs—but only if the origin or packager is configured correctly.

  • Accepted command type and message structure
  • Required preroll and duration handling
  • Cue-out, cue-in, and cancellation behavior
  • Event identifier expectations
  • SCTE-104 compatibility and translation
  • Preservation through SRT, Zixi, multicast, unicast, or RTSP
  • Behavior during packet loss or reconnects
  • GOP and splice-point alignment requirements
  • Conversion into required HLS or DASH tags
  • SSAI interpretation and ad-decision behavior
  • Slate or underlying program when no ad is returned
  • Multi-destination behavior across platforms
  • Clock synchronization and timestamp correlation
  • Source, transport, packager, SSAI, and playback logging

Production practices

Design for an observable, managed service

For one event, an operator pressing a button may be sufficient. At hundreds or thousands of venues, cue generation should be treated as an observable, managed service.

  • Synchronize devices to reliable NTP and monitor clock health
  • Attach the correct SCTE-35 Data Encoder from a configuration template
  • Validate that the intended output is active before accepting a cue
  • Use authenticated, access-controlled applications to call device APIs
  • Record trigger source, parameters, device identity, response, and timestamps outside the device
  • Use stable event identifiers across scheduling, control, edge, and downstream systems
  • Make operator controls idempotent or protected against double presses
  • Display acknowledgements and error states rather than assuming success
  • Monitor the outgoing MPEG-2 TS independently for SCTE-35 presence
  • Validate the downstream HLS/DASH manifest and SSAI transaction
  • Define fallback behavior for missed cues, incorrect duration, and lost connectivity
  • Test the complete workflow as far in advance of go-live as possible

Business Outcomes

One edge workflow, multiple downstream results

Although ad insertion is the best-known SCTE-35 application, the signaling can support placement opportunities, program transitions, content segmentation, blackout logic, recording workflows, and downstream automation. The exact behavior is determined by the messages generated and the capabilities and configuration of the receiving platform.

LiveEdge handles the cue on the same edge platform that receives, encodes, and distributes the video. It can translate SCTE-104 or generate API-controlled SCTE-35 splice commands, attach the data to supported MPEG-2 TS outputs, deliver it over protocols such as SRT and Zixi, and retain logs for the operational audit trail.

For distributed sports, local broadcasting, FAST-channel contribution, and event production, the cue can move from a production action at the venue to downstream monetization and verification without a traditional broadcast plant at every location.

Technical references

Feature availability may depend on the LiveEdge product, software and Cloud Agent versions, licenses, output type, and downstream platform. As a standard engineering practice, validate the complete customer workflow before production deployment.

Ready to Signal at the Edge

Put SCTE-35 on the same platform that encodes the event

Whether you need REST API insertion, SCTE-104 translation, data-driven Edge Apps, or fleet-wide LiveEdge Cloud operations—we'll help you design and validate the workflow.