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&sessionid=10e1b19a71-ef46c8e3-3e50-4778-b792-f55ee9cf99c3" media="INVALID?serviceid=e6b4b2a746ed40e1d89a78b319137024&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&sessionid=10e1b19a71-ef46c8e3-3e50-4778-b792-f55ee9cf99c3" media="INVALID?serviceid=e6b4b2a746ed40e1d89a78b319137024&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.
Updated about 1 year ago