Ad-tracking activity timing
With client-side reporting, the player must emit tracking events (beacons) with a level of precision. Using the MediaTailor client-side tracking schema, you can ensure that, for every avail, ad, companion, overlay, and tracking events, timing and duration information is present, and in different forms.
Use the following MediaTailor key/value pairs for the player to accurately reconcile ad-event activities, such as tracking events, with playback position:
HLS and DASH implement the value of startTime
and
startTimeInSeconds
differently:
-
HLS - The
startTime
values are relative to the beginning of the playback session. The beginning of the playback session is defined as time zero. The ad'sstartTime
is the sum of the cumulative values of all theEXT-INF
segment durations leading up to the avail. The media-sequence number of the segment that the ad or tracking event falls on also corresponds to theadId
oreventId
in the client-side tracking response. -
DASH:
-
Live/dynamic manifests - The
startTime
values are relative to theMPD@availabilityStartTime
of the DASH manifest. TheMPD@avaibilityStartTime
is a timing anchor for all MediaTailor sessions that consume the stream. -
VOD/static manifests - The
startTime
values are relative to the beginning of the playback session. The beginning of the playback session is defined as time zero. Each ad inside the avail is contained inside its ownPeriod
element. ThePeriod
element has a@start
attribute with a value that's the same as thestartTime
values in the client-side tracking payload. ThePeriodId
also corresponds to theadId
oreventId
in the client-side tracking response.
-
Example : HLS
In the following example, the MediaTailor session started, and the following manifest is the first one served to the client:
#EXTM3U #EXT-X-VERSION:6 #EXT-X-TARGETDURATION:6 #EXT-X-MEDIA-SEQUENCE:4603263 #EXT-X-DISCONTINUITY-SEQUENCE:0 #EXT-X-PROGRAM-DATE-TIME:2023-05-03T21:24:23.295678Z #EXTINF:4.010667, https://123.cloudfront.net/out/v1/index_1_34.ts #EXT-X-PROGRAM-DATE-TIME:2023-05-03T21:24:27.306345Z #EXTINF:4.010667, https://123.cloudfront.net/out/v1/index_1_35.ts #EXT-X-PROGRAM-DATE-TIME:2023-05-03T21:24:31.317012Z #EXTINF:4.010667, https://123.cloudfront.net/out/v1/index_1_36.ts #EXT-X-PROGRAM-DATE-TIME:2023-05-03T21:24:35.327679Z #EXTINF:4.010667, https://123.cloudfront.net/out/v1/index_1_37.ts #EXT-X-PROGRAM-DATE-TIME:2023-05-03T21:24:39.338346Z #EXTINF:2.538667, https://123.cloudfront.net/out/v1/index_1_38.ts #EXT-X-DISCONTINUITY #EXT-X-KEY:METHOD=NONE #EXT-X-PROGRAM-DATE-TIME:2023-05-03T21:24:41.453Z #EXTINF:2.0, https://123.cloudfront.net/tm/asset_1080_4_8_00001.ts #EXT-X-PROGRAM-DATE-TIME:2023-05-03T21:24:43.453Z #EXTINF:2.0, https://123.cloudfront.net/tm/asset_1080_4_8_00002.ts #EXT-X-PROGRAM-DATE-TIME:2023-05-03T21:24:45.453Z #EXTINF:2.0, https://123.cloudfront.net/tm/asset_1080_4_8_00003.ts
In the client-side tracking JSON payload, the following values apply:
-
startTime
:"PT18.581355S"
-
startTimeInSeconds
:18.581
-
availProgramDateTime
:"2023-05-03T21:24:41.453Z"
-
adId
:4603269
Example : DASH
In the following example, the MediaTailor session gets a midroll in the manifest. Note that the
@start
attribute value of the second period, which is the ad period, has a
value that's relative to the MPD@availabilityStartTime
value. This value is the
one that MediaTailor writes into the client-side tracking response startTime
fields,
for all sessions.
<?xml version="1.0" encoding="UTF-8"?> <MPD availabilityStartTime="2022-10-05T19:38:39.263Z" minBufferTime="PT10S" minimumUpdatePeriod="PT2S" profiles="urn:mpeg:dash:profile:isoff-live:2011" publishTime="2023-05-03T22:06:48.411Z" suggestedPresentationDelay="PT10S" timeShiftBufferDepth="PT1M30S" type="dynamic" xmlns="urn:mpeg:dash:schema:mpd:2011" xmlns:scte35="urn:scte:scte35:2013:xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:mpeg:dash:schema:mpd:2011 http://standards.iso.org/ittf/PubliclyAvailableStandards/MPEG-DASH_schema_files/DASH-MPD.xsd"> <BaseURL>https://123.channel-assembly.mediatailor.us-west-2.amazonaws.com/v1/channel/my-channel/</BaseURL> <Location>https://123.cloudfront.net/v1/dash/94063eadf7d8c56e9e2edd84fdf897826a70d0df/MediaTailor-Live-HLS-DASH/channel/channel1/dash.mpd?aws.sessionId=794a15e0-2a7f-4941-a537-9d71627984e5</Location> <Period id="1683151479166_1" start="PT5042H25M59.903S" xmlns="urn:mpeg:dash:schema:mpd:2011"> <BaseURL>https://123.cloudfront.net/out/v1/f1a946be8efa45b0931ea35c9055fb74/ddb73bf548a44551a0059c346226445a/eaa5485198bf497284559efb8172425e/</BaseURL> <AdaptationSet ...> ... </AdaptationSet> </Period> <Period id="1683151599194_1_1" start="PT5042H27M59.931S"> <BaseURL>https://123.cloudfront.net/tm/94063eadf7d8c56e9e2edd84fdf897826a70d0df/fpc5omz5wzd2rdepgieibp23ybyqyrme/</BaseURL> <AdaptationSet ...> ... </AdaptationSet> </Period> </MPD>
In the client-side tracking JSON payload, the following values apply:
-
startTime
:"PT5042H27M59.931S"
-
startTimeInSeconds
:18152879.931
-
availProgramDateTime
:null
-
adId
:1683151599194_1_1