Brightcove Plugin Browser

From Engineering Client Portal

Revision as of 21:09, 23 February 2023 by NickParrucci (talk | contribs) (→‎Opt-Out Implementation)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Engineering Portal / Digital / DCR & DTVR / Brightcove Plugin Browser

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
{{{alt}}}
iOS
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

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'
  • Test: begins with 'T' and is used for testing
  • Production: begins with 'P' and is used in live environment when testing and certification is completed.

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

'WARNING' – System level logs

'ERROR' – Error logs

'DEBUG' – Full logs

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

'y' - Full Episode

'n' - Non Full Episode

boolean Yes
adloadtype Distinguishes Dynamic vs Linear Ad Insertion

'1' - Linear

'2' - Dynamic

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

'0' - No Ads

'1' - Includes Ads

'2' - Unknown

integer Yes

Ad Metadata

Keys Description Values Type Required
type Type of ad

'preroll'

'midroll'

'postroll'

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

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

Plugins-BC.jpg

  • Click "Edit" and enter the URL to plugin JS file. Click "+" to add the row.

js-BC.jpg

  • 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:

Js-BC2.jpg

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.

Video-Fields.jpg

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 from dcr-cert to dcr to point traffic to the Nielsen production collection environment. Do not use dcr-cert for production traffic

Note: Ensure that the nol_sdkDebug parameter is not used.