Manifest conditioned examples

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.