SCTE-35 Markers

SCTE-35 markers identify points where alternate content (typically commercials or local programming) can be inserted into a composition. SCTE-35 markers are attached to video stream samples as sc35 metadata. See Metadata Types for additional information.

Transform supports SCTE-35 markers in the following outputs:

  • MPEG-2 Transport Stream m2ts. Markers are carried in a separate packetized elementary stream (PES). Use the Scte35Pid stream property to set the elementary stream packet identifier (PID).

  • HTTP Live Streaming hls . Markers are added to the playlist (M3U8) for each variant stream. For MPEG-2 Transport Stream variants the markers are also inserted into an elementary stream.

  • MPEG-DASH dash and cmaf. Markers are added to the presentation (MPD) as an EventStream element in either XML or binary format. Need format property.

SCTE-35 Pass-through

By default SCTE-35 metadata extracted from an input container is inserted into each output container.

For example the following composition produces an MPEG-2 transport stream with SCTE-35 markers on PID 400:

---
input:
  container:
  - name: input1
    video:
    - name: v1
output:
  container:
  - name: output1
    type: 'm2ts'
    properties:
      Scte35Pid: 400
    video:
    - name: v1
{
  "input": {
    "container": [
      {
        "name": "input1",
        "video": [
          {
            "name": "v1"
          }
        ]
      }
    ]
  },
  "output": {
    "container": [
      {
        "name": "output1",
        "type": "m2ts",
        "properties": {
          "Scte35Pid": 400
        },
        "video": [
          {
            "name": "v1"
          }
        ]
      }
    ]
  }
}

SCTE-104 Conversion

SCTE-104 operations are inserted by broadcast automation systems and attached to video samples as ancillary s104 metadata. SCTE-104 operations on an input stream are automatically converted to SCTE-35 markers on an output stream.

SCTE-104 operation metadata must be extracted from appropriate root element. For example the following extracts SCTE-104 from MXF Ancillary mxfa metadata:

---
input:
  container:
  - name: input1
    video:
    - name: v1
      detach:
      - type: 's104'
        root: 'mxfa'
output:
  container:
  - name: output1
    type: 'm2ts'
    properties:
      Scte35Pid: 400
    video:
    - name: v1
{
  "input": {
    "container": [
      {
        "name": "input1",
        "video": [
          {
            "name": "v1",
            "detach": [
              {
                "type": "s104",
                "root": "mxfa"
              }
            ]
          }
        ]
      }
    ]
  },
  "output": {
    "container": [
      {
        "name": "output1",
        "type": "m2ts",
        "properties": {
          "Scte35Pid": 400
        },
        "video": [
          {
            "name": "v1"
          }
        ]
      }
    ]
  }
}

SCTE-35 Insertion

SCTE-35 markers can be inserted from a sidecar metadata file. For example the following will insert markers from an MPEG-DASH presentation (MPD):

---
input:
  container:
  - name: input1
    video:
    - name: markers
  - name: input2
    video:
    - name: v1
      merge:
        name: markers
output:
  container:
  - name: output1
    type: 'm2ts'
    properties:
      Scte35Pid: 400
    video:
    - name: v1

The merge operator adds the sc35 metadata from the input1 DASH presentation to the input2 video stream.

DASH Event Stream

The following XML illustrates an MPEG-DASH presentation containing a SCTE-35 EventStream. This example identifies a 30 second ad break starting at 10 seconds into the presentation:

<?xml version="1.0" encoding="utf-8"?>
<MPD xmlns:scte35="http://www.scte.org/schemas/35/2016">
  <Period start="PT0S">
    <EventStream timescale="90000" schemeIdUri="urn:scte:scte35:2013:xml">
      <Event presentationTime="900000">
        <scte35:SpliceInfoSection>
          <scte35:TimeSignal/>
          <scte35:SegmentationDescriptor spliceEventId="1" segmentationTypeId="52" segmentationDuration="2700000" segmentationUpidType="9" segmentationUpid="1" segmentNum="1" segmentsExpected="1" />
        </scte35:SpliceInfoSection>
      </Event>
      <Event presentationTime="3600000">
        <scte35:SpliceInfoSection>
          <scte35:TimeSignal/>
          <scte35:SegmentationDescriptor spliceEventId="1" segmentationTypeId="53" segmentationUpidType="9" segmentationUpid="2" segmentNum="1" segmentsExpected="1" />
        </scte35:SpliceInfoSection>
      </Event>
    </EventStream>
  </Period>
</MPD>

The schemeIdUri indicates that each Event contains a SCTE-35 marker specified in XML format. The presentationTime of each event is specified in the event stream timescale (typically 90kHz).

SCTE-35 markers can also be specified in binary format as illustrated below:

<?xml version="1.0" encoding="utf-8"?>
<MPD xmlns:scte35="http://www.scte.org/schemas/35/2016">
  <Period start="PT0S">
    <EventStream timescale="90000" schemeIdUri="urn:scte:scte35:2014:xml+bin">
      <Event presentationTime="900000">
        <scte35:Signal>
          <scte35:Binary>/DAhAAAAAAAAAP/wEAUAAALRf+9//gAaF7DAAAAAAAA+MhNj</scte35:Binary>
        </scte35:Signal>
      </Event>
      <Event presentationTime="3600000">
        <scte35:Signal>
          <scte35:Binary>/DAhAAAAAAAAAP/wEAUAAALSf+9//gAaF7DAAAAAAABd4y1C</scte35:Binary>
        </scte35:Signal>
      </Event>
    </EventStream>
  </Period>
</MPD>

ESAM Signal Processing Notification

TBD