Configure Input & Output

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 containing live-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.

Note: 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 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:

TypeHLSMPEG-DASHHSS
MediaKind#EXT-X-CUE-OUT
#EXT-X-CUE-SPAN
#EXT-X-CUE-IN
SCTE-35/XML encoded in base64, embedded in eventStream mpdSCTE-35/XML encoded in base64, in sparse track

Apple HLS

To configure Apple HLS, follow these steps:

  1. Click the Input tab and configure the different fields as follows:

    ParameterDescription
    Primary base URLBase 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 URLSecondary source manifest endpoint from where PRISMA Stream Personalization can fetch HLS manifest in case Primary is down.
    Master playlist nameTo 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 typeSelect 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 HLS Input configuration

  2. Click the Output tab and configure the different fields as follows:

    ParameterDescription
    Playlist base URLBase 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 URLHLS 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 HLS output configuration

MPEG-DASH

To configure MPEG-DASH, follow these steps:

  1. Click the Input tab and configure the different fields as follows:

    ParameterDescription
    Primary base URLBase 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 URLSecondary source manifest endpoint from where PRISMA Stream Personalization can fetch DASH MPD manifest in case Primary is down.
    Marker typeSelect 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).

  2. Click the Output tab and configure the different fields as follows:

    ParameterDescription
    Manifest base URLBase 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 URLDash 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 Dash output configuration

Microsoft Smooth Streaming (HSS)

To configure HSS, follow these steps:

  1. Click the Input tab and configure the different fields as follows:

    ParameterDescription
    Primary base URLBase 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 URLSecondary source manifest endpoint from where PRISMA Stream Personalization can fetch HSS manifest in case Primary is down.
    Marker typeSelect 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 HSS input configuration

  2. Click the Output tab and configure the different fields as follows:

    ParameterDescription
    Manifest base URLBase 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 URLHSS segments must be retrieved from the CDN, and not locally from the packager. This setting allows overriding HSS segments distribution URL.

    HSS output configuration HSS output configuration