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
startTimevalues are relative to the beginning of the playback session. The beginning of the playback session is defined as time zero. The ad'sstartTimeis the sum of the cumulative values of all theEXT-INFsegment durations leading up to the avail. The media-sequence number of the segment that the ad or tracking event falls on also corresponds to theadIdoreventIdin the client-side tracking response. -
DASH:
-
Live/dynamic manifests - The
startTimevalues are relative to theMPD@availabilityStartTimeof the DASH manifest. TheMPD@avaibilityStartTimeis a timing anchor for all MediaTailor sessions that consume the stream. -
VOD/static manifests - The
startTimevalues 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 ownPeriodelement. ThePeriodelement has a@startattribute with a value that's the same as thestartTimevalues in the client-side tracking payload. ThePeriodIdalso corresponds to theadIdoreventIdin 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