Manifest conditioned examples
This section provides manifest samples for the different protocols, generated by a packager, under the control of Prisma.
HLS Manifest sample
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:25005
#EXTINF:10,
20141121T113401-v1-257-258-25005.ts
#EXTINF:8.8,
20141121T113401-v1-257-258-25006.ts
#EXT-X-CUE-OUT:ID=1234,UNIQUEPROGRAMID=7777,AVAILNUM=3,DURATION=PT30S
#EXTINF:10,
20141121T113401-v1-257-258-25007.ts
#EXT-X-CUE-SPAN:ID=1234,UNIQUEPROGRAMID=7777,AVAILNUM=3,TIMEFROMSIGNAL=PT10S,DURATION=PT30S
#EXTINF:10,
20141121T113401-v1-257-258-25008.ts
#EXT-X-CUE-SPAN:ID=1234,UNIQUEPROGRAMID=7777,AVAILNUM=3,TIMEFROMSIGNAL=PT20S,DURATION=PT30S
#EXTINF:10,
20141121T113401-v1-257-258-25009.ts
#EXT-X-CUE-IN:ID=1234,UNIQUEPROGRAMID=7777,AVAILNUM=3,DURATION=PT30S
#EXTINF:10,
20141121T113401-v1-257-258-25010.ts
DASH Manifest sample
Upon SCTE-35 detection, a packager generally starts a new period. In the below example, we just show the beginning of the manifest for sake of clarity.
Conditioning information sent by Prisma is highlighted below.
<Period id="146723272290" start="PT1513260090.182S">
<EventStream schemeIdUri="urn:mime:text" timescale="90000">
<Event presentationTime="146723272290" duration="2700000" id="35e946ae-684f-4045-b009-b681550e8521">
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiID8+PFNpZ25hbD48U3BsaWNlSW5mb1NlY3Rpb24gc2N0ZTM
1UG9pbnQ9IjE0NjcyMzI3MjI5MCI+PFNwbGljZUluc2VydCBzcGxpY2VFdmVudElkPSIxMjM0IiBvdXRPZk5ldHdvcmtJbm
RpY2F0b3I9IjEiIHVuaXF1ZVByb2dyYW1JZD0iMCIgYXZhaWxOdW09IjAiPjxCcmVha0R1cmF0aW9uIGR1cmF0aW9uPSJQ
VDMwUyIvPjwvU3BsaWNlSW5zZXJ0PjwvU3BsaWNlSW5mb1NlY3Rpb24+PC9TaWduYWw+</Event>
</EventStream>
<AdaptationSet mimeType="video/mp4" segmentAlignment="true" startWithSAP="1" maxWidth="640" maxHeight=
"480" maxFrameRate="30000/1001" par="4:3">
<InbandEventStream schemeIdUri="urn:mpeg:dash:event:2012" value="1"/>
<SegmentTemplate timescale="90000" initialization="$RepresentationID$-Header-1513259339742.m4s"
media="$RepresentationID$-0-T-$Time$.m4s" presentationTimeOffset="146723273934">
<SegmentTimeline>
… manifest continues…
In this example, the content of the placement opportunity (SCTE-35) is encoded in XML/base64 URL. When decoding the orange part highlighted above, the following XML structure is given:
<?xml version="1.0" encoding="utf-8" ?>
<Signal>
<SpliceInfoSection scte35Point="146723272290">
<SpliceInsert spliceEventId="1234" outOfNetworkIndicator="1"
uniqueProgramId="0" availNum="0"><BreakDuration duration= "PT30S"/>
</SpliceInsert>
</SpliceInfoSection>
</Signal>
This information can then be used by downstream manifest manipulator, or directly by the player to understand a break of 30 seconds signaled via splice insert command is on-going at designated splice point time (scte35Point).
HSS Manifest sample
An example of conditioned HSS manifest is given below, with the conditioning info sent by Prisma highlighted in orange.
<?xml version="1.0" encoding="UTF-8"?>
<SmoothStreamingMedia MajorVersion="2" MinorVersion="0" Duration="0" TimeScale="10000000" IsLive="TRUE"
LookAheadFragmentCount="2" DVRWindowLength="330400000" CanSeek="TRUE" CanPause="TRUE">
<StreamIndex Name="video" Type="video" Subtype="AVC1" QualityLevels="1" Chunks="6" Url="QualityLevels
({bitrate})/Fragments(video_289_dvr_sparse={start time})">
<QualityLevel Index="0" Bitrate="800000" FourCC="AVC1" MaxWidth="640" MaxHeight="480"
CodecPrivateData="00000001674d401e965281407b7fe000800069c1414142800000000168ef3880"/>
<c t="16328969592666" d="30400000"/>
<c d="60000000"/>
<c d="60000000"/>
<c d="60000000"/>
<c d="60000000"/>
<c d="60000000"/>
</StreamIndex>
<StreamIndex Name="audio545" Language="deu" Type="audio" Subtype="AACL" QualityLevels="1" Chunks="6"
Url="QualityLevels({bitrate})/Fragments(audio_545_dvr={start time})">
<QualityLevel Index="0" Bitrate="48000" FourCC="AACL" SamplingRate="32000" Channels="2"
BitsPerSample="16" PacketSize="4" AudioTag="255" CodecPrivateData="1290"/>
<c t="16328970679000" d="30400000"/>
<c d="59840000"/>
<c d="60160000"/>
<c d="59840000"/>
<c d="60160000"/>
<c d="59840000"/>
</StreamIndex>
<StreamIndex Name="c35x_0" Type="text" Subtype="C35X" QualityLevels="1" ParentStreamIndex="video"
ManifestOutput="TRUE" Chunks="2" Url="QualityLevels({bitrate})/Fragments(c35x_0_dvr={start time})">
<QualityLevel Index="0" Bitrate="32" FourCC="C35X" CodecPrivateData=""/>
<c t="16329000869666" d="1">
<f>PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiID8+PFNpZ25hbEdyb3VwPjxTaWduYWxQb2lud
CBzaWduYWxQb2ludElkPSIiPjxTQ1RFMzVQb2ludERlc2NyaXB0b3IgYnJlYWtEdXJhdGlvbj0iUFQzMFMiIHNjdGUz
NVBvaW50PSIxNjMyOTAwMDg3MDAwMCI+PFNwbGljZUluZm8gc3BsaWNlQ29tbWFuZFR5cGU9IjUiPjxTcGxpY2VJbnN
lcnRJbmZvIHNwbGljZUV2ZW50SWQ9IjEyMzQiIG91dE9mTmV0d29ya0luZGljYXRvcj0iMSIgdW5pcXVlUHJvZ3JhbU
lkPSIwIiBhdmFpbE51bT0iMCIgZHVyYXRpb249IlBUMzBTIi8+PC9TcGxpY2VJbmZvPjwvU0NURTM1UG9pbnREZXNjc
mlwdG9yPjwvU2lnbmFsUG9pbnQ+PC9TaWduYWxHcm91cD4=</f>
</c>
</StreamIndex>
</SmoothStreamingMedia>
Similar to DASH, conditioning info is formatted in XML, and encoded in base64URL.