Configure input and output
Before proceeding to the Input and Output tab configuration, let’s explain how Stream Personalization builds manifest to retrieve source manifest from the initial viewer request. An illustration is given hereafter:
From a service/operator point of view, manifest URLs for various channels (here channel1, channel2 and channel3) usually follow a well-defined structure like for instance: http://cdn.com/live-hls/channel1/index.m3u8
. All live channels are likely to follow the same structure, the only variable being the channel name (channel1, channel2…).
The same applies for manifests generated locally by the packager with URLs like for instance: http://packager/hls/channel1/index.m3u8
. In addition, those channels are likely to share common attributes like replacement strategy, streaming protocol etc. Configuring one stream personalization service per channel would thus not make sense.
Stream Personalization has been designed to manage multiple live and VOD services from a single service configuration, via the following concepts:
- Playlist Base URL: this is the portion of the viewer manifest request that serves as a (unique) key for a given stream personalization service. In above example, it would be
live-hls
.
When receiving a manifest request containinglive-hls
, Stream Personalization knows which service shall process this request. - Packager base URL: instead of configuring each live channel URL, a base URL is configured, in our example:
http://packager/hls
.
When stream personalization receives a request with a matching Playlist base URL, it appends to the Packager base URL the portion right after the Playlist Base URL.
In our example, the portion right after the Playlist Base URL is channel1/index.m3u8
. appending this to the packager Base URL allows Stream Personalization to automatically compute the access to the source manifest, that is: http://packager/hls/channel1/index.m3u8
.
The next sections describe how to configure Apple HLS, MPEG-DASH and Microsoft Smooth Streaming (HSS) input and output configuration.
Configurations are similar, with minor variations (depending on the streaming protocol choice).
Detect placement opportunity: Markers
Placement opportunities are signaled in source manifest via markers. Multiple types of marker exist for each streaming protocol.
A source manifest example generated by the packager is illustrated below:
HLS Markers example
In this example, the ad break is delineated using MediaKind-defined HLS tags:
#EXT-X-CUE-OUT
: identify the first segment belonging the ad break#EXT-X-CUE-SPAN
: identify intermediate segments#EXT-X-CUE-IN
: return to content
Other tags may be used, and Stream Personalization can adapt leveraging its plugin capabilities, which provide the ability to add new types of HLS markers for ad replacement/blackout management purposes. As an example, AWS uses the following tags:
#EXT-X-CUE-OUT
#EXT-X-CUE-OUT-CONT
#EXT-X-CUE-IN
A summary of supported MediaKind markers for the different streaming protocols is given below:
Type | HLS | MPEG-DASH | HSS |
---|---|---|---|
MediaKind | #EXT-X-CUE-OUT #EXT-X-CUE-SPAN #EXT-X-CUE-IN | SCTE-35/XML encoded in base64, embedded in eventStream mpd | SCTE-35/XML encoded in base64, in sparse track |
Apple HLS
To configure Apple HLS, follow these steps:
-
Click the Input tab and configure the different fields as follows:
Parameter Description Primary base URL Base path URL where HLS manifests are fetched from. This can be configured as static URL, hostname, FQDN.
As explained earlier, this base URL is completed with information from the initial viewer request to build the complete path to the live or VOD manifest.Secondary base URL Secondary source manifest endpoint from where PRISMA Stream Personalization can fetch HLS manifest in case Primary is down. Master playlist name To handle specific naming strategy, HLS master playlist name shall be configured. Usually index.m3u8
but it can be anything with.m3u8
at the end.Marker type Select the format used to convey ad break information.-Select MediaKind (default marker type) or select a POIS plugin in the drop-down list for specific markers (see Manage Stream Personalization plugins). HLS Input configuration
-
Click the Output tab and configure the different fields as follows:
Parameter Description Playlist base URL Base URL from the initial viewer playlist request. This setting is used for filtering incoming request: in case received request does not match a given Stream Personalization service, it will be rejected.
This parameter is unique across all Stream Personalization service: indeed, only one Stream Personalization service shall process the incoming request, otherwise this will lead to internal processing conflict.Segment Base Distribution URL HLS fragments must be retrieved from the CDN, and not locally from the packager. This setting allows overriding HLS chunks distribution URL.
The URL can be templated using information from query parameters.
Example:https://{query.edgeID}lab.eu/dai/live-hls/{query.session}
.HLS output configuration
MPEG-DASH
To configure MPEG-DASH, follow these steps:
-
Click the Input tab and configure the different fields as follows:
Parameter Description Primary base URL Base path URL where HLS manifests are fetched from. This can be configured as static URL, hostname, FQDN.
As explained earlier, this base URL is completed with information from the initial viewer request to build the complete path to the live or VOD manifest.Secondary base URL Secondary source manifest endpoint from where PRISMA Stream Personalization can fetch DASH MPD manifest in case Primary is down. Marker type Select the format used to convey ad break information.-Select MediaKind (default marker type) or select a POIS plugin in the drop-down list for specific markers (see Manage Stream Personalization plugins). -
Click the Output tab and configure the different fields as follows:
Parameter Description Manifest base URL Base URL from the initial viewer playlist request. This setting is used for filtering incoming request: in case received request does not match a given Stream Personalization service, it will be rejected.
This parameter is unique across all Stream Personalization service: indeed, only one Stream Personalization service shall process the incoming request, otherwise this will lead to internal processing conflict.Segment Base Distribution URL Dash fragments must be retrieved from the CDN, and not locally from the packager. This setting allows overriding HLS chunks distribution URL.
The URL can be templated using information from query parameters.
Example:https://{query.edgeID}lab.eu/dai/live-dash/{query.session}
.Dash output configuration
Microsoft Smooth Streaming (HSS)
To configure HSS, follow these steps:
-
Click the Input tab and configure the different fields as follows:
Parameter Description Primary base URL Base path URL where HLS manifests are fetched from. This can be configured as static URL, hostname, FQDN.
As explained earlier, this base URL is completed with information from the initial viewer request to build the complete path to the live or VOD manifest.Secondary base URL Secondary source manifest endpoint from where PRISMA Stream Personalization can fetch HSS manifest in case Primary is down. Marker type Select the format used to convey ad break information.-Select MediaKind (default marker type) or select a POIS plugin in the drop-down list for specific markers (see Manage Stream Personalization plugins). HSS input configuration
-
Click the Output tab and configure the different fields as follows:
Parameter Description Manifest base URL Base URL from the initial viewer playlist request. This setting is used for filtering incoming request: in case received request does not match a given Stream Personalization service, it will be rejected.
This parameter is unique across all Stream Personalization service: indeed, only one Stream Personalization service shall process the incoming request, otherwise this will lead to internal processing conflict.Segment Base Distribution URL HSS segments must be retrieved from the CDN, and not locally from the packager. This setting allows overriding HSS segments distribution URL. HSS output configuration