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
#!/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
#!/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
#!/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
#!/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
The Intel Media SDK is required for IDR frame creation. When the
SDK is not found unified_remix
will print the following error:
I0.675 [2/2]: adding keyframe for splice point(s) 00:00:02.000000(1200/600) to sample at 00:00:02.000000(1200/600) (original gop: 00:00:00.000000(0/600) to 00:00:04.000000(2400/600))
X-USP-Error: Cannot load dynamic library libfmp4_video_decoder_avc_mfx.so: libfmp4_video_decoder_avc_mfx.so: cannot open shared object file: No such file or directory
Create SMIL file
See SMIL Examples
Create remix mp4
#!/bin/bash
unified_remix -o remixed.mp4 playlist.smil
Create presentation package
SMIL Examples
<?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>
<?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>
<?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>
<?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>