Table of Contents | ||
---|---|---|
|
Summary
Frequency's Javascript video player is built as an end all solution for short form video to support a myriad of third party players, media formats, advertising requirements, financial settlements, and reporting. This document describes the technical capabilities of the player.
Player can be loaded as html from https://static.frequency.com/player/<version>/index.html or as standalone js file http://static.frequency.com/player/<version>/_assets/interface.js
PlayerLite can be downloaded as javaScript file from https://static.frequency.com/player/<version>/_assets/playerLite.js
Conviva builds can be found using <version>_conviva
Version History
Version # | Description | Release Date |
---|---|---|
3.0.12 | Changes:
| April 23, 2018 |
3.0.11 | Changes:
| February 21, 2018 |
3.0.10 | Changes:
| February 12, 2018 |
3.0.9 | Changes:
| November 7, 2017 |
3.0.8 | Changes:
| November 2, 2017 |
3.0.7 | Changes
| October 27, 2017 |
3.0.5 | Changes
| October 27, 2017 |
3.0.2 | Changes
| October 23, 2017 |
3.0.0 | Changes:
Breaking changes:
| September 5, 2017 |
2.2.0 | Changes:
Bugfixes:
| September 1, 2017 |
2.1.2 | Changes
| August 19, 2017 |
2.1.1 | Changes
| July 19, 2017 |
2.1.0 | Changes
Bugfixes:
| July 11, 2017 |
2.0.4 | Bugfixes:
| March 23, 2017 |
2.0.3 | Bugfixes:
| March 16, 2017 |
2.0.2 | Bugfixes:
Breaking changes:
| February 22, 2017 |
Browsers & Device Support
Frequency's player is supported on the following browsers and devices.
Desktop Browser | Version | Mp4 | HLS | YouTube | Vimeo | DailyMotion |
---|---|---|---|---|---|---|
IE | 10+ | Yes | No | Yes | Yes | No |
Edge | 13+ | Yes | Yes | Yes | Yes | Yes |
FF | 30+ | Yes | 41+ | Yes | Yes | Yes |
Chrome | 35+ | Yes | Yes | Yes | Yes | Yes |
Opera | 30+ | Yes | Yes | Yes | Yes | Yes |
Safari | 6.2+ | Yes | Yes | Flash | Yes | Flash |
Mobile OS | Version | Mp4 | HLS | YouTube | Vimeo | DailyMotion |
---|---|---|---|---|---|---|
Android | 4.4+ | Yes | Yes | Yes | Yes | No |
iOS | 6.0+ | Yes | Yes | Yes | Yes | No |
Windows Phone | 8.1+ | Yes | No | Yes | Yes | Yes |
Players & Formats
The Frequency Javascript video player provides a Javascript class and a set of constructs that makes short form video playback with advertisement a simple task. The supported video formats are:
The sequence to using the Frequency JavaScript Player is as follows:
...
Code Block |
---|
var player = new Frequency.Player(); |
The player can be initialized with video and listener bindings so that it is one-shot ready to play or the player object can be constructed and setting the video to play and event listeners in subsequent method calls.
...
Fullscreen API support
The Frequency Javascript video player provides wrapper around Fullscreen API. Supported browsers:
Desktop Browser | Version |
---|---|
IE | 11+ |
Edge | 12+ |
FF | 10+ |
Chrome | 15+ |
Opera | 15+ |
Safari | 5.1+ |
Mobile OS | Version |
---|---|
Android | - |
iOS | - |
Windows Phone |
Demo
Frequency Player Demo
Player flow diagram
To operate correctly player requires connectivity to 3 additional services:
- API
- Ad decisioning server (DS)
- 3rd party services for VAST events
During player initialisation player is checking if provided session is still valid by calling API:
Code Block | ||||
---|---|---|---|---|
| ||||
curl 'http://qa-lgi-api.frequency.com/api/2.0/auth/session' -H 'x-frequency-auth: bdd6c80b-5fb8-4957-b140-a0c26747e45b' -H 'x-frequency-deviceid: 58f67176-743f-d762' --compressed |
Code Block | ||||
---|---|---|---|---|
| ||||
{ "country":"PL", "user_agent":"Paw/3.1.7", "device_id":"58f67176-743f-d762", "token":{ |
...
"token_access":"bdd6c80b-5fb8-4957-b140-a0c26747e45b", |
...
"token_refresh":"0c6d9018-8f4a-483b-9e35-dd21f2715748", "roles":[ |
...
|
...
"ROLE_ANONYMOUS", "ROLE_USER" ] |
...
},
"app_name":"telenet",
"app_id":"6394703612760826080",
"user_id":"6410435873178213705",
"session_id":"035c2005-761a-4c85-a1f6-9e3640c743ea",
"account_id":"6113878517855336672"
} |
When session is valid player stores account_id for future DS calls and is ready to load video feed. This is done by executing one of the functions:
- loadVideo
- loadChannel
- loadPlaylist
Example call looks like one below:
Code Block | ||||
---|---|---|---|---|
| ||||
curl 'http://qa-lgi-api.frequency.com/api/2.0/channels/6341811119618533518/videos' -H 'x-frequency-auth: bdd6c80b-5fb8-4957-b140-a0c26747e45b' -H 'x-frequency-deviceid: 58f67176-743f-d762' --compressed |
Code Block | ||||
---|---|---|---|---|
| ||||
{ "videos":[ |
...
{ "title":"Jeff Sessions Says U.S. May Use DNA Tests to Verify Family Relationships at Border", |
...
"description":"Attorney General Jeff Sessions may use DNA tests to verify the relationship between children and adults who cross the border illegally! Rob Smith (@robsmithonline) has all the details.", "resolution":"1280x720", |
...
"resolutions":null, |
...
"duration":59, "source":"Veuer", |
...
"score":0, "channel":{ |
...
"title":"Veuer", "channel_id":"6341811119618533518", |
...
"image_url":"https://qa-freq-images.frequency.com/channel/1rbhzt34412fd16ps1zgrx35f/original/1rbhzt34412fd16ps1zgrx35f.jpg" }, "video_id":"6415162182727646499", |
...
"content_partner_id":null, "image_url":"https://qa-freq-images.frequency.com/video/1p1gxhsswx8re1xi6lyzl1srs/original/1p1gxhsswx8re1xi6lyzl1srs.jpg", "media_url":"https://qa-freq-media.frequency.com/videos/6415162182727646499/C3VHmxAgS-G4.mp4", |
...
"media_type":"h264", "media_types":[ |
...
"h264", |
...
|
...
Add player event listeners.
Code Block |
---|
player.addEventListener(Frequency.Player.Events.onError, errorHandler);
player.addEventListener(Frequency.Player.Events.onProgress, progressHandler); |
Play the video.
Code Block |
---|
player.loadVideo('http://videoURL.mp4);
player.play(); |
...
Player Class
Player Constructor
Code Block |
---|
Frequency.Player(); Frequency.Player( undefined, {"hls" ], "deep_link":"frequency://video/6415162182727646499", "source_id":"video7316576222416856667", "source_url":"https://qa-freq-media.frequency.com/videos/6415162182727646499/1p1gxhsswx8re1xi6lyzl1srs.mp4", "meta_tags":null, "referrer_link":"http://www.frequency.com/video/jeff-sessions-says-u.s.-/6415162182727646499?cid=6341811119618533518", "ad_tag":null, video: { "ad_cue_points":[ } 0 ], events: { "date_publish":"2018-06-20T11:09:00Z", "date_available":"2018-06-20T11:28:26Z", "date_expired":null, "last_updated":"2018-06-20T11:28:26Z" }, (...) } ); |
Player Methods
play
Code Block |
---|
play() |
Plays the currently loaded video.
Parameters:
None
Returns:
void
pause
Code Block |
---|
pause() |
Pauses the currently playing video.
Parameters:
None
Returns:
void
seekTo
Code Block |
---|
seekTo(time:Number) |
Seeks to a specified time in the video.
Parameters:
time - The time position (in seconds) in the video to jump to.
Returns:
void
getDuration
Code Block |
---|
getDuration() |
Returns the duration of the currently playing video in seconds.
Parameters:
None
Returns:
Number - The video duration in seconds.
getState
Code Block |
---|
getState() |
Returns the video player's current play state.
Parameters:
None
Returns:
Number - The number representing the video playback state. (see video states).
getCurrentTime
Code Block |
---|
getCurrentTime() |
Returns the lapsed time since the video start in seconds.
Parameters:
None
Returns:
Number - The lapsed video playback time in seconds.
loadVideo
Code Block |
---|
loadVideo(url:String) |
Loads the video url specified by the url string. This does not auto play the video. The onMediaReady event would need to be monitored along with a subsequent video play() method call to cause the loaded video to play.
Parameters:
url - The url of the video to load.
Returns:
void
addEventListener
Code Block |
---|
addEventListener(event:String, callback:String) |
Adds a listener function for the specified event.
Parameters:
event - The event to register for listening. (See Player events)
callback - The event handler method of code block.
Returns:
void
removeEventListener
Code Block |
---|
removeEventListener(event:String, callback:String) |
Removes a listener function for the specified event.
Parameters:
event - The listening event. (See Player events)
callback - The event handler method or code block.
Returns:
void
Player Video Class
Player initialization
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
new Frequency.Player(], "page":{ "page_id":null, "page_size":30, "page_offset":"1", "page_mark":null } } |
For selected video player is creating DS call to fetch ad info. Request contains:
- video data
- session data
- counters object (see below)
- additional ad parameters described in plugins section of player
Code Block | ||||
---|---|---|---|---|
| ||||
curl 'http://qa-freq-ad-eu.frequency.com/2.1/ad_request' -H 'Content-Type: application/json; charset=utf-8' -H 'Accept: application/json' --data-binary '{"IMA":false,"session":{"account_id":"6113878517855336672","device_id":"58f67176-743f-d762","token_access":"bdd6c80b-5fb8-4957-b140-a0c26747e45b","user_id":"6410435873178213705"},"counters":{},"video":{"title":"Jeff Sessions Says U.S. May Use DNA Tests to Verify Family Relationships at Border","description":"Attorney General Jeff Sessions may use DNA tests to verify the relationship between children and adults who cross the border illegally! Rob Smith (@robsmithonline) has all the details.","resolution":"1280x720","resolutions":null,"duration":59,"source":"Veuer","score":0,"channel":{"title":"Veuer","channel_id":"6341811119618533518","image_url":"https://qa-freq-images.frequency.com/channel/1rbhzt34412fd16ps1zgrx35f/original/1rbhzt34412fd16ps1zgrx35f.jpg"},"video_id":"6415162182727646499","content_partner_id":null,"image_url":"https://qa-freq-images.frequency.com/video/1p1gxhsswx8re1xi6lyzl1srs/original/1p1gxhsswx8re1xi6lyzl1srs.jpg","media_url":"https://qa-freq-media.frequency.com/videos/6415162182727646499/C3VHmxAgS-G4.mp4","media_type":"h264","media_types":["h264","hls"],"deep_link":"frequency://video/6415162182727646499","source_id":"video7316576222416856667","source_url":"https://qa-freq-media.frequency.com/videos/6415162182727646499/1p1gxhsswx8re1xi6lyzl1srs.mp4","meta_tags":null,"referrer_link":"http://www.frequency.com/video/jeff-sessions-says-u.s.-/6415162182727646499?cid=6341811119618533518","ad_tag":null,"ad_cue_points":[0],"date_publish":"2018-06-20T11:09:00Z","date_available":"2018-06-20T11:28:26Z","date_expired":null,"last_updated":"2018-06-20T11:28:26Z"},"params":{"url":"//qa-freq-ad-eu.frequency.com","minBitrate":100,"maxBitrate":5000,"maxResolution":"720p","minResolution":"720p","deliveryProtocol":"https","format":"video/mp4","CHILD_DIRECTED_CONTENT":false},"device":{"DNT":1,"advertisingId":"","userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36","connectionType":"wifi","countryCode":"US","timeZone":-2,"locale":"en-US","language":"en","capability":["VPAID","VAST","MRAID"],"category":"desktop"},"application":{"name":"Web","domain":"com.frequency","storeLocation":"","bundle":"com.frequency.player-3.1"}}' --compressed |
This will produce JSON containing ad data or empty response if ad should not be displayed (more below)
Code Block | ||||
---|---|---|---|---|
| ||||
{ "VAST":{ "version":3, "ad":{ "id":"94691571", "inLine":{ "adSystem":"GDFP", "adTitle":"Mountain Dew NBA", "description":"Mountain Dew NBA ad", "error":[ "http://pubads.g.doubleclick.net/pagead/conversion/?ai=BHF2xXE0qW6CmD4qNxwLw_avABeHCp5JFAAAAEAEgq9bfKDgAWKPIhPGOA2Dp5JqP8Bq6ARMzMzZ4MjY5LDY0MHg0ODBfeG1syAEFwAIC4AIA6gIQLzEwNTkzNDA1MS9sZ2kuLvgC8NEekAPIBpgDrAKoAwHQBJBO4AQB0gUFEPPBky2QBgGgBiOoB5jOG9gHAeAHH9IICQiA4YBwEAEYAw&sigh=jqiKXXJbZho&label=videoplayfailed[ERRORCODE]" undefined, ], "impression":[ "http://pubads.g.doubleclick.net/pcs/view?xai=AKAOjsvdVj_cxz0fwuQcC65H3U2j_GegtDEvbT_z_JWt2zrFC361C4AJM885ooCz66XTeOYJ28lg_SyEA7nDuK61IZWXsevp_8GpXHilXGR9wap0vrndyInz7zpGviqyfX6qBACXqu1GjJ4CroW1Kdc55dS981D_J4hC_ZMspaDhd3MYAVL_6BX2pNXXoXjxUybye0VFtNdw9eAOwqG0HtEX_gsLO1ZeTzjFiEccluIVOC4&sig=Cg0ArKJSzEscm6_-DknEEAE&adurl=" ], "creatives":[ { video: "id":"107074364451", "sequence":1, "skipoffset":5, "duration":30, "trackingEvents":{ url: ' "start":[ "http://clipspubads.vorwaerts-gmbh.de/big_buck_bunny.mp4'g.doubleclick.net/pagead/conversion/?ai=BHF2xXE0qW6CmD4qNxwLw_avABeHCp5JFAAAAEAEgq9bfKDgAWKPIhPGOA2Dp5JqP8Bq6ARMzMzZ4MjY5LDY0MHg0ODBfeG1syAEFwAIC4AIA6gIQLzEwNTkzNDA1MS9sZ2kuLvgC8NEekAPIBpgDrAKoAwHQBJBO4AQB0gUFEPPBky2QBgGgBiOoB5jOG9gHAeAHH9IICQiA4YBwEAEYAw&sigh=jqiKXXJbZho&label=part2viewed&ad_mt=[AD_MT]" ], "firstQuartile":[ "http://pubads.g.doubleclick.net/pagead/conversion/?ai=BHF2xXE0qW6CmD4qNxwLw_avABeHCp5JFAAAAEAEgq9bfKDgAWKPIhPGOA2Dp5JqP8Bq6ARMzMzZ4MjY5LDY0MHg0ODBfeG1syAEFwAIC4AIA6gIQLzEwNTkzNDA1MS9sZ2kuLvgC8NEekAPIBpgDrAKoAwHQBJBO4AQB0gUFEPPBky2QBgGgBiOoB5jOG9gHAeAHH9IICQiA4YBwEAEYAw&sigh=jqiKXXJbZho&label=videoplaytime25&ad_mt=[AD_MT]" ], startPosition: 50 "midpoint":[ "http://pubads.g.doubleclick.net/pagead/conversion/?ai=BHF2xXE0qW6CmD4qNxwLw_avABeHCp5JFAAAAEAEgq9bfKDgAWKPIhPGOA2Dp5JqP8Bq6ARMzMzZ4MjY5LDY0MHg0ODBfeG1syAEFwAIC4AIA6gIQLzEwNTkzNDA1MS9sZ2kuLvgC8NEekAPIBpgDrAKoAwHQBJBO4AQB0gUFEPPBky2QBgGgBiOoB5jOG9gHAeAHH9IICQiA4YBwEAEYAw&sigh=jqiKXXJbZho&label=videoplaytime50&ad_mt=[AD_MT]" ], autoplay: true "thirdQuartile":[ } "http://pubads.g.doubleclick.net/pagead/conversion/?ai=BHF2xXE0qW6CmD4qNxwLw_avABeHCp5JFAAAAEAEgq9bfKDgAWKPIhPGOA2Dp5JqP8Bq6ARMzMzZ4MjY5LDY0MHg0ODBfeG1syAEFwAIC4AIA6gIQLzEwNTkzNDA1MS9sZ2kuLvgC8NEekAPIBpgDrAKoAwHQBJBO4AQB0gUFEPPBky2QBgGgBiOoB5jOG9gHAeAHH9IICQiA4YBwEAEYAw&sigh=jqiKXXJbZho&label=videoplaytime75&ad_mt=[AD_MT]" ], events: { "complete":[ onStateChange: function (state) { "http://pubads.g.doubleclick.net/pagead/conversion/?ai=BHF2xXE0qW6CmD4qNxwLw_avABeHCp5JFAAAAEAEgq9bfKDgAWKPIhPGOA2Dp5JqP8Bq6ARMzMzZ4MjY5LDY0MHg0ODBfeG1syAEFwAIC4AIA6gIQLzEwNTkzNDA1MS9sZ2kuLvgC8NEekAPIBpgDrAKoAwHQBJBO4AQB0gUFEPPBky2QBgGgBiOoB5jOG9gHAeAHH9IICQiA4YBwEAEYAw&sigh=jqiKXXJbZho&label=videoplaytime100&ad_mt=[AD_MT]" } ], onProgress: function (currentTime) { "mute":[ },(...) "http://pubads.g.doubleclick.net/pagead/conversion/?ai=BHF2xXE0qW6CmD4qNxwLw_avABeHCp5JFAAAAEAEgq9bfKDgAWKPIhPGOA2Dp5JqP8Bq6ARMzMzZ4MjY5LDY0MHg0ODBfeG1syAEFwAIC4AIA6gIQLzEwNTkzNDA1MS9sZ2kuLvgC8NEekAPIBpgDrAKoAwHQBJBO4AQB0gUFEPPBky2QBgGgBiOoB5jOG9gHAeAHH9IICQiA4YBwEAEYAw&sigh=jqiKXXJbZho&label=admute&ad_mt=[AD_MT]" ], "unmute":[ "http://pubads.g.doubleclick.net/pagead/conversion/?ai=BHF2xXE0qW6CmD4qNxwLw_avABeHCp5JFAAAAEAEgq9bfKDgAWKPIhPGOA2Dp5JqP8Bq6ARMzMzZ4MjY5LDY0MHg0ODBfeG1syAEFwAIC4AIA6gIQLzEwNTkzNDA1MS9sZ2kuLvgC8NEekAPIBpgDrAKoAwHQBJBO4AQB0gUFEPPBky2QBgGgBiOoB5jOG9gHAeAHH9IICQiA4YBwEAEYAw&sigh=jqiKXXJbZho&label=adunmute&ad_mt=[AD_MT]" } } ); |
Frequency.Player
Param | Type | Description |
---|---|---|
element | String or DOMNode | Node selector or DOMNode the player will be inserted into. |
options | Object | Frequency.Player.Options object |
Frequency.Player.Options
Param | Type | Description |
---|---|---|
video | Object | Frequency.Player.Options.Video object |
events | Object | Frequency.Player.Events object |
Frequency.Player.Options.Video
Param | Type | Description | Default |
---|---|---|---|
url | String | Video file URL. | |
startPosition | Number | Video start position. | 0 |
autoplay | Boolean | Player will/will not start playing right after loading video file. | false |
Events
Frequency.Player.Events
Event | Type | Description |
---|---|---|
onError | Function | An error occured. |
onReady | Function | JS player ready for actions. |
onMediaReady | Function | Media player ready. |
onStateChange | Function | Player state has changed. |
onProgress | Function | Players progress changed. |
States
State | Value | |
---|---|---|
UNKNOWN | undefined | Player state is unknown, player setup process did not finished. |
UNSTARTED | -1 | Player media ready but pending play action. |
ENDED | 0 | Player finished playback. |
PLAYING | 1 | Player is currently playing a video. |
PAUSED | 2 | Player paused. |
BUFFERING | 3 | Player is buffering. |
LOCKED | 4 | Player locked by internal action. |
Methods
Method | Return Type | Description |
---|---|---|
play() | Void | Plays the currently loaded video. |
pause() | Void | Pauses the currently playing video. |
seekTo(time:Number) | Void | Seeks to a specified time in the video (in seconds). |
getDuration() | Number | Returns the duration of the currently playing video (in seconds). |
getState() | Number | Returns video players current state. |
getCurrentTime() | Number | Returns the elapsed time since the video start (in seconds). |
loadVideo(url:String) | Void | Loads video url specified by url string. |
addEventListener(event:String, callback:String) | Void | Adds a listener function for the specified event (see: Player events). |
removeEventListener(event:String, callback:String) | Void | Removes a listener function for the specified event . |
],
"rewind":[
"http://pubads.g.doubleclick.net/pagead/conversion/?ai=BHF2xXE0qW6CmD4qNxwLw_avABeHCp5JFAAAAEAEgq9bfKDgAWKPIhPGOA2Dp5JqP8Bq6ARMzMzZ4MjY5LDY0MHg0ODBfeG1syAEFwAIC4AIA6gIQLzEwNTkzNDA1MS9sZ2kuLvgC8NEekAPIBpgDrAKoAwHQBJBO4AQB0gUFEPPBky2QBgGgBiOoB5jOG9gHAeAHH9IICQiA4YBwEAEYAw&sigh=jqiKXXJbZho&label=adrewind&ad_mt=[AD_MT]"
],
"pause":[
"http://pubads.g.doubleclick.net/pagead/conversion/?ai=BHF2xXE0qW6CmD4qNxwLw_avABeHCp5JFAAAAEAEgq9bfKDgAWKPIhPGOA2Dp5JqP8Bq6ARMzMzZ4MjY5LDY0MHg0ODBfeG1syAEFwAIC4AIA6gIQLzEwNTkzNDA1MS9sZ2kuLvgC8NEekAPIBpgDrAKoAwHQBJBO4AQB0gUFEPPBky2QBgGgBiOoB5jOG9gHAeAHH9IICQiA4YBwEAEYAw&sigh=jqiKXXJbZho&label=adpause&ad_mt=[AD_MT]"
],
"resume":[
"http://pubads.g.doubleclick.net/pagead/conversion/?ai=BHF2xXE0qW6CmD4qNxwLw_avABeHCp5JFAAAAEAEgq9bfKDgAWKPIhPGOA2Dp5JqP8Bq6ARMzMzZ4MjY5LDY0MHg0ODBfeG1syAEFwAIC4AIA6gIQLzEwNTkzNDA1MS9sZ2kuLvgC8NEekAPIBpgDrAKoAwHQBJBO4AQB0gUFEPPBky2QBgGgBiOoB5jOG9gHAeAHH9IICQiA4YBwEAEYAw&sigh=jqiKXXJbZho&label=adresume&ad_mt=[AD_MT]"
],
"fullscreen":[
"http://pubads.g.doubleclick.net/pagead/conversion/?ai=BHF2xXE0qW6CmD4qNxwLw_avABeHCp5JFAAAAEAEgq9bfKDgAWKPIhPGOA2Dp5JqP8Bq6ARMzMzZ4MjY5LDY0MHg0ODBfeG1syAEFwAIC4AIA6gIQLzEwNTkzNDA1MS9sZ2kuLvgC8NEekAPIBpgDrAKoAwHQBJBO4AQB0gUFEPPBky2QBgGgBiOoB5jOG9gHAeAHH9IICQiA4YBwEAEYAw&sigh=jqiKXXJbZho&label=adfullscreen&ad_mt=[AD_MT]"
],
"creativeView":[
"http://pubads.g.doubleclick.net/pagead/conversion/?ai=BHF2xXE0qW6CmD4qNxwLw_avABeHCp5JFAAAAEAEgq9bfKDgAWKPIhPGOA2Dp5JqP8Bq6ARMzMzZ4MjY5LDY0MHg0ODBfeG1syAEFwAIC4AIA6gIQLzEwNTkzNDA1MS9sZ2kuLvgC8NEekAPIBpgDrAKoAwHQBJBO4AQB0gUFEPPBky2QBgGgBiOoB5jOG9gHAeAHH9IICQiA4YBwEAEYAw&sigh=jqiKXXJbZho&label=vast_creativeview&ad_mt=[AD_MT]"
],
"exitFullscreen":[
"http://pubads.g.doubleclick.net/pagead/conversion/?ai=BHF2xXE0qW6CmD4qNxwLw_avABeHCp5JFAAAAEAEgq9bfKDgAWKPIhPGOA2Dp5JqP8Bq6ARMzMzZ4MjY5LDY0MHg0ODBfeG1syAEFwAIC4AIA6gIQLzEwNTkzNDA1MS9sZ2kuLvgC8NEekAPIBpgDrAKoAwHQBJBO4AQB0gUFEPPBky2QBgGgBiOoB5jOG9gHAeAHH9IICQiA4YBwEAEYAw&sigh=jqiKXXJbZho&label=vast_exit_fullscreen&ad_mt=[AD_MT]"
],
"acceptInvitationLinear":[
"http://pubads.g.doubleclick.net/pagead/conversion/?ai=BHF2xXE0qW6CmD4qNxwLw_avABeHCp5JFAAAAEAEgq9bfKDgAWKPIhPGOA2Dp5JqP8Bq6ARMzMzZ4MjY5LDY0MHg0ODBfeG1syAEFwAIC4AIA6gIQLzEwNTkzNDA1MS9sZ2kuLvgC8NEekAPIBpgDrAKoAwHQBJBO4AQB0gUFEPPBky2QBgGgBiOoB5jOG9gHAeAHH9IICQiA4YBwEAEYAw&sigh=jqiKXXJbZho&label=acceptinvitation&ad_mt=[AD_MT]"
],
"closeLinear":[
"http://pubads.g.doubleclick.net/pagead/conversion/?ai=BHF2xXE0qW6CmD4qNxwLw_avABeHCp5JFAAAAEAEgq9bfKDgAWKPIhPGOA2Dp5JqP8Bq6ARMzMzZ4MjY5LDY0MHg0ODBfeG1syAEFwAIC4AIA6gIQLzEwNTkzNDA1MS9sZ2kuLvgC8NEekAPIBpgDrAKoAwHQBJBO4AQB0gUFEPPBky2QBgGgBiOoB5jOG9gHAeAHH9IICQiA4YBwEAEYAw&sigh=jqiKXXJbZho&label=adclose&ad_mt=[AD_MT]"
],
"skip":[
"http://pubads.g.doubleclick.net/pagead/conversion/?ai=BHF2xXE0qW6CmD4qNxwLw_avABeHCp5JFAAAAEAEgq9bfKDgAWKPIhPGOA2Dp5JqP8Bq6ARMzMzZ4MjY5LDY0MHg0ODBfeG1syAEFwAIC4AIA6gIQLzEwNTkzNDA1MS9sZ2kuLvgC8NEekAPIBpgDrAKoAwHQBJBO4AQB0gUFEPPBky2QBgGgBiOoB5jOG9gHAeAHH9IICQiA4YBwEAEYAw&sigh=jqiKXXJbZho&label=videoskipped&ad_mt=[AD_MT]"
],
"progress":[
"http://pubads.g.doubleclick.net/pagead/conversion/?ai=BHF2xXE0qW6CmD4qNxwLw_avABeHCp5JFAAAAEAEgq9bfKDgAWKPIhPGOA2Dp5JqP8Bq6ARMzMzZ4MjY5LDY0MHg0ODBfeG1syAEFwAIC4AIA6gIQLzEwNTkzNDA1MS9sZ2kuLvgC8NEekAPIBpgDrAKoAwHQBJBO4AQB0gUFEPPBky2QBgGgBiOoB5jOG9gHAeAHH9IICQiA4YBwEAEYAw&sigh=jqiKXXJbZho&label=video_skip_shown&ad_mt=[AD_MT]",
"http://pubads.g.doubleclick.net/pagead/conversion/?ai=BHF2xXE0qW6CmD4qNxwLw_avABeHCp5JFAAAAEAEgq9bfKDgAWKPIhPGOA2Dp5JqP8Bq6ARMzMzZ4MjY5LDY0MHg0ODBfeG1syAEFwAIC4AIA6gIQLzEwNTkzNDA1MS9sZ2kuLvgC8NEekAPIBpgDrAKoAwHQBJBO4AQB0gUFEPPBky2QBgGgBiOoB5jOG9gHAeAHH9IICQiA4YBwEAEYAw&sigh=jqiKXXJbZho&label=video_engaged_view&ad_mt=[AD_MT]"
]
},
"adParameters":"deployment=devsite,sample_ct=skippablelinear",
"mediaFiles":[
{
"id":"GDFP",
"delivery":"progressive",
"width":"1280",
"height":"720",
"type":"video/mp4",
"bitrate":"1383",
"scalable":"true",
"maintainAspectRatio":"true",
"url":"http://redirector.gvt1.com/videoplayback/id/133827f22597d9ad/itag/22/source/gfp_video_ads/acao/yes/mime/video%2Fmp4/ip/0.0.0.0/ipbits/0/expire/1529520572/sparams/ip,ipbits,expire,id,itag,source,acao,mime/signature/64EFDDA91086C08874D6578EC67670819C6CFECC.08E71F290F6BA79E41C2E53A3F5E5838965D955F/key/ck2/file/file.mp4"
}
],
"videoClicks":{
"clickThrough":"http://pubads.g.doubleclick.net/pcs/click?xai=AKAOjssrwKE5tRgppmtIua9Gbn5CFpK-fKKhsF9mc-YDeYK4Eycg3BShVD9mapIpOs4De5c7SSHPIVjD848DTHsiLNKEyH2hRFM8z1SQCRSsHXNTsUIvXSPGeiqldBZ3xRNV4ml3g-hibRWfaA7dAsMdAS2kem-rmkLaxMD7HAc_Kl_FLoBowTbJYLFX-Sz2ZXGssEDaHn4Fpc2SK3xvblW2h6fjZgiXxAF093q7&sig=Cg0ArKJSzHcKKy8z9YPN&adurl=http://www.frequency.com/"
}
}
]
}
}
}
} |
All 3rd party trackers needs to be handled by player:
- trackingEvents
- impressions
- errors (with appropriate error code)
More information about above trackers can be found in iAB VAST 3.0 specification
Counters object - DS can serve advertisements with different frequencies depending on video source. Counters object contains information about already played videos and their sources. After playing video from above example next DS call should have:
Code Block | ||||
---|---|---|---|---|
| ||||
counters:{
Veuer: 1
} |
When player finishes to play ad video playback starts. During the playback player needs to send following activities:
- start
- watch10 (after first 10 seconds of continues playback)
- complete
Code Block | ||||
---|---|---|---|---|
| ||||
// Sample calls for video activities
curl 'http://qa-lgi-api.frequency.com/api/2.0/activities/video/start' -H 'x-frequency-auth: bdd6c80b-5fb8-4957-b140-a0c26747e45b' -H 'content-type: application/json; charset=utf-8' -H 'accept: application/json' -H 'x-frequency-deviceid: 58f67176-743f-d762' --data-binary '{"video_id":"6415186034672079864"}' --compressed
curl 'http://qa-lgi-api.frequency.com/api/2.0/activities/video/watch10' -H 'x-frequency-auth: bdd6c80b-5fb8-4957-b140-a0c26747e45b' -H 'content-type: application/json; charset=utf-8' -H 'accept: application/json' -H 'x-frequency-deviceid: 58f67176-743f-d762' --data-binary '{"video_id":"6415186034672079864"}' --compressed
curl 'http://qa-lgi-api.frequency.com/api/2.0/activities/video/complete' -H 'x-frequency-auth: bdd6c80b-5fb8-4957-b140-a0c26747e45b' -H 'content-type: application/json; charset=utf-8' -H 'accept: application/json' -H 'x-frequency-deviceid: 58f67176-743f-d762' --data-binary '{"video_id":"6415186034672079864"}' --compressed |