JW Player
Features
Bidder Code | jwplayer | Prebid.org Member | yes |
---|---|---|---|
Prebid.js Adapter | yes | Prebid Server Adapter | no |
Media Types | video | Multi Format Support | check with bidder |
TCF-EU Support | yes | IAB GVL ID | 1046 |
GPP Support | check with bidder | DSA Support | yes |
USP/CCPA Support | yes | COPPA Support | yes |
Supply Chain Support | yes | Demand Chain Support | check with bidder |
Safeframes OK | check with bidder | Supports Deals | yes |
Floors Module Support | yes | First Party Data Support | yes |
User IDs | all (with commercial activation) | ORTB Blocking Support | check with bidder |
Privacy Sandbox | check with bidder |
Table of contents
Introduction
The JW Player Bid Adapter allows publishers to tap into JW Player’s Video Advertising Demand. Publishers are not required to use JW Player as a video player. Instream and outstream video ads are supported.
Modules to include in your build process
You will need to include the jwplayerBidAdapter
in your build. If you are building the JS binary on your own from source code, follow the instructions in Prebid.js project README.
We recommend including the jwplayerVideoProvider to connect Prebid.js to your JW Player instance via the Prebid Video Module.
If you are not using the JW Player Video Provider, we suggest including the JW Player Real Time Data Provider jwplayerRtdProvider in order to include JW Player’s contextual ad targeting segments in your bid requests.
The following is an example build command that include these modules:
gulp build --modules=jwplayerBidAdapter,jwplayerVideoProvider
or
gulp build --modules=jwplayerBidAdapter,jwplayerRtdProvider
If you are using a JSON file to specify modules, add jwplayerBidAdapter
, jwplayerVideoProvider
and jwplayerRtdProvider
to the modules array as follows:
[
"jwplayerBidAdapter",
"jwplayerVideoProvider"
]
or
[
"jwplayerBidAdapter",
"jwplayerRtdProvider"
]
Bid Params
We support all oRTB params and encourage populating as many as possible.
Required Bidder params
You must include the following parameters at the bidder level, in adUnit.bids[index].params
.
Name | Scope | Type | Description |
---|---|---|---|
siteId |
Required | String | Site-specific id that is provided by JW Player. |
publisherId |
Required | String | Publisher-specific id that is provided by JW Player. |
placementId |
Required | String | Placement-specific id that is provided by JW Player. |
mediaTypes.video
We recommend populating as many params as possible in adUnit.mediaTypes.video
. When using the jwplayerVideoProvider, these fields are populated automatically.
Name | Scope | Type | Description |
---|---|---|---|
video.w |
Recommended | Integer | Populated automatically when using the jwplayerVideoProvider . The width of the video player in pixels that will be passed to demand partners. You must define the size of the video player using the video.w and video.h parameters. |
video.h |
Recommended | Integer | Populated automatically when using the jwplayerVideoProvider . The height of the video player in pixels that will be passed to demand partners. You must define the size of the video player using the video.w and video.h parameters. |
video.plcmt |
Recommended | Integer | The video’s placement type, where: - 1 = Instream- 2 = Accompanying Content - 3 = Interstitial - 4 = No Content/Standalone |
First Party Data (FPD)
In release 4.30 and later, publishers who are not using the jwplayerVideoProvider or jwplayerRtdProvider can use the ortb2 method of setting First Party Data. The following fields are required:
Name | Scope | Type | Description |
---|---|---|---|
site.content.url |
Required | string | Populated automatically when the jwplayerVideoProvider or jwplayerRtdProvider are included. This is the URL of the media being rendered in the video player, for buy-side contextualization or review. This needs to be accessible (w/o DRM, Geo-blocking etc.) and without parameters (Such as size, quality etc.) |
site.page |
Required | string | URL of the page where the impression will be shown. |
To supply data that is accessible to all bidders, use the [pbjs.setConfig()]
object as illustrated below. Use the [setBidderConfig()]
function to supply bidder-specific data. For more information about the standard or more detailed examples, see Prebid’s First Party Data Feature documentation.
pbjs.setConfig({
ortb2: {
site: {
...
},
user: {
...
}
}
});
Examples
With the JW Player Video Provider
const adUnit = {
code: 'test-ad-unit',
mediaTypes: {
video: {} // automatically populated by the Video Provider
},
video: {
divId: 'player', // required to indicate which player is being used to render this ad unit.
},
bids: [{
bidder: 'jwplayer',
params: {
publisherId: 'test-publisher-id',
siteId: 'test-site-id',
placementId: 'test-placement-id'
}
}]
};
var pbjs = pbjs || {};
pbjs.que = pbjs.que || [];
pbjs.que.push(function () {
pbjs.setConfig({
video: {
providers: [{
divId: 'player', // must match the divId in the adUnit
vendorCode: 1, // JW Player vendorCode
playerConfig: {
licenseKey: 'LICENSE_KEY_HERE',
params: {
vendorConfig: {
mediaid: 'XYXYXYXY',
file: 'http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/SubaruOutbackOnStreetAndDirt.mp4',
title: 'Subaru Outback On Street And Dirt',
description: 'Smoking Tire takes the all-new Subaru Outback to the highest point we can find in hopes our customer-appreciation Balloon Launch will get some free T-shirts into the hands of our viewers.',
advertising: {client: 'googima'}
}
}
}
}],
}
});
});
pbjs.addAdUnits([adUnit]);
With the JW Player RTD Provider
const adUnit = {
code: 'test-ad-unit',
mediaTypes: {
video: {
pos: 0,
w: 640,
h: 480,
mimes : ['application/vnd.apple.mpegurl', 'video/mp4'],
minduration : 0,
maxduration: 60,
protocols : [2,3,7,5,6,8],
startdelay: 0,
placement: 1,
plcmt: 1,
skip: 1,
skipafter: 10,
playbackmethod: [3],
api: [2],
linearity: 1
}
},
bids: [{
bidder: 'jwplayer',
params: {
publisherId: 'test-publisher-id',
siteId: 'test-site-id',
placementId: 'test-placement-id'
}
}]
};
var pbjs = pbjs || {};
pbjs.que = pbjs.que || [];
pbjs.que.push(function() {
pbjs.setConfig({
realTimeData: {
dataProviders: [{
name: "jwplayer",
waitForIt: true,
params: {
mediaIDs: ['test-media-id'],
overrideContentUrl: 'always',
overrideContentId: 'always',
overrideContentTitle: 'always',
overrideContentDescription: 'always'
}
}]
},
ortb2: {
site: {
content: {
url: 'test.mp4' // Necessary only when bidding before the JW Player instance is instantiated.
}
}
}
});
});
Without the JW Player additional modules
const adUnit = {
code: 'test-ad-unit',
mediaTypes: {
video: {
pos: 0,
w: 640,
h: 480,
mimes : ['application/vnd.apple.mpegurl', 'video/mp4'],
minduration : 0,
maxduration: 60,
protocols : [2,3,7,5,6,8],
startdelay: 0,
placement: 1,
plcmt: 1,
skip: 1,
skipafter: 10,
playbackmethod: [3],
api: [2],
linearity: 1
}
},
bids: [{
bidder: 'jwplayer',
params: {
publisherId: 'test-publisher-id',
siteId: 'test-site-id',
placementId: 'test-placement-id'
}
}]
};
var pbjs = pbjs || {};
pbjs.que = pbjs.que || [];
pbjs.que.push(function() {
pbjs.setConfig({
ortb2: {
site: {
content: {
url: 'test.mp4'
},
page: 'your-page-url'
}
}
});
});
"Send All Bids" Ad Server Keys
These are the bidder-specific keys that would be targeted within GAM in a Send-All-Bids scenario. GAM truncates keys to 20 characters.hb_pb_jwplayer |
hb_bidder_jwplayer |
hb_adid_jwplayer |
hb_size_jwplayer |
hb_source_jwplayer |
hb_format_jwplayer |
hb_cache_host_jwplay |
hb_cache_id_jwplayer |
hb_uuid_jwplayer |
hb_cache_path_jwplay |
hb_deal_jwplayer |