Tutorial

Table of Contents

Scenarios

A) Pre-conditioned content

  • IDR Frame - Key frame present at require Ad Break In/Out locations
  • SCTE 35 Metadata - Content is conditioned with required SCTE 35 Metadata.

Create SMIL

See SMIL Examples

Create remix mp4

#!/bin/bash

unified_remix -o remixed.mp4 playlist.smil

Create presentation package

Origin

Server manifest creation
#!/bin/bash
mp4split -o manifest.ism \
  --timed_metadata \
  --splice_media \
  --hls.client_manifest_version=4 \
  --hls.no_audio_only \
  --hls.minimum_fragment_length=4004/1000 \
  remixed.mp4

Packager

Audio manifest creation
#!/bin/bash

mp4split --package_hls -o audio.m3u8 \
  --timed_metadata \
  --splice_media \
  --fragment_duration=6000/1000 \
  --output_single_file \
  remixed.mp4 --track_type=audio \
  remixed.mp4 --track_type=meta
Video manifest creation
#!/bin/bash

mp4split --package_hls -o video.m3u8 \
  --timed_metadata \
  --splice_media \
  --fragment_duration=6000/1000 \
  --iframe_index_file=iframe.m3u8 \
  --output_single_file \
  --start_segments_with_iframe \
  remixed.mp4 --track_type=video \
  remixed.mp4 --track_type=meta
Master manifest creation
#!/bin/bash

mp4split --package_hls -o master.m3u8 \
  audio.m3u8 \
  video.m3u8 \
  iframe.m3u8

B) Partly-conditioned content

  • IDR Frame - Key frames present at require Ad Break In/Out locations.
  • SCTE 35 Metadata - Content not conditioned with required SCTE 35.

Create SMIL

See SMIL Examples

Create remix mp4

#!/bin/bash

unified_remix -o remixed.mp4 playlist.smil

Create presentation package

See Create presentation package

C) Unconditioned content

  • IDR Frame - Key frames not present at required Ad Break In/Out locations.
  • SCTE 35 Metadata - Content not conditioned with required SCTE 35 Metadata.

Create SMIL file

See SMIL Examples

Create remix mp4

#!/bin/bash

unified_remix -o remixed.mp4 --transcode=URL playlist.smil

Create presentation package

See Create presentation package

SMIL Examples

Ad Insertion SMIL
<?xml version="1.0" encoding="utf-8"?>
<smil xmlns="http://www.w3.org/2001/SMIL20/Language">
  <head>
  </head>
  <body>
    <seq>
      <par>
        <!-- Sources contains single track per file -->
        <video src="http://demo.unified-streaming.com/video/tears-of-steel/tears-of-steel-avc1-1000k.mp4" />
        <audio src="http://demo.unified-streaming.com/video/tears-of-steel/tears-of-steel-aac-128k.mp4" />
        <EventStream xmlns="urn:mpeg:dash:schema:mpd:2011"  schemeIdUri="urn:scte:scte35:2013:xml" timescale="24">
        <!-- Marker 1 - Type: Ad Insert Time: 00:02:00:00 Duration:  00:00:28:00 -->
        <Event id="1" presentationTime="2880" duration="0">
         <Signal xmlns="http://www.scte.org/schemas/35/2016">
          <SpliceInfoSection>
           <SpliceInsert spliceEventId="1" outOfNetworkIndicator="1"  spliceImmediateFlag="1">
              <Program/>
            <BreakDuration autoReturn="1" duration="2520000"/>
           </SpliceInsert>
          </SpliceInfoSection>
         </Signal>
        </Event>
        </EventStream>
      </par>
    </seq>
  </body>
</smil>
Adreplacement SMIL
<?xml version="1.0" encoding="utf-8"?>
<smil xmlns="http://www.w3.org/2001/SMIL20/Language">
  <head>
  </head>
  <body>
    <seq>
      <par>
        <!-- Sources contains single track per file -->
        <video src="http://demo.unified-streaming.com/video/tears-of-steel/tears-of-steel-avc1-1000k.mp4" />
        <audio src="http://demo.unified-streaming.com/video/tears-of-steel/tears-of-steel-aac-128k.mp4" />
        <EventStream xmlns="urn:mpeg:dash:schema:mpd:2011"  schemeIdUri="urn:scte:scte35:2013:xml" timescale="24">
        <!-- Marker 1 - Type: Ad Replace Time: 00:02:00:00 Duration:  00:00:28:00 -->
        <Event id="1" presentationTime="2880" duration="672">
         <Signal xmlns="http://www.scte.org/schemas/35/2016">
          <SpliceInfoSection>
           <SpliceInsert spliceEventId="1" outOfNetworkIndicator="1"  spliceImmediateFlag="1">
              <Program/>
            <BreakDuration autoReturn="1" duration="2520000"/>
           </SpliceInsert>
          </SpliceInfoSection>
         </Signal>
        </Event>
        </EventStream>
      </par>
    </seq>
  </body>
</smil>
AdInsert with Transcoding SMIL
<?xml version="1.0" encoding="utf-8"?>
<smil xmlns="http://www.w3.org/2001/SMIL20/Language">
  <head>
  </head>
  <body>
    <seq>
      <par>
        <!-- Information to trigger transcoding -->
        <ConditioningInfo xmlns="urn:cablelabs:iptvservices:esam:xsd:signal:1"
                  startOffset="PT120S"
                  duration="PT28S" />
        <!-- Sources contains single track per file -->
        <video src="http://demo.unified-streaming.com/video/tears-of-steel/tears-of-steel-avc1-1000k.mp4" />
        <audio src="http://demo.unified-streaming.com/video/tears-of-steel/tears-of-steel-aac-128k.mp4" />
        <EventStream xmlns="urn:mpeg:dash:schema:mpd:2011"  schemeIdUri="urn:scte:scte35:2013:xml" timescale="24">
        <!-- Marker 1 - Type: Ad Insert Time: 00:02:00:00 Duration:  00:00:28:00 -->
        <Event id="1" presentationTime="2880" duration="0">
         <Signal xmlns="http://www.scte.org/schemas/35/2016">
          <SpliceInfoSection>
           <SpliceInsert spliceEventId="1" outOfNetworkIndicator="1"  spliceImmediateFlag="1">
              <Program/>
            <BreakDuration autoReturn="1" duration="2520000"/>
           </SpliceInsert>
          </SpliceInfoSection>
         </Signal>
        </Event>
        </EventStream>
      </par>
    </seq>
  </body>
</smil>
Conditioning using External SCTE 35 file
<?xml version="1.0" encoding="utf-8"?>
<smil xmlns="http://www.w3.org/2001/SMIL20/Language">
  <body>
    <seq>
      <par
        clipBegin="wallclock(1970-01-01T00:00:00.000Z)"
        clipEnd="wallclock(1970-01-01T99:99:99.999Z)" >
        <video src="video.mp4" />
        <video src="audio_eng.mp4" />
        <video src="emsg.mp4" />
      </par>
    </seq>
  </body>
</smil>