Content Replacement specifics

What Manifest Manipulation logic broadpeak.io implements for Content Replacement

In Content Replacement applications, substitute content is scheduled as slots for replacement in a live stream. Therefore it relies on the Substitution logic.

If the source scheduled is not available

DASH

If at the time where the manifest manipulation happens the manifest of the program scheduled is not available, the process of contextualisation cannot happen. As a result, the manifest will display a new period which reflects the beginning and the end of the slot, while the media segment will reference dummy media segment represented by "BLACKOUTED/INVALID" string in the manifest. The player should stop playing.

 <Period id="1_1688558400.000000000" duration="PT1H2.016020834S">
    <BaseURL>BLACKOUTED</BaseURL>
    <AdaptationSet id="1" group="1" contentType="audio" lang="da" segmentAlignment="true" audioSamplingRate="48000" mimeType="audio/mp4" codecs="mp4a.40.2" startWithSAP="1">
      <AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2" />
      <Role schemeIdUri="urn:mpeg:dash:role:2011" value="main" />
      <SegmentTemplate timescale="48000" presentationTimeOffset="81050803044833" initialization="INVALID?serviceid=e6b4b2a746ed40e1d89a78b319137024&amp;sessionid=10e1b19a71-ef46c8e3-3e50-4778-b792-f55ee9cf99c3" media="INVALID?serviceid=e6b4b2a746ed40e1d89a78b319137024&amp;sessionid=10e1b19a71-ef46c8e3-3e50-4778-b792-f55ee9cf99c3">
        <SegmentTimeline>
          <S d="96256" t="81050803044833" r="29"/>
        </SegmentTimeline>
      </SegmentTemplate>
      <Representation id="audio_181986_dan=179200" bandwidth="179200" />
    </AdaptationSet>
    <AdaptationSet id="2" group="2" contentType="video" par="16:9" minBandwidth="1079200" maxBandwidth="5895600" maxWidth="1920" maxHeight="1080" minFrameRate="25" maxFrameRate="50" segmentAlignment="true" sar="1:1" mimeType="video/mp4" startWithSAP="1">
      <Role schemeIdUri="urn:mpeg:dash:role:2011" value="main" />
      <SegmentTemplate timescale="600" presentationTimeOffset="1013135038054" initialization="INVALID?serviceid=e6b4b2a746ed40e1d89a78b319137024&amp;sessionid=10e1b19a71-ef46c8e3-3e50-4778-b792-f55ee9cf99c3" media="INVALID?serviceid=e6b4b2a746ed40e1d89a78b319137024&amp;sessionid=10e1b19a71-ef46c8e3-3e50-4778-b792-f55ee9cf99c3">
        <SegmentTimeline>
          <S t="1013135038054" d="1200" r="29" />
        </SegmentTimeline>
      </SegmentTemplate>
      <Representation id="video=1079200" bandwidth="1079200" width="1024" height="576" frameRate="25" codecs="avc1.428028" scanType="progressive" />
      <Representation id="video=1896400" bandwidth="1896400" width="1024" height="576" frameRate="25" codecs="avc1.640029" scanType="progressive" />
      <Representation id="video=3341600" bandwidth="3341600" width="1280" height="720" frameRate="50" codecs="avc1.4D4028" scanType="progressive" />
      <Representation id="video=4363200" bandwidth="4363200" width="1280" height="720" frameRate="50" codecs="avc1.4D4029" scanType="progressive" />
      <Representation id="video=5895600" bandwidth="5895600" width="1920" height="1080" frameRate="50" codecs="avc1.4D4032" scanType="progressive" />
    </AdaptationSet>
  </Period>

HLS

If at the time where the manifest manipulation happens the manifest of the program scheduled is not available, the process of contextualisation cannot happen. As a result, the manifest will display a discontinuity EXT-X-DISCONTINUITY tag at the beginning and the end of the slot, while the media segment will reference dummy media segment represented by "BLACKOUTED/INVALID" string in the manifest. The player should stop playing.

#EXTM3U
#EXT-X-VERSION:4
#EXT-X-PLAYLIST-TYPE:VOD
#EXT-X-INDEPENDENT-SEGMENTS
#EXT-X-MEDIA-SEQUENCE:1
#EXT-X-TARGETDURATION:6
#EXT-X-PROGRAM-DATE-TIME:2023-07-05T11:41:54.756698+00:00
#EXTINF:6, no desc
DR2-audio_181986_dan=179200-video=1079200-281426397.ts?serviceid=e6b4b2a746ed40e165a7044070857d0f&sessionid=10d1c90b13-d760ccc2-b649-4265-8591-eb7ccdbbc526
#EXTINF:6, no desc
DR2-audio_181986_dan=179200-video=1079200-281426398.ts?serviceid=e6b4b2a746ed40e165a7044070857d0f&sessionid=10d1c90b13-d760ccc2-b649-4265-8591-eb7ccdbbc526
#EXTINF:6, no desc
DR2-audio_181986_dan=179200-video=1079200-281426399.ts?serviceid=e6b4b2a746ed40e165a7044070857d0f&sessionid=10d1c90b13-d760ccc2-b649-4265-8591-eb7ccdbbc526

#EXT-X-DISCONTINUITY
#EXT-X-PROGRAM-DATE-TIME:2023-07-05T11:59:54.756698+00:00
#EXTINF:6, no desc
BLACKOUTED/INVALID?serviceid=e6b4b2a746ed40e165a7044070857d0f&sessionid=10d1c90b13-d760ccc2-b649-4265-8591-eb7ccdbbc526
#EXTINF:6, no desc
BLACKOUTED/INVALID?serviceid=e6b4b2a746ed40e165a7044070857d0f&sessionid=10d1c90b13-d760ccc2-b649-4265-8591-eb7ccdbbc526
#EXTINF:6, no desc
BLACKOUTED/INVALID?serviceid=e6b4b2a746ed40e165a7044070857d0f&sessionid=10d1c90b13-d760ccc2-b649-4265-8591-eb7ccdbbc526
#EXTINF:6, no desc

#EXT-X-DISCONTINUITY
#EXT-X-PROGRAM-DATE-TIME:2023-07-05T12:59:54.756698+00:00
#EXTINF:6, no desc
DR2-audio_181986_dan=179200-video=1079200-2814263111.ts?serviceid=e6b4b2a746ed40e165a7044070857d0f&sessionid=10d1c90b13-d760ccc2-b649-4265-8591-eb7ccdbbc526
#EXTINF:6, no desc
DR2-audio_181986_dan=179200-video=1079200-2814263112.ts?serviceid=e6b4b2a746ed40e165a7044070857d0f&sessionid=10d1c90b13-d760ccc2-b649-4265-8591-eb7ccdbbc526

If HLS variant streams are incompatible

If the original stream and the replacement stream have significant differences that prevent broadpeak.io to find applicable matches, no contextualization can take place.

The behavior will then be the same as for when the Source is not available.