Vast-Player makes it easy to playback linear VAST creatives in the browser. It currently supports VPAID 1.0/2.0 (JavaScript and Flash) and HTML5 <MediaFile>
s. The library has the following responsibilites:
<MediaFile>
based on the browser environment<MediaFile>
(including VPAID creatives)<VideoClicks>
when appropriate<!DOCTYPE html>
<html>
<head>
<title>Vast-Player Example</title>
<script src="https://cdn.jsdelivr.net/npm/vast-player@latest/dist/vast-player.min.js"></script>
<style>
#container {
width: 640px; height: 385px;
position: relative;
}
</style>
</head>
<body>
<div id="container"></div>
<script>
(function(VASTPlayer) {
'use strict';
var player = new VASTPlayer(document.getElementById('container'));
player.once('AdStopped', function() {
console.log('Ad finished playback!');
});
player.load(
'https://platform-staging.reelcontent.com/api/public/vast/2.0/tag?campaign=cam-e951792a909f17'
).then(function startAd() {
return player.startAd();
}).catch(function(reason) {
setTimeout(function() { throw reason; }, 0);
});
}(window.VASTPlayer));
</script>
</body>
</html>
Install as a dependency
$> npm install vast-player --save
Use the module
var VASTPlayer = require('vast-player');
var player = new VASTPlayer(document.getElementById('container'));
player.load('https://www.myadserver.com/mytag');
Add to RequireJS config
requirejs.config({
paths: {
VASTPlayer: 'https://cdn.jsdelivr.net/npm/vast-player@0.2/dist/vast-player.min.js'
}
});
Use the module
define(['VASTPlayer'], function(VASTPlayer) {
var player = new VASTPlayer(document.getElementById('container'));
player.load('https://www.myadserver.com/mytag');
});
<script>
Add a <script>
to the page
<script src="https://cdn.jsdelivr.net/npm/vast-player@0.2/dist/vast-player.min.js"></script>
Use the module
var player = new window.VASTPlayer(document.getElementById('container'));
player.load('https://www.myadserver.com/mytag');
Node
, [config]:Object
) extends
EventEmitterNode
: A DOM node into which the ad will be inserted. The ad will take up 100% of the width and height of the container.Object
: The following properties are supported
Object
: Configuration for fetching VAST ad tags
Boolean
: true
if VAST <Wrapper>
s should be fetched automatically. Defaults to true
.Number
: The number of VAST <Wrapper>
s that are allowed to be fetched. Defaults to 5
.Object
: Configuration for firing tracking pixels
Function
: This Function
can be used to transform the URIs of VAST tracking pixels. The Function
will be invoked every time a tracking pixel is fired, with the URI of the pixel as the only argument. The returned String
URI will be fired. Deaults to an identity Function
.String
) => Promise
: Fetches a VAST ad tag and loads one of its <MediaFile>
s into the container. The returned Promise
will be resolved when it is safe to start playback via startAd()
.Promise
: Starts playback of the ad. This method may only be called once. The returned Promise
will be fulfilled when the ad starts playing. This method cannot be called until the Promise
returned by load()
is fulfilled.Promise
: Stops playback of the ad and cleans-up its resources. Once this method has been called, the ad cannot be started again via startAd()
. The returned Promise
will be fulfilled when the ad's resources are cleaned-up. This method cannot be called until the Promise
returned by load()
is fulfilled.Promise
: Pauses ad playback. The returned Promise
will be fulfilled when the ad pauses. This method cannot be called until the Promise
returned by startAd()
is fulfilled.Promise
: Resumes ad playback. The returned Promise
will be fulfilled when ad playback resumes. This method cannot be called until the Promise
returned by pauseAd()
is fulfilled.Node
: The supplied container.Object
: The supplied configuration, with defaults applied.VAST
: A vastacular VAST
instance representing the fetched ad tag.Boolean
: Indicates if the ad is ready for playback.Number
: The amount of time (in seconds) left in the linear ad. Accessing this property before the ad is loaded will throw an Error
.Number
: The total duration of the ad (in seconds.) Accessing this property before the ad is loaded will throw an Error
.Number
: Gets/sets the volume of the ad with 0
being completely silent and 1
being as loud as possible. Accessing (or setting) this property before the ad is loaded will throw an Error
.<MediaFile>
s as well. In addition, the following events are emitted:
startAd()
may be called and the ready
property becomes true
.String
The location of the SWF needed for Flash VPAID playback. The defaults to a location on the jsDelivr CDN. Only override this property if you want to use a version of the SWF you have uploaded yourself.