Pre-rolls
The specific query-string trigger is a general escape query part ewm=1
which
will make nginx forward the request to the ew-manip
server. Pre-rolls assets
are then added in VoD with the query parameter pre=<URL>
. The <URL>
must be
the absolute public URL that the client uses to fetch the preroll video, since
this URL will be inserted in the combined manifest delivered to the client.
A complete request, to combine preroll-bumper
with program
could look like
this:
http://repack-host/__cl/s:vod/__c/program/__op/default/__f/index.m3u8?ewm=1&pre=https://public-repack-host/__cl/s:vod/__c/preroll-bumper/__op/default/__f/index.m3u8
Multiple pre=
query parts can be added to combine more than two manifests. The
service will then fetch all the manifests from the repackager and combine them
into the appropriate manifest with multiple periods for DASH or multiple parts
separated by discontinuities for HLS.
DASH manifest URLs look similar but must have the file extension .mpd
. HLS
playlist must have the file extension .m3u8
.
Limitations
DASH and HLS URLs cannot be combined with each other. For DASH, any assets can be combined, but for the best user experience it is reasonable to apply similar critera as for HLS. For HLS the following criteria must be met:
HLS Playlist Matching Criteria
In brief, the main and all the pre-roll master playlist(s) must match each other.
In detail, this means that:
For Renditions identified by
#EXT-X-MEDIA:
For each rendition in the main playlist, there must be exactly one corresponding rendition in each pre-roll playlist, and the following attributes (when present) must match exactly:TYPE
, andLANGUAGE
. Unmatched renditions in the pre-rolls will be discarded.- When matching renditions, in addition to the criteria mentioned above,
ew-manip
will match a rendition in the main playlist with the closest bitrate (without duplicate matching)
- When matching renditions, in addition to the criteria mentioned above,
For Variant streams identified by
#EXT-X-STREAM-INF:
For each variant stream in the main playlist, there must be exactly one corresponding variant stream in each pre-roll playlist, and the following attributes (when present) must match exactly:RESOLUTION
,FRAME-RATE
,CODECS
,AUDIO
,VIDEO
andSUBTITLES
. Unmatched variant streams in the pre-rolls will be discarded.For I-frame playlists identified by
#EXT-X-I-FRAME-STREAM-INF:
For each I-frame playlist in the main master playlist, there must be exactly one corresponding I-frame playlist in each pre-roll master playlist, and the following attributes (when present) must match exactly:RESOLUTION
andCODECS
. Unmatched I-frame playlists in the pre-rolls will be discarded.
Playlist requests where the main and pre-roll master playlists do not meet all
of the above criteria, will fail with an HTTP 400
error.
HLS Stream and Playlist Matching by Bandwidth
Typically there will be several variant streams that meet these criteria and
only differ in BANDWIDTH
. Within such matching groups (for example streams
with the same resolution) the main and pre-roll streams are paired together by
being sorted by bandwidth in decreasing order. The same pairing method is used
for I-frame playlists.