Advertising with the IMA3 Plugin Changelog

The following tracks changes to the plugin:


23 Jun 2023


  • Features: Implemented ad insights beacon triggers

10 Aug 2020


  • Upgraded to contrib-ads 6.7.0

13 Jul 2020


  • Feature: Make middleware a no-op if the plugin is unregistered
  • Bug Fix: Fixed preroll failures when clicking Next button in a playlist player

16 Apr 2020


  • Fixed Ad Choices overlay not being displayed

31 Mar 2020


  • Bug fix: Resolve occasional errors logged during live preroll ads
  • Reverts: Allow delaying IMA3 initialization until after autoplay feature detection is resolved with a new asyncAutoplaySupport option

7 Jan 2020


  • Fix compatibility with Video.js 7.7.x

20 Dec 2019


  • Refactor: Adjust implementation of AdPlayer to avoid potential incompatibilities with future versions of Video.js

3 Dec 2019


  • Allow delaying IMA3 initialization until after autoplay feature detection is resolved with a new asyncAutoplaySupport option
  • Prevent muted autoplay from stopping background audio on iOS devices
  • Adjust implementation of AdPlayer to avoid potential incompatibilities with future versions of Video.js

25 Sep 2019


  • Fixed a race condition by ensuring inAdBreak is a function when sources are switched

9 Sep 2019 2019


  • Bug fix: Fixed an incompatibility with Brightcove Player 6.36 that caused the IMA plugin to throw an error
  • Bug fix: Resize adsManager on playerresize events

5 Aug 2019


  • Expose IMA SDK on ima3-ready event object when request mode is ondemand
  • Fixed an issue where ad volume was incorrectly interpreted as muted
  • Fixed an occasional error being thrown regarding missing getRemainingTime property

6 May 2019


  • Upgrade videojs-contrib-ads to 6.6.3

21 Mar 2019


  • Bug fix: Fixed an issue where autoplay was blocked after an ima3-ad-error
  • Bug fix: When using live ad insertion, do not block playback while waiting for a preroll

19 Jan 2019


  • Fixes bug where media cuepoint key/value metadata added via Studio were appended to an ad tag as query parameters instead of being interpolated into the mediainfo.ad_keys macro

3 Jan 2019


  • Primarily a service update
  • Bug fix: Millisecond accuracy for ad cuepoints set via Video Cloud now works correctly

24 Oct 2018


  • Fixed bug to call adMacroReplacement when serverUrl is empty string
  • Fixed issue to allow IE/Edge control bar visibility on hover with overlay ads

18 Oct 2018


  • Fixed issue where content didn't resume immediately following empty VAST response in a VMAP
  • Fixed an issue where analytics didn't send video_view events after ad errors and timeouts

13 Sep 2018


  • New Video Cloud cuepoints implementation that addresses a variety of known bugs
  • Added support for content source change during ads
  • Bugfixes to handling reinstantiation of player after dispose
  • Destroy ads manager on player dispose
  • Fix issue related to volume persistence on iOS
  • Fix IE/Edge ad control bar visibility on hover
  • Fix case with playonselect:false where you are before preroll and you change source to an economics:ad_supported video and ad/content automatically plays
  • Remove dead Flash code
  • Updated to use videojs-contrib-ads 6.6.1
    • Improved support for stitched ad scenarios
    • Avoid multiple-registration warning messages by accepting only the first contrib-ads per context
    • Fix play event redispatch issue on IE
    • Improved player dispose handling

15 Aug 2018


  • Fixed a bug where the progress bar wasn't updated and player.ima3.adPlayer.currentTime() returned 0 instead of current time of the ad
  • Added isVpaid convenience method to IMA plugin
  • Added IMA Live preroll support
  • Updated videojs-contrib-ads to 6.5.0 which includes 6.4.3 changes as well
    • Added liveCuePoints option
    • Restore all sources instead of single source on snapshot restore
    • Send pause event when autoplay blocked on Chrome to be consistent with Safari

6 Aug 2018


  • Fixed a bug that results from plugin init order. Specifically, the value for the {player.url} macro has changed to remove a dependency on the Analytics plugin. This macro could be used to uniquely identify the player, but we recommend using the {} macro instead.
  • Improved dispose handling
  • Code organization improvements
  • Updated videojs-contrib-ads to 6.4.2
    • Cleanup snapshot object after ads done
    • Improved dispose handling

11 Jun 2018


  • Fixed a poster flash when restoring after preroll
  • used to be the time offset: now it is the current time
  • Added
  • Bug fix to economics mediainfo handling related to initialization
  • Removed loadingSpinner option because it did not do anything
  • Updated videojs-contrib-ads to 6.4.1
    • Updated documentation link in initialization error message
    • Added contentIsLive setting, which can be used for live streams that do not report their duration as infinity
    • Fixed a bug where a loading spinner could appear at the end of the video if there was no postroll
    • Allow default values for macros

4 May 2018


  • Fixed a bug where ad doesn't play when mediainfo.economics is set to undefined

1 May 2018


  • Updated videojs-contrib-ads from 5.1.6 to 6.2.1
  • Initialization now uses middleware to reduce risk of content flash
  • The plugin's handling of source changes has been reworked, resulting in far greater reliability when used with playlists
  • The serverUrl option can now be a function, facilitating asynchronous workflows such as header bidding
  • Fixed a bug that could have led to a longer timeout than expected
  • Various other bug fixes and reliability improvements; see the videojs-contrib-ads changelog for more information

13 Apr 2018


  • Fixed autoplay issue on iOS and adds support on iOS for IMA SDK setAdWillPlayMuted() and setAdWillAutoPlay()

28 Mar 2018


  • Fixed a bug with a specific IMA3 configuration of autoplay and requestMode onplay

21 Mar 2018


  • Fixed a bug with Internet Explorer 11 support that was introduced in 2.22.0

14 Mar 2018


  • Added support to detect can autoplay and can autoplay muted
  • Implemented IMA SDK setAdWillPlayMuted and setAdWillAutoPlay

30 Jan 2018


  • Added showVpaidControls option
  • Updated to use videojs-contrib-ads 5.1.6

27 Nov 2017


  • Fixed bugs with subsequent content videos not being allowed to play
  • Fixed a bug with midrolls on iOS causing content to restart from the beginning
  • Fixed a bug where content is not seen but audio is heard on iOS

2 Nov 2017


  • Compatibility with latest IMA SDK
  • Improved Safari 11 support
  • Hide custom controls for VPAID ads
  • Updated to use videojs-contrib-ads 5.1.1

10 Oct 2017


  • Added compatibility with Video.js 6.3 and greater

4 Oct 2017


  • Updated to use videojs-contrib-ads 5.1.0

16 Aug 2017


  • Fix a bug that timed out on postrolls when an empty vast ad is seen
  • Remove redundant ads-request event trigger
  • Added logic to check the version of Chrome independently from the player version
  • Fixed a bug where the adtimeupdate event would fire during content
  • Fixed a bug with autoplay on Android devices
  • Fixed a bug with waiting for postroll ads after an ad error

28 Jul 2017


  • Bugfixes for oncue mode and ID3 ad cancellation
  • Updated to use videojs-contrib-ads 5.0.3

21 Jul 2017


  • Mobile autoplay support
  • Updated to use videojs-contrib-ads 5.0.2
    • Fixed dispatching of loadeddata and loadedmetadata events
    • Fixed bug with empty ad response when using ondemand mode

7 Jul 2017


Note: This version includes fixes to support autoplay of HMTL5 ads on iOS 10 and Android devices.

  • Autoplay HTML5 ads in players that are not muted and/or do not include playsinline will correctly play when the user initiates playback via a tap or click on iOS 10 and Android devices
  • Autoplay HTML5 ads in players that include muted AND playsinline will correctly autoplay on iOS 10 and Android devices
  • Fixes the Mute button on iOS 10 and Android HTML5 ads
    • When the muted attribute is present, the mute button will display allowing the user to un-mute the ad
    • The mute button will no longer display on devices that do not support controlling the volume programmatically
    • The mute button will correctly mute/un-mute the ad when tapped or clicked
    • The mute/unmute setting will persist from the ad to main content

Additionally, the IMA HTML5 SDK released a feature to disable custom playback on iOS 10+ devices. This feature determines whether inline playback or native playback of ads is used, including adding support for TrueView skippable ads. More information on this setting can be found in the IMA HTML5 SDK documentation.

Information on how to apply this setting using the Brightcove IMA SDK plugin can be found in our Advertising with the IMA3 Plugin documentation under ima3SdkSettings.

28 Jun 2017


For information see this post in the Brightcove Web Player Developer Forum. For general information on testing players and plugins together, see the Player/Plugin Version Testing topic.

Features in this release are:

  • Volume settings persist when skipping ads
  • Updated to use videojs-contrib-ads 5.0.1
    • Cross-compatibility between Video.js 5 and 6
    • Bug fix regarding Flash of content on iOS
    • Better cleanup when player is disposed
    • An error message is displayed in the Console when the plugin is initialized too late

4 Apr 2017


  • Added player.ima3.setAdsRenderingSettings, which allows users to set ads rendering settings for the IMA SDK for HTML5
  • Updated for Video.js 5 and 6 cross-compatibility

23 Mar 2017


  • Exposed adsLoader.contentComplete in Flash to allow resetting the IMA correlator

9 Mar 2017


  • Adding back ES3 support
  • Updated to use videojs-contrib-ads 4.2.5
    • Added a way to estimate adType
    • Reverted "No longer take postroll snapshot when there will be no postroll" to fix a bug with missing ended events

3 Mar 2017


  • Roll back to videojs-contrib-ads 4.2.3 to fix a bug with missing ended events

1 Mar 2017


  • Don't allow cues without IDs to be used in oncue request mode
  • Updated to use videojs-contrib-ads 4.2.4
    • No longer take postroll snapshot when there will be no postroll
    • Video.js 5/6 cross-compatibility

2 Feb 2017


This is a bugfix update.

  • Make HTML5 ads in iframes responsive when possible
  • Prevent erroneous admuted tracking in GAM
  • Localize ad control bar for both HTML5 and Flash
  • Allow right-clicking to enable Flash in Chrome
  • Updated to use videojs-contrib-ads 4.2.2
  • Re-fixes iOS content flash

27 Jan 2017


  • Added support for cueTextTracks feature in videojs-contrib-ads so Video Cloud cue points can be used to trigger ads.

19 Jan 2017


  • Updated to use videojs-contrib-ads 4.2.1
    • The update reverted the change that prevented ad clickthrough when clicking progress bar during ad. This fix will now be in single-video-template instead.

20 Dec 2016


  • Updated to use videojs-contrib-ads 4.1.6
    • Fixed placeholder div on iOS 10 playsinline
    • No longer sends an undocumented adcontentplaying event, which was only sent to cancel an extra adplaying event; code has been refactored to not need this extra event

8 Dec 2016


  • Updated to use videojs-contrib-ads 4.1.5
    • Hide captions and audio track buttons during ads (they were already hidden in IMA, so this update does not impact this project)
    • Plugin now prevents ad clickthrough when clicking progress bar during ad
    • Ended event now triggers correctly after the content ends additional times having ended once already

21 Nov 2016


  • Updated to use videojs-contrib-ads 4.1.4
    • Fixed issue where blank div to prevent content flash covers ad on iPad
    • Fixed to snapshot test to avoid relying on track src
  • Fixed to show ad duration in Video.js 6
  • Fixed to initialize adDisplayContainer on touchend instead of touchstart

10 Nov 2016


  • Updated to use videojs-contrib-ads 4.1.3
    • Added missing import of videojs
    • Fixed for content playing behind ad on Android
  • Fixed volume persistence bug when playing LIVE content

10 Nov 2016


  • Updated to use videojs-contrib-ads 4.1.2
    • Fix bug with snapshot and text tracks

2 Nov 2016


  • New page variable feature in ad macros
    • In IMA, ad macros are supported in the ad server URL
    • A URL with a page variable macro might look like this:{} (that macro would be replaced with the value of the variable foo in the browser's JavaScript context when the ad request is made)
    • When your ad request is made if the page variable isn't yet available, your macro will not work
    • You can learn technical details on the new ad macro feature here:
  • Now use try/catch when destroying ads manager in case it isn't created yet
    • This is for extra safety in edge cases, you shouldn't expect to see any difference
  • Temporarily re-added contentplayback event
    • This event was part of the integration between the Brightcove IMA plugin and the open source videojs-contrib-ads project; Brightcove plans to remove it in the future
    • The playing event is probably what you would want to use instead

26 Oct 1016


  • Updated to use videojs-contrib-ads 4.0.0
    • playing event no longer sent before preroll
    • contentplayback event removed
    • Fixed a flash of content introduced in Chrome 53 where ads-loading class was being removed too soon
    • Added
    • Updated to use conventions put forward by generator-videojs-plugin
    • Created separate files for feature modules
  • Volume and Muted states now persist across ad breaks

18 Oct 2016


  • Custom fields in ad macros
  • Avoid timeout-length delay before content if there is no preroll in flash ad tech
    • This can resolve additional issues that resulted from an unexpected delay, such as the player throwing an error on empty post-roll call
  • More accurate progress bar in Flash

3 Oct 2016


  • Prevent extra playing event after a hard timeout
  • {} macro now refers to the correct value
  • Smooth progress bar movement

23 Sep 2016


  • Updated to videojs-contrib-ads 3.3.13
    • Fix check to reset snapshot on contentupdate

19 Sep 2016


  • Set hardTimeouts setting default to true
  • Set timeout setting default to 4000 milliseconds
  • Fix bug where video would pause during overlay ads
  • Fix bug with display of flash tech control bar during overlay ads
  • Fix bug when playing an ad-supported video after a free one

6 Sep 2016


  • Unified timeout settings

24 Aug 2016


  • Updated to videojs-contrib-ads 3.3.12
    • Fix for metrics on empty ad
  • Make sure player is in started state on adstart
  • Ondemand adrequests no longer succeed with economics set to free

3 Aug 2016


  • Fix for iOS in which a flash of video content is seen before a preroll
  • Fix a bug in which the ended event does not trigger after video content source is changed

27 Jul 2016


  • Updated to videojs-contrib-ads 3.3.10
    • Fix a bug in which content would replay after postrolls under certain circumstances

22 Jul 2016


  • Added player.ima3.adTech

18 Jul 2016


  • Updated to videojs-contrib-ads 3.3.9
    • Fix a bug in which contentupdate is missed in postroll

14 Jul 2016


  • Fix to account for adrequests made when requestmode is onplay and content is already playing
  • Fixed bug where ImaSdkSettings did not reflect locale setting
  • Fixed bug where IMA3 Plugin did not respect the setNumRedirects setting
  • Updated to videojs-contrib-ads 3.3.9
    • Fix a bug in which contentupdate is missed in postroll

21 Jun 2016


  • Workaround for Chrome bug when removing poster
  • Updated to videojs-contrib-ads 3.3.8
    • Fix for issue resuming after ads on Android
    • Fix for issue requesting ads for subsequent videos

16 Jun 2016


  • Hide poster and tech before preroll

13 Jun 2016


  • Fixed a bug where content would replay after a postroll completed

6 Jun 2016


  • Hard timeouts now work for VAST ads that do not use VMAP as well as with the Flash ad tech
  • Fixed bug that could cause a flash of content on source change
  • Fixed bug where first adrequest would fail with requestMode:ondemand + autoplay + preload:none + html5 ad tech

26 May 2016


  • Add default postrollTimeout of 1000 milliseconds
  • Add missing logic for flash ad tech to destroy ads manager on adserror
  • No longer send nopreroll for VAST ads
  • No longer send adrequest for empty string content source
  • Cancel multiple ad requests for the same content source
  • No longer allow autoplay with onplay; it changes it to onload

10 May 2016


  • Fix to live ads that was introduced in 2.7.0
  • Fix in live ads code that introduced intermittant errors on iOS8 (even in non-live scenarios)

28 Apr 2016


  • Added ad_keys to ad macros
  • Code maintenance to enable vjsstandard
  • No longer plays ads when Economics flag is set to FREE

20 Apr 2016


  • Ability to play and cancel ads in live streams based on ID3 metadata
  • Quicker load time when requestmode is set to ondemand or oncue
  • Fixed and restored nopostroll feature

31 Mar 2016


  • Rollback nopostroll feature as it was preventing ended events

31 Mar 2016


  • Minor bugfix to contrib-ads

28 Mar 2016


  • HTML5 hardTimeouts option. Will prevent "flash of content" when using VMAP for HTML5 ads by discarding overdue ads. Disabled by default; planned to be enabled by default in a later major version update.
  • Quicker load time when using IMA3 plugin with no preroll ads.
  • Expose player.ima3.currentAd.wrapperAdIds and player.ima3.currentAd.wrapperAdSystems when using Flash ad tech.
  • Fix display of volume slider in graphite skin
  • Fix bug where progress slider would continue when paused in Flash
  • Fix bug where play/pause icon would not update correctly in Flash
  • Fix several situations where invalid adtimeout events would be sent

28 Mar 2016


  • Added VPAID 2 support

28 Mar 2016


  • Hide dock during ad playback
  • Fix bug where iPad overlay ads would not click-through
  • Use versioned URL for default adSwf value
  • Fix clickthroughs for HTML5 ads in IE10

20 Jan 2016


  • Support multiple players

30 Mar 2015


  • Update contrib-ads to pick up playlist support

27 Mar 2015


  • Add adrequest method
  • Add ready method
  • Add loadingSpinner option
  • Fix timings in HTML controlbar
  • Add black background div to prevent content flashing issues with prerolls and midrolls (on desktop)

27 Jan 2015


  • Add error handling
  • Bump videojs-contrib-ads to 1.0.0
  • Fix race condition where contentupdate can trigger twice

8 Jan 2015


  • Bump videojs-contrib-ads to 0.6.0
  • Add no-op function stubs for text track API methods

21 Oct 2014


  • Bump default preroll timeout to 1000ms
  • Always use a separate control bar for ad playback. Previously, ads on platforms that did not support Flash would re-use the content control bar for ad playback.
  • Move ad container offscreen during content playback because IMA steals touch events on Android Chrome.

16 Oct 2014


  • VPAID 2.0 support for the Flash ad tech

1 Oct 2014


  • Update videojs-ads
  • Pass updated plugin settings to the ad SWF

1 Oct 2014


  • Set the default ad tech order to flash, html5

28 Aug 2014


  • Post-roll support
  • Added the ability to use custom click tracking elements with IMA3/HTML5

20 Mar 2014


  • Upgrade to video.js 4.4.3