Brightcove Plugin Browser
From Engineering Client Portal
The Nielsen Browser SDK (Software Development Kit) is the Nielsen framework for measuring media consumption in browser environments.
OS | Player Version | SDK Version | Supported Ad Frameworks | Download | |
---|---|---|---|---|---|
5.17, 5.22.2 - 5.27.0 & 6.10.1 | 6.0.0.28 | Contact Nielsen |
.
This SDK has the following features:
- Multiple product support: built-in capabilities to support Digital Content Ratings(DCR), VideoCensus(VC), Digital Program Ratings(DPR) and IAG.
Note: The Brightcove Plugin 5.1.0.10 is compatible with the Brightcove V5 player version 5.17, 5.22.2 and Brightcove V6 player version 6.10.1. Brightcove V5 player 5.18 through 5.22.0 should not be used with the version 5.1.0.10 of the plugin.
All of the player issues that would have impacted measurement have been fixed in 5.22.2.
Getting Started
What You Will Need?
- Nielsen App ID (apid): a Unique ID that Nielsen assigns to the site / player. The 'apid' will be provided by your Technical Account Manager.
- BrightCove Plugin: Plugin URLs are provided in the below section.
- Test Environment Validation: before you move into production, Nielsen must validate the SDK integration in a test environment.
Initial Configuration
Before integrating the plugin, configure the metadata, obtain Nielsen APID's, and review the Nielsen plugin URLs for Brightcove.
Obtain the Nielsen Application ID (apid)
The Nielsen apid is required to enable SDK functionality. Your Technical Account Manager will provide two apids for each player configuration
- Test apid: use this apid during development and testing
- Production apid: use this apid in your production environment after Nielsen has tested and qualified the player.
Brightcove Plugin URL's
- BC Perform Player (JS)
Global Parameters
To initialize the Nielsen Browser SDK, pass one global parameter when adding the BC Perform plugin.
Keys | Description | Values |
---|---|---|
apid | Unique ID assigned to player/site. There are two IDs provided | 'XXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'
|
The below parameter is optional but recommended when testing implementation.
Keys | Description | Values |
---|---|---|
nol_sdkDebug | Nielsen SDK console logging that should be used while testing. Make sure to disable before moving the implementation to production. | 'INFO' – API calls
|
Configure Metadata
There are two types of metadata
- DCR Content Metadata: identify content
- DCR Ad Metadata: identify ad
Metadata can be passed through key-values using the Nielsen reserved keys.
The metadata received for each asset is used for classification and reporting. There are reserved Nielsen keys for collecting the required metadata.
Content Metadata
Keys | Description | Values | Type | Required |
---|---|---|---|---|
type | Type of asset | 'content' |
string | Yes |
assetid | Unique ID assigned to asset | custom (no Special Characters) | string | Yes |
program | Program Name | custom |
string | Yes |
title | Episode title | custom |
string | Yes |
airdate | The original airdate for linear TV | '20161013 20:00:00' |
date | No |
length | Length of content in seconds | 3600 (0 for live stream) |
integer | Yes |
segB | Custom Reporting Segment | custom |
string | No |
segC | Custom Reporting Segment | custom |
string | No |
isfullepisode | Full Episode Flag |
|
boolean | Yes |
adloadtype | Distinguishes Dynamic vs Linear Ad Insertion |
|
integer | Yes |
crossId1 | Standard Episode ID | custom |
string | Yes |
crossId2 | Content Originator ID | custom |
string | No |
mediaURL | URL location of the content being streamed | custom |
string | Yes |
hasAds | Distinguishes when content includes Ads |
|
integer | Yes |
Ad Metadata
Keys | Description | Values | Type | Required |
---|---|---|---|---|
type | Type of ad |
|
string | Yes |
assetid | Unique ID assigned to ad | custom |
string | Yes |
Note:There is a URL character limit of 2000 characters imposed due to browser limitations. Exceeding this value can impair data delivery on particular browsers.
Setup
In order to integrate the Nielsen plugin, follow the steps for setting up these players in the Brightcove user interface as they appear below by each player type.
Brightcove Player Setup
The new Brightcove Perform player allows two interchangeable ways to add the plugin: on the web site, so the player will come already configured, and programmatically on the client side.
These options, as well as the whole process of adding a plugin is common to the player and described here http://support.brightcove.com/en/perform/docs/configuring-player-plugins
For Nielsen SDK plugin, the integrator would need
- A list of initialization parameters - required (Application ID) and optional ones. Refer to Global Parameters section above.
- A link (URL) to SDK plugin (ggng510.js) for Brightcove
- A list of metadata fields with their names (Nielsen Key Mapping) to pass to the plugin. For more information, refer to Configure Metadata section.
- Access to the Brightcove VideoCloud Perform Portal https://studio.brightcove.com/products/videocloud/home
To add Nielsen SDK plugin using UI do the following
Open Brightcove VideoCloud portal, open players list and open (or create) a player the plugin should be added to. Scroll down to the 'Plugins' section in player configuration
- Click "Edit" and enter the URL to plugin JS file. Click "+" to add the row.
- Then click "Name, Options (JSON)" row and enter "NielsenBC" for the plugin name and required initialization parameters provided by your Nielsen Technical Account Manager, as below:
Example Code:
{
"nol_sdkDebug": "DEBUG",
"apid": "T4BFBFAC9-XXXX-XXXX-XXXX-22B092CBCC2B"
}
Adding "nol_sdkDebug": "DEBUG"
will allow SDK events in the console.
Note:
"nol_sdkDebug": "DEBUG"
must be removed when moving a player live to production to disable the debug logging.
Pass Content & Ad Metadata to The Brightcove Video Player
Pass the required content, and ad metadata to the Brightcove video player so that the Nielsen Plug-In is able to pick it up in order to populate the DCR crediting tags. The Nielsen Plug-In is preconfigured to automatically obtain metadata from Custom Fields. These can be set through the Brightcove User Interface (under ADMIN) or programmatically.
Information on creating Custom Metadatafields can be found on the Support site.
Note: If you are using the Brightcove player with the PERFORM service, you will need to populate the media info. Please contact Brightcove support for details on this process.
For more information on how to pass the required metadata to the Brightcove VideoCloud player, please reach out to your Brightcove Account Manager for further assistance.
To add Nielsen SDK programmatically
- Include plugin source
<script src="//cdn-gl.imrworldwide.com/novms/bc/3/ggng510.js"></script>
- Bind plugin to the player with initialization parameters
videojs("myPlayerID").NielsenBC( { "apid": "PXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", "nol_sdkDebug": "DEBUG" } }
- For CMS data binding, the following rules apply
- The plugin automatically captures the following video data
- * Data from video duration is automatically capture by the plugin
nielsenData.length = videoInfo.duration;
- * Field "type" is set to
"content"
,"preroll"
,"midroll"
or"postroll"
. - If video data contains custom fields, all those fields are copied over to Nielsen data:
nielsenData[i] = videoInfo.custom_fields[i]
(with 'i' iterated over all custom field names), which may override some of the default values or standard field values - The plugin does not automatically assign a value to assetid. To pass programmatically, use the custom fields object. (See code example below)
- Parameter videoInfo.id must be a unique string to allow the plugin detecting the content change.
Notes
The plugin takes metadata at four points.
1. When the plugin is initialized, it gets "defaults" object from the setup object. These data will be used for ALL videos and for ALL ads in the session (e.g. in the playlist). Certainly, if there are several videos in the list, there is no reason to pass properties this way, because different data can’t be passed for different streams.
2. When the video starts playing a video, the plugin obtains the following data from the player: name, id, src, length. The plugin calls the player for necessary data and sets the following parameters to the metadata that are being passed to the BSDK with "loadmetadata" events (3/15):
- assetName = mediaInfo.name
- title = mediaInfo.name
- nielsen_mediaid = mediaInfo.id (if defined)
- mediaURL = the value returned by player.currentSrc() function
- length = the value returned by player.duration() function. It's 0 for livestreams.
3. The plugin takes the metadata (custom_fields) from the setup object. These data will be used for ALL videos, but not for ads, in the session
4. Player takes the metadata (custom_fields) provided for this video. The custom_fields can be filled up either in Video Cloud Studio or while setting up the player programmatically in the script on the HTML page. The plugin takes custom_fields object from the mediaInfo object provided by the player. Please note, the custom_fields object in metadata is not altered by the player in any way.
The plugin puts data taken at these points to the same metadata object that is being passed to the BSDK with "loadmetadata" events (3/15).
So, data taken at point 1 can be overridden by the data with the same name taken at point 2.
Then, the data can be overridden by the data taken at point 3.
Then, the data can be overridden by the data taken at point 4.
Please note that property "default" is used to pass only general data (applied both for ads and content) that are not considered as custom fields of video stream.
The plugin doesn't send events 3/15/49/7/57 to the BSDK if there is no video stream metadata (custom fields) provided. In this case the plugin sends only id3 tags for the content using events 55.
Passing video metadata through the setup object requires initializing the plugin and the BSDK for each video.
We would suggest initializing the plugin and the BSDK once, and setting metadata (custom fields) for videos. It can be done either while initializing playlist/individual-stream or while setting up videos in the Video Cloud Studio.
Example of the setup object:
{
"apid": "PXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"custom_fields": {
"assetid": "123456",
"program": "myProgram"
},
"nol_sdkDebug": "DEBUG"
}
- CMS metadata values can also be set at the asset level
{ "sources" : [ { "src" : "http://solutions.brightcove.com/../videos/Sea_SeaHorse.mp4", "type" : "video/mp4" } ], "custom_fields": { "assetid": "6475587654", "mediaURL": "http://solutions.brightcove.com/bcls/../videos/Sea_Anemone.mp4", "dataSrc": "cms", "hasAds": "1" }, "name": "Sea Anemone", "thumbnail": "http://solutions.brightcove.com/bcls/assets/images/Sea_Anemone_poster.png", "id": "5195888503001" } }
Ad Support
The plugin will also extract information about the number and length of advertisements played with the video.
Opt-Out Implementation
The site must provide a means for the user to opt out of, or opt back into Nielsen Measurement. A user can opt out if preferring to not participate in any Nielsen online measurement research. To implement the Opt-Out option, include the following in the privacy policy page:
- A notice that the player includes proprietary measurement software that allows users to contribute to market research (such as Nielsen TV Ratings)
- A link to the Nielsen Digital Measurement Privacy Policy at https://www.nielsen.com/digitalprivacy
On the Nielsen Digital Measurement Privacy Policy page, users can click choices to read more detailed information about the measurement software and their options. The users can click a link to retrieve an Opt-Out cookie if they do not want to participate in Nielsen online measurement.
Nielsen properties may feature Nielsen proprietary measurement software, which will allow the users to contribute to market research, such as Nielsen TV Ratings.
To learn more about the information that Nielsen software may collect and your choices with regard to it, please see the Nielsen Digital Measurement Privacy Policy at https://www.nielsen.com/digitalprivacy.
Opt-In
Once users have opted out, they can choose to opt back into Nielsen Measurement at anytime by selecting the Opt-In link on the Nielsen Digital Privacy Policy page. When a user selects the link, their Opt-Out cookie will be deleted and they will be measured.
Going Live
After the integration is certified, there is one update to be made to the existing code to ensure that the player will be measured properly:
- App ID: Change the apid to the production ID starting with the letter 'P':
'PXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'
- Collection Environment: Change the value for
sfcode
fromdcr-cert
todcr
to point traffic to the Nielsen production collection environment. Do not usedcr-cert
for production traffic
Note: Ensure that the
nol_sdkDebug
parameter is not used.