Hands on and Demos
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
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.
Note
Media processing is required for IDR frame creation. Please follow the Media processing installation instructions to set up Media processing in order to condition content.
Create SMIL file
See SMIL Examples
Create remix mp4
#!/bin/bash
unified_remix -o remixed.mp4 playlist.smil
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="https://demo.unified-streaming.com/k8s/features/stable/no-handler-origin/tears-of-steel/tears-of-steel-avc1-1000k.mp4" />
<audio src="https://demo.unified-streaming.com/k8s/features/stable/no-handler-origin/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>
Ad replacement 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="https://demo.unified-streaming.com/k8s/features/stable/no-handler-origin/tears-of-steel/tears-of-steel-avc1-1000k.mp4" />
<audio src="https://demo.unified-streaming.com/k8s/features/stable/no-handler-origin/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>
Ad insert 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="https://demo.unified-streaming.com/k8s/features/stable/no-handler-origin/tears-of-steel/tears-of-steel-avc1-1000k.mp4" />
<audio src="https://demo.unified-streaming.com/k8s/features/stable/no-handler-origin/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>