Manage patterns and templating
When a placement opportunity is detected, Stream Personalization connects to an Ad decision system and sends the information that qualifies the ad break opportunity. Information types include: ad break duration, the identifier of detected break, the user identifier, device etc.
Stream Personalization automatically retrieves information from two different sources:
- The manifest URL request (query parameter, and request header)
- The manifest content, with splice information embedded (SCTE-35 for instance)
Tags from user URL request query parameter
A manifest request URL (sent by the viewer) is usually made of the path to the manifest itself, to which query parameters are appended. An example is given below:
http://my-cdn-domain/some-path/myChannel/index.m3u8?userid=1234&device=iOS
Stream Personalization automatically detects query parameters (regardless of the quantity) for use when sending an outbound request. For example, an outbound request to a decision server.
Example: The query parameters userid and device values are accessed as follows: {query.userid}
and {query.device}
Tags from the manifest splice
Upon SCTE-35 ad break signaling, the information from the SCTE-35 splice is embedded into DASH, HLS or HSS manifest. MFPZ automatically retrieves key information from the splice.
SCTE-35 | MFPZ mapping | Description |
---|---|---|
Splice_event_id | {splice.id} | Unique id of the ad break/splice event. |
Break_duration() | {splice.breakDuration} | Ad break duration in terms of ticks of the program’s 90 kHZ clock. |
Break_duration() | {splice.breakDuration} | Ad break duration in terms of ticks of the program’s 90 kHZ clock. |
N/A | {splice.breakDurationSeconds} | Break duration translated in seconds instead of program’s 90kHZ clock. |
N/A | {splice.breakDurationMilliseconds} | Break duration translated in milliseconds instead of program’s 90kHZ clock. |
N/A | {splice.breakDurationISO} | Break duration translated in ISO format instead of program’s 90kHZ clock. |
splice_command_type | {splice.type } | Type of splice command. Depending on the value, this will refer to splice_insert(), time_signal() etc. (see standard for exhaustive list of commands supported). |
avail_num | {splice.availNum} | Avail number |
Segmentation_type_id | {splice.segmentationTypeId} | Value used to determine whether the splice indicates a program start/end, placement opportunity start/end etc. (see standard for all possible values). |
Segmentation_descriptor() | {splice.segmentationDescriptor} | Segmentation descriptor raw data bytes. These raw data can be used by 3rd party component to manage ad-hoc parsing. |