Brightcove Native SDK for Android Release Notes

In this topic, you will find the latest information on changes and enhancements to the Brightcove Native SDK for Android.

Join the mailing list and receive release announcements for the Native SDKs:

Current release

Version 10.0.0

04 Dec 2024

SDK Changes:

  • Standardize the User-Agent to conform to the DeviceAtlas standard.
  • Change the MIN_SDK from 17 to 21.

ExoPlayer Changes:

  • Migration of the ExoPlayer library to Media3 library v1.4.1

 IMA Plugin Changes:

  • Update the IMA library to v3.36.0

Previous releases

Version 9.2.3

21 Nov 2024

SDK Changes:

  • Fixed a problem where the default bitrate was reset after attempting to change the audio track.

Version 9.2.2

04 Oct 2024

ExoPlayer Changes:

  • Fixed a problem where the video frames were not displayed after the SDK switched from playing CSAI ads.

Version 9.2.1

19 Sep 2024

SDK Changes:

  • Fixes an issue where the current position view is not properly updated when manually seeking.
  • Addresses an unexpected view stacking behavior that could occur if a caption cue had less than 250ms of its remaining duration in the current second of playback.
  • Fixes a problem where Generic Stream Concurrency is not completely stopped once the setStreamConcurrencyEnabled(false) is called.
  • Two new methods were added to enable and disable stream concurrency: enableStreamConcurrency() or disableStreamConcurrency(). Side note, stream concurrency cannot be initiated after the video started to play.
  • Deprecated the method setStreamConcurrencyEnabled(boolean) in the BaseVideoView class. Instead use enableStreamConcurrency() or disableStreamConcurrency() from the same class.

SSAI Plugin Changes:

  • Fixes a problem where seeking within the player's progress bar would lead to an unexpected replay of midroll ads.
  • Fixes a crash while using custom controllers and SSAI.
  • Fixes a formatting exception when the Tracking Events return an invalid URI.

Version 9.2.0

07 Aug 2024

SDK Changes:

  • Fixes a problem where caption language re-selection was not working after the initial selection and after SSAI ads.
  • Fixes an issue where seeking to the extreme end of a player could prevent a video's captions from being displayed when replaying the video.

ExoPlayer Changes:

  • Fixes an issue where some live streams could not be played.

SSAI Plugin Changes:

  • Builds the CAPTION_SOURCES Video Object from the TimedTextURL Extensions if they are present in the Brightcove VMAP.

Version 9.1.0

18 Jul 2024

SDK Changes:

  • Added support for the Brightcove Interactivity functionality. Please check the official documentation for more details.

Version 9.0.0

01 Jul 2024

New plugin release:

SDK Changes:

  • Address a policy change in the Google Play Store regarding foreground services usage. For more details, read the Android SDK v9.0 Migration Guide documentation.
  • Adding support for the use of bumper videos with the SDK.

Version 8.4.4

12 Jun 2024

SDK Changes:

  • Fixes a regression where enabling captions from the Settings screen would fail.
  • Adds support for the EBU+TTML caption type.

Version 8.4.3

22 May 2024

SDK Changes:

  • Fix a regression where only one caption was displayed from several that have the same timestamp.

Version 8.4.2

13 May 2024

SDK Changes:

  • Fix for a regression where descriptive audio track items for DASH video were not displayed as expected in the Audio Track Selection menu
  • Set custom read and connect timeouts for catalog requests through the HttpRequestConfig class
  • Implement better handling of exceptions in Generic Stream Concurrency and in the PlaybackNotification
  • Fix for a regression when disabling captions from the Settings screen fails
  • Support for display MP4-Encapsulated VTT captions.

IMA Changes:

  • Fix for a crash when tapping back button or closing the screen in ad playback
  • Improvements to Ad Insights reporting for ad errors, audible duration (for muted and partially-muted ads) and video resumption after mid-roll ad pods
  • Upgrade the IMA library to v3.33.0. It fixes the issue where ad clickthroughs using the Learn more button and the companion ad will not open a new page in Android API version 30 and higher.

SSAI Changes:

  • Fix for a regression where a mid-roll is repeatedly played for every seek after it was crossed.

Version 8.4.1

05 February 2024

SDK Changes:

  • Changed the startup flag on the MediaPlaybackService to START_STICKY to improve foreground service performance.

ExoPlayer Changes:

  • Fixed an issue with seeking and navigation in the Brightcove notification.

Version 8.4.0

17 January 2024

SDK Changes:

  • Support for Android 14 is added with this version of the Brightcove Native SDK for Android.
  • With this version of the Brightcove Native SDK for Android, Android OS versions 6 and 7 are moved to Passive Support. Please refer to the Android SDK support pages for more information on support levels.
  • Adds support functionality that allows users to zoom in and out of a video while it is playing.
  • Fixes an issue where the player was not destroyed when a fragment was destroyed.
  • Remove unnecessary code that could cause a potential bug in the LoadImageTask class.

ExoPlayer Changes:

  • Adds support for overriding ExoPlayer's default connect and read timeout settings.

Freewheel Plugin Changes:

  • Fixes an issue that could produce a crash during ad playback.

IMA Plugin Changes:

  • The IMA plugin now offers a function to clear some internal and external objects used by the plugin.

OfflinePlayback Changes:

  • Improved download queue functionality now gracefully handles individual download failures, ensuring uninterrupted progression of remaining downloads.

SSAI Plugin Changes:

  • Fixes an issue where ad stitched positions were returned for ad and linear start events with incorrect values.

Version 8.3.0

08 December 2023

SDK Changes:

  • Fixes a regression issue where the Fast Backward button showed the wrong icon on TV devices.
  • Fixes an issue where the fast-forward button could not be set with a custom icon.
  • Fixes a crash issue on Android 14 devices with BroadcastReceiver and Foreground Service.
  • Video.findHighQualitySource now favors HTTPS, ensuring safer downloads and ClearText restriction compliance.
  • Prioritize HTTPS URLs, enhancing security and compatibility in restricted ClearText environments.

ExoPlayer Changes:

  • The Brightcove Native Player SDK for Android now supports ExoPlayer 2.19.1. Please refer to the ExoPlayer release notes for information on ExoPlayer changes since 2.17.1, particularly for TrackSelectionOverride changes made in ExoPlayer 2.18.0.
  • Fixes an issue where the Play and Pause button on Android TV remotes did not work as expected.
  • Fixes an issue where the notification shows the title instead of the description.

Cast Plugin Changes:

  • The Cast plugin is updated to use the latest Brightcove Cast receiver app.

IMA Plugin Changes:

  • The Google IMA SDK dependency has been upgraded to 3.31.0. This upgrade fixes a crash in Android 14 related to this library.

Offline Playback Changes:

  • Fixes an issue where a clear text source could be selected by the OfflineCatalog, and improves source selection.
  • Fixes incorrect error handling when downloading offline videos.
  • Enhanced error handling in DownloadManager to prevent stalls and improve notification management.

SSAI Plugin Changes:

  • Included ProGuard consumer files to retain essential IAB parser classes when minification is enabled.

Version 8.2.3

27 September 2023

ExoPlayer 2.17.1

SDK Changes:

  • Adds support for Player ID, Player Name, and Application ID Analytics fields. Note that these fields are optional; if a value is not supplied, an empty or placeholder value will not be sent.
  • Improves null checking when adding videos or playlists to a player.
  • Fixes an issue where a preroll ad was played twice when added using cue points.
  • Fixes an issue with customizing the Captions, Rewind, Fast Forward, and Audio Tracks buttons.

Offline Plugin Changes:

  • Selects https source URL by default for offline playback.

SSAI Plugin Changes:

  • Fixes an issue with the Play/Pause button state after seeking through midroll ads.
  • Improves null checking when adding videos or playlists to a player.
  • Fixes an issue where a NullPointerException would be thrown when using the SSAIComponent class constructor: SSAIComponent(@NonNull Context context, @NonNull BaseVideoView baseVideoView, int connectTimeout, int readTimeout)
  • Fixes an issue where the adDataReady event was emitted after adding the video to the view. This fix restores the order of emitted events in previous SDK versions.
  • Fixes an issue with rewind behavior when the player’s playhead position is 0.

Version 8.2.2

25 August 2023

ExoPlayer 2.17.1

SSAI Plugin Changes:

  • Fixes an issue where midroll ads would replay after seeking backwards through content

Version 8.2.1

15 August 2023

ExoPlayer 2.17.1

SDK Changes:

  • Improvements and minor bug fixes to Ad Insights.
  • Fix playback issues for Dolby Atmos media on unsupported devices. Also emit an error event when a video with only Atmos-capable audio is attempted to load on a device without Atmos decoder support.
  • Fixes an issue where captions languages could be emitted with an empty language list for SSAI videos.

ExoPlayer Changes

  • Fixes an issue where destroying the player on garbage-collecting the playback Object could result in a crash on TV platforms.

Version 8.2.0

21 July 2023

ExoPlayer 2.17.1

SDK Changes:

  • Improvements to handling captions; fix formatted offline caption playback.
  • Use the language label set in Brightcove Video Cloud when showing the dialog for available captions.
  • Fix a NullPointerException when playback is using Generic Stream Concurrency and the device goes offline.
  • Adds support for Brightcove Ad Insights analytics

Version 8.1.1

12 May 2023

ExoPlayer 2.17.1

SDK Changes:

  • Changes the datatype of the Video.Fields.ODRM_PLAYBACK_ALLOWED Video property to return a Boolean. To access this property, please cast it to Boolean.

ExoPlayer Changes:

  • Fixes an issue where the COMPLETED event could be emitted on clearing a video from a playlist without completing playback.

Offline Playback Plugin Changes:

  • Fixes an issue where CuePoints were not being configured for offline videos due to a ClassCastException.
  • Fixes an issue where Poster Images were not being configured for offline videos due to a ClassCastException.
  • Adds support for Custom Fields in the OfflineVideo properties map
  • Adds support for Tags in the OfflineVideo properties map

Version 8.1.0

28 March 2023

ExoPlayer 2.17.1

SDK Changes:

  • Change the data type of the Analytics rebuffering_seconds parameter from an integer to a float
  • With the rebuffering_seconds value changed to a float, the Analytics rebuffering_count will be incremented for rebuffering_seconds values of less than one second
  • Fixes an issue where rebuffering at player startup time was reported to Analytics as a player stall
  • Fixes an issue where a player would continue playing automatically after being paused when in a stalled state
  • Adds support for tags in the Video object

IMA Plugin Changes:

  • Adds support for SpringServe macros to the IMA Plugin for the Brightcove Native SDK for Android

SSAI Plugin Changes:

  • Adds Open Measurement (OM) SDK support to the SSAI Plugin for Brightcove Native SDK for Android
  • Fixes post-roll analytic events when the VMAP duration is greater than the video's actual duration

Version 8.0.1

15 March 2023

ExoPlayer 2.17.1

SDK Changes:

  • Fixes an issue where transitions between videos in playlists could stretch the video display outside of the original bounds of the player display.
  • Fixes an issue where transitioning to Player-In-Player (PiP) mode while the video was playing would load the PiP player in paused mode.
  • Fixes an issue that would cause the ShutterViewController to hide between video loading and ad playback.
  • Fixes an issue that would prevent the ShutterViewController from hiding on detection of an ad error.

ExoPlayer Changes:

  • Fixes an issue in ExoMediaPlayback where transitions between videos in playlists could prevent pre-roll ads from playing on subsequent videos.

SSAI Plugin Changes:

  • Adds support for setting custom read and connect timeouts in the SSAIComponent and SSAIVideoProcessor.

Version 8.0.0

11 January 2023

ExoPlayer 2.17.1

This major release of the Brightcove Native SDK for Android contains significant behavioral changes. For details, see the The Native SDK for Android Release 8.0.0 document.

SDK Changes:

  • With this version of the Brightcove Native SDK for Android,foreground and background playback of audio-only content is supported.
  • The MediaPlayback interface abstracts playback from the VideoView to support continuous playback of audio-only media. The MediaPlayback communicates playback state to the notification and the VideoView.
  • Support for an ongoing foreground service for continuous playback.
  • Improves loading playlists and pre-buffering media for a smoother end-user experience.

ExoPlayer Changes:

  • Added a media-style notification with customizable playback controls from the notification shade and lockscreen. This BrightcoveNotification class connects playback with a foreground service.

Version 7.1.4

16 November 2022

ExoPlayer 2.17.1

Cast Plugin Changes:

  • Adds support for the Brightcove Cast Receiver emeHeaders CustomData object.

Version 7.1.3

27 October 2022

ExoPlayer 2.17.1

SDK Changes:

  • Fixes an issue where for some playback analytics metrics requests, a video_duration request parameter would not be included.
  • Fixes an issue with support for Live HLSe with License Keys Protection.

Version 7.1.2

30 September 2022

ExoPlayer 2.17.1

SDK Changes:

  • Added support for Dolby Atmos audio. Since not all Android devices support playback with this format, it is recommended that content be transcoded to produce stereo as well as Dolby Atmos audio variants. For details, see the Dolby Atmos Audio document.

ExoPlayer Changes:

  • Added support for Dub and Description DASH role values.

Version 7.1.1

1 September 2022

ExoPlayer 2.17.1

SDK Changes:

  • Fixes a performance issue that could occur when loading larger size closed captions.

ExoPlayer Changes:

  • Adds setter and getter methods for the allowChunklessPreparation property ExoPlayer's HLSMediaSource.Factory. With Exoplayer 2.17.0, the default value of this property was changed from false to true, which had the unintended side effect of turning off display of 608/708 captions if they were present in HLS content. If your HLS content includes 608/708 captions, use the ExoPlayerVideoDisplayComponent's setAllowHlsChunklessPreparation(false) to disable HLS chunkless preparation in ExoPlayer's HLSMediaSource.Factory, which will restore display of 608/708 captions.

Version 7.1.0

22 August 2022

ExoPlayer 2.17.1

SDK Changes:

  • Adds support for an encryption Source property with HLSe Live streams.
  • Improves response handling for Generic Stream Concurrency connections.
  • Fixes an issue where a null or missing duration returned for a remote live video created in the VideoCloud Studio, would result in a VideoParserException.
  • Adds a Generic Stream Concurrency (GSC) EventType, GSC_HEARTBEAT_STOPPED.

ExoPlayer Changes:

  • Provides setter and getter methods in ExoPlayerVideoDisplayComponent for the DefaultRenderersFactory.
  • In the TrackSelectorHelper class, applySelectionOverride(int, SelectionOverrideCreator) is deprecated. Please use applyTrackSelectionOverrides(int, TrackSelectionOverrideCreator) instead.
  • Fixes the callbacks to retrieve metadata of the media during playback.

SSAI Plugin Changes:

  • This release of the Brightcove Native SDK for Android is the final release to use the Brightcove IAB Android Library as an external dependency. Future SDK releases will include the IAB Android Library as an integration in the SSAI plugin.
  • Fixes a parsing issue with BrightcoveDebug elements that have self-closing tags.
  • With this release, Live DRM with SSAI is supported.

Version 7.0.1

6 July 2022

ExoPlayer 2.17.1

SDK Changes:

  • With this release of the Brightcove Native SDK for Android, MediaPlayer is no longer supported for content playback.
  • The Brightcove Native SDK for Android is now compatible with Android 12.
  • The Brightcove Native SDK for Android now supports playback of Low-Latency HLS live streams.

ExoPlayer Changes:

The Brightcove Native Player SDK for Android now supports ExoPlayer 2.17.1. Please note the following breaking changes with this upgrade:

  • This version of ExoPlayer requires Java 11 and Gradle 7.4.
  • The DrmSession <T extends ExoMediaCrypto></T> interface no longer requires a parameter.
  • The ExoPlayerDrmSessionManager <T extends ExoMediaCrypto></T> interface no longer requires a parameter.
  • In the TrackSelectorHelper class, the method updateTracksSelectionArray(@Nullable TrackSelectionArray trackSelections) is deprecated and replaced with updateTracksGroupInfos(@Nullable ImmutableList <TracksInfo.TrackGroupInfo> trackGroupInfos).
  • In the MediaSourceUtil class, the method findRenditionUrl(@NonNull HlsMasterPlaylist hlsMasterPlaylist, int trackType, @NonNull Format format) is deprecated and is replaced with findRenditionUrl(@NonNull HlsMultivariantPlaylist hlsMasterPlaylist, int trackType, @NonNull Format format).
  • In the ExoAdPlayer class, the constructor requires a StyledPlayerView instead of a PlayerView.
  • The DashAudioTrackSelector class is now deprecated and replaced with ExoPlayerVideoDisplayComponent*.setPeakBitrate(int)*.
  • The DashPeakBitRateTrackSelector class is now deprecated and replaced with ExoPlayerVideoDisplayComponent*.setPeakBitrate(int)*.
  • The HLSPeakBitrateTrackSelector class is now deprecated and replaced with ExoPlayerVideoDisplayComponent*.setPeakBitrate(int)*.

Cast Plugin Changes:

  • ExoPlayer Cast Extension support updated to 2.17.1
  • In the GoogleCastComponent class, the methods loadItems(MediaQueueItem, int) and addItems(MediaQueueItem) now return void instead of PendingResult RemoteMediaClient.MediaChannelResult>.

Fixes an issue when casting Remote DRM videos, where the Cast sender was sending an unexpected CustomData field to the Brightcove Cast Receiver app.

IMA Plugin:

  • The Google IMA SDK dependency has been upgraded to 3.27.0. This upgrade includes support for Android 12.

Pulse Plugin:

  • Pulse SDK support updated to 2.5.20.3.0

SSAI Plugin Changes:

  • The SSAIComponent now supports use of the Brightcove VideoCloud VMAP XML object itself as a source. To use a VideoCloud VMAP XML object as a source, call processVideo(String vmapXmlString) in the SSAIComponent class.

Version 6.18.6

14 June 2022

ExoPlayer 2.14.2

SDK Changes:

  • Fixes a threading issue in the Catalog class, which resulted in a requirement in SDK version 6.18.5 that the Catalog must be defined and instantiated only from the Player's main thread. From version 6.18.6 onwards, the Catalog must still be defined within the Player Activity class, but instantiation can be called from other threads. Please refer to the Brightcove Android SDK Sample Apps for examples in defining and instantiating the Catalog.
  • Updates the GSON dependency version from 2.8.5 to 2.8.9 in response to a CVE report (CVE-2022-25647) about a possible vulnerability in some classes, none of which are used by the Brightcove SDK.

ExoPlayer Changes:

  • Fixes an issue where a seeking in a paused player would cause the seekbar's scrubber to fail to update its progress when playback was resumed.
  • Fixes an issue with Short Manifest TTLs where the Multi-Session DRM setting was not re-applied when the video was refreshed after its manifest timestamp expired.

Version 6.18.5

27 May 2022

ExoPlayer 2.14.2

SDK Changes:

  • Adds support for Short Manifest TTLs.
  • IMPORTANT: Using this SDK version requires the Catalog and HttpRequestConfig objects to be instantiated on the player's main thread (in its onCreate method). Note that these objects can be defined either globally (which is preferred) or in the onCreate method. Please refer to the BasicSsaiSampleApp for an example of a locally defined and instantiated objects, and the VideoViewListSampleApp for an example of globally defined and locally instantiated objects. Please also note that this is a requirement independent of the use of the Short Manifest TTLs feature.

SSAI Plugin Changes:

  • Adds support for Short Manifest TTLs.

Version 6.18.4

20 May 2022

ExoPlayer 2.14.2

SDK Changes:

  • Fixes an issue where a crash could occur if an account not configured for Generic Stream Concurrency (GSC) were to attempt to play content in a player that is configured for GSC.
  • Improves GSC error handling in cases where invalid or expired tokens might be used in attempting to play content.

Version 6.18.3

6 May 2022

ExoPlayer 2.14.2

SDK Changes:

  • Fixes an Accessibility issue where when the seekbar has focus, the video progress percentage is constantly read by the TalkBack system.
  • Fixes an Accessibility issue where double-tapping the video view would focus on the seekbar, and cause an unexpected seek into the video.

ExoPlayer Changes:

  • ExoPlayerVideoDisplayComponent now provides a getter method that returns the current instance of the WidevineMediaDrmCallback, or an empty instance if it needs to be created.

Thumbnail Plugin Changes:

  • Fixes an issue where Playlists with a mix of Video Cloud and remote videos would cause a thumbnail from the last-played Video Cloud video to be displayed when selecting a remote video.

Version 6.18.2

24 Mar 2022

ExoPlayer 2.14.2

SDK Changes:

  • Fixed an issue where video_engagement Analytics events for remote VOD videos could have a video_seconds_viewed parameter instead of the expected range parameter.
  • Fixed player button click listeners when using custom drawables.
  • Fixed an issue where a call to NumberUtil.safeLongToInt might crash when its input is too large. Now, when the input can not be safely converted, the method returns Integer.MIN_VALUE with an explanatory message.

ExoPlayer Changes:

  • Fixed an issue where with mixed playlists with DRM and Clear content, playback failed if a Clear video is loaded after playing a DRM video.
  • Added support for setting the multiSession property (required for key rotation) when creating the DefaultDrmSessionManager in ExoPlayer.

Version 6.18.1

26 Jan 2022

ExoPlayer 2.14.2

ExoPlayer Changes:

  • Added a check to address a crash that could occur if the ExoPlayer instance becomes null and getCurrentManifest() is called in the ExoPlayerVideoDisplayComponent.

Version 6.18.0

21 Dec 2021

ExoPlayer 2.14.2

SDK Changes:

  • IMPORTANT: Support for integer data types in player, content and event properties is deprecated in the following areas of content and ad playback:
    • Playhead position, for VOD and Live playback
    • Video duration

    For a complete list of fields and methods that are migrated, see the Android: Playhead Position and Video Duration support document.

SSAI Plugin Changes:

  • With this release, the SSAI plugin has been refactored to better support playback and seeking use cases.
  • Fixes an issue where seeking in a paused player over ads could load the wrong player controls.

  • For a complete description of the behavioral and API-level changes to this plugin, see the SSAI Plugin Changes with Android SDK v6.18.0 support document.

Version 6.17.3

10 Dec 2021

ExoPlayer 2.14.2

SDK Changes:

  • Fixes a Generic Stream Concurrency (GSC) issue where the second heartbeat request would follow the first request 30 seconds later, instead of the account-configured frequency.
  • Improvements to GSC heartbeat request functionality during Player Activity, Player Fragment and Picture-In-Picture lifecycle events, as well as retries on heartbeat request failures.

Version 6.17.2

19 Nov 2021

ExoPlayer 2.14.2

SDK Changes:

  • This version adds support for Generic Stream Concurrency (GSC). Please refer to the Brightcove Support Pages for more information.
  • Limitations
    • Chromecast is not supported in this version. Support for Chromecast will be included in a future release of the SDK.
  • Known Issues
    • When sending requests to the GSC heartbeat service, the second request will follow the first request 30 seconds later, instead of at the frequency set for the account. This issue only occurs on the second heartbeat request, does not affect playback, and will be addressed in a future release of the SDK.

Version 6.17.1

14 Oct 2021

ExoPlayer 2.14.2

ExoPlayer Changes:

  • Fixed an issue with overly verbose logging from the ExoPlayerVideoDisplayComponent

Version 6.17.0

8 Oct 2021

ExoPlayer 2.14.2

SDK Changes:

  • The Brightcove Native SDK for Android now supports Android 11

ExoPlayer Changes:

  • The Brightcove Native SDK for Android now supports ExoPlayer 2.14.2. Please note the following changes:

    • In the ExoPlayerVideoDisplayComponent class the getBrightcoveDrmSession() : BrightcoveDrmSession method has been deprecated. Instead please use ExoPlayerDrmSessionManager. See ExoPlayerVideoDisplayComponent:getExoPlayerDrmSessionManager(): ExoPlayerDrmSessionManage

    • In the ExoPlayerVideoDisplayComponent class, in the InfoListener subclass, the method onDecoderInitialized(AnalyticsListener.EventTime eventTime, int trackType, String decoderName,long initializationDurationMs) has been deprecated. Instead, please use onAudioDecoderInitialized(AnalyticsListener.EventTime eventTime, String decoderName, long initializationDurationMs) : void and/or onVideoDecoderInitialized(AnalyticsListener.EventTime eventTime, String decoderName, long initializationDurationMs) : void

    • The constructor for the ExoPlayerDrmSessionManager class has been deprecated. Instead, use the ExoPlayerDrmSessionManager.Builder

    • The constructor for the OfflineLicenseManager class has been deprecated. The OfflineLicenseManager now uses the Builder pattern. See OfflineLicenseManager.Builder

    • In the class BrightcoveSegmentTemplate, the method getSegmentCount(long periodDurationUs) has been deprecated. Instead, please use getSegmentCountLong(long periodDurationUs)

    • This ExoPlayer version requires that any instance of the ExoPlayer must be created and accessed in the main thread, so any access to the ExoPlayerVideoDisplayComponent.getExoPlayer method or direct access to any ExoPlayer method must be on the main thread as well. Version 6.16.6

Version 6.16.6

4 Oct 2021

ExoPlayer 2 v2.10.8

SDK Changes:

  • Improves the video_seconds_viewed measurement in video_engagement events sent to the Brightcove Analytics back-end

ExoPlayer Changes:

  • Fixes an issue where a device could go to sleep during ad playback

Version 6.16.5

23 Aug 2021

ExoPlayer 2 v2.10.8

SDK Changes:

  • Improved support for 608/708 captions that have a language attribute
  • Emit a DID_SET_VIDEO_STILL_ERROR event when a video's poster image can not be loaded

ExoPlayer Changes:

  • Emit an AD_ERROR error event if ad loading is interrupted, or if the ExoAdPlayer or its context are null

Offline Playback Plugin Changes:

  • Fixed a problem where backgrounding or exiting the app could cause offline content to fail to play

Version 6.16.4

4 Aug 2021

ExoPlayer 2 v2.10.8

Offline Playback Changes:

  • Fixed an issue where some image files would not download successfully

Version 6.16.3

1 July 2021

ExoPlayer 2 v2.10.8

SDK Changes:

  • Adds support for Forensic Watermarking. For details, see the Forensic Watermarking with Native SDKs document.
  • Updated the VideoUtils class to add a utility method to remove the sidecar caption sources from the Video object
  • Fixed an issue where the video_duration URL parameter was not included in requests to Brightcove’s Analytics back-end for reporting

Cast Plugin Changes:

  • Added support for setting a URL to a custom player for the Cast receiver app. Please refer to the Android SDK Support Documentation for more information
  • Added support for sending selected caption and audio track information to a Cast receiver

Offline Playback Changes:

  • Added support for setting properties in the AbstractOfflineCatalog class. Offline Catalog properties can be set in two ways:

    • As a Map<String, String> of key/value pairs using the setProperties(Map<String, String>) method
    • Through the getProperties().put(key, value) method
  • Added support for creating custom NotificationChannels in the DownloadManager class. Please refer to the Android SDK Support Documentation for more information

Version 6.16.2

10 May 2021

ExoPlayer 2 v2.10.8

SDK Changes:

  • Fixed an issue where text tracks with the kind subtitles were not being parsed or displayed
  • Fixed an issue where text tracks that have the position attribute with the additional line-left or line-right attribute were not being parsed or displayed

ExoPlayer 2 Changes:

  • Fixed an issue where an incorrect index could be used to get the current selected audio language

Omniture Plugin Changes:

  • Fixed an issue where the heartbeat would continue after the player was destroyed

SSAI Plugin Changes:

  • Added parsing support for nested VAST and VMAP Extension elements

  • Added parsing support for VAST AdVerification elements

Version 6.16.1

12 Jan 2021

ExoPlayer 2 v2.10.8

SDK Changes:

  • Improved Video Engagement reporting for SSAI VOD videos.
  • The DashWidevineAuthorizer class is deprecated. Please use the WidevineAuthorizer class instead.

IMA Plugin Changes:

  • The Google IMA SDK has been updated to version 3.21.1.
  • Improved support for skippable ads, and fixed an issue where skippable ads might not exit cleanly, and ad audio might be heard after resuming content playback.
  • Fixed an issue with setting mime types for ads, where user-supplied mime types were not being set by the plugin's Builder.
  • Added plugin Builder convenience methods for:
    • Setting ad mime types in the AdsRenderingSettings object - see Builder.setMimeTypes(List) : void
    • Setting the ad video load timeout in the AdsRenderingSettings object - see Builder.setLoadVideoTimeout(int) : void
    • Setting debug mode in the ImaSdkSettings object - see Builder.setDebugMode(boolean) : void
  • Please note:

    These convenience methods are member methods in the AdsRenderingSettings and ImaSdkSettings Google IMA SDK objects. When called through the Builder directly, these methods will configure the AdsRenderingSettings and ImaSdkSettings objects that are created by default in the Builder.

    If you decide to create custom AdsRenderingSettings and ImaSdkSettings Google IMA SDK objects for use in the IMA plugin, you can call those objects' methods directly:

    • AdsRenderingSettings.setMimeTypes(List) : void
    • AdsRenderingSettings.setLoadVideoTimeout(int) : void
    • ImaSdkSettings.setDebugMode(boolean) : void

SSAI Plugin Changes:

  • Added support for Live SSAI streams that are created as remote Video objects.

Version 6.16.0

14 Oct 2020

ExoPlayer 2 v2.10.8

Cast Plugin Changes:

  • The Cast plugin has been redesigned and now supports the Brightcove Cast Receiver v2.0.
  • Please refer to the Brightcove Android Native SDK documentation, and the Brightcove Android Native SDK sample apps, for more information and code samples.

Version 6.15.1

22 Sep 2020

ExoPlayer 2 v2.10.8

SDK Changes:

  • The Brightcove Native SDK for Android now supports Arabic (RTL) language in player controls and UI labels.

  • Please note: While the Arabic language (RTL) text is supported, only left-to-right (LTR) player control layouts are currently supported.

  • Fixed an issue where certain video_view and video_engagement Analytics event parameters could include non-Western Arabic numerals for the following parameters:

    • video_view:
      • start_time_ms
      • load_time_ms
    • video_engagement:
      • range
      • video_seconds_viewed

Cast Plugin Changes:

  • The Cast plugin now supports Arabic (RTL) text in cast controls and UI labels.
  • Please note that Arabic language support does not extend to the displays (video elapsed time and duration) in the Cast expanded controller.

  • Displaying these components is controlled by the Google Cast API.

Offline Playback Plugin Changes:

  • The Offline Playback plugin now supports Arabic (RTL) text in UI labels.

Pulse Plugin Changes:

  • The Pulse plugin now supports Arabic (RTL) text in Ad controls and UI labels.

SSAI Plugin Changes:

  • The SSAI plugin now supports Arabic (RTL) text in Ad controls and UI labels.

Version 6.15.0

25 Aug 2020

ExoPlayer 2 v2.10.8

SDK Changes:

  • Implemented additional null checking for caption URIs

ExoPlayer Changes:

  • Fixed a regression in the ExoPlayerVideoDisplayComponent setPeakBitrate() method where the specified bitrate would be ignored, and the highest bitrate selected instead.

IMA Plugin Changes:

  • The Google IMA SDK has been updated to version 3.19.4. Some of the changes include:

    • SdkFactory.createAdDisplayContainer() is deprecated
    • AdDisplayContainer.setPlayer(VideoAdPlayer) is deprecated
    • AdDisplayContainer.setAdContainer(ViewGroup) is deprecated
    • AdsRequest.setAdDisplayContainer(AdDisplayContainer) is removed

      For the full list of changes, please refer to the Google IMA Android SDK release history.

  • The GoogleIMAComponent now uses a Builder for its construction.
  • The IMA plugin automatically creates the AdDisplayContainer using the BrightcoveVideoView by default.

    You may provide an AdDisplayContainerFactory to the GoogleIMAComponent.Builder to provide your own AdDisplayContainer.

  • The following methods were deprecated in the GoogleIMAVideoAdPlayer class:
    • playAd(). Use playAd(AdMediaInfo) instead
    • loadAd(String). Use loadAd(AdMediaInfo, AdPodInfo) instead
    • stopAd(). Use stopAd(AdMediaInfo) instead
    • resumeAd(). Use playAd(AdMediaInfo) instead
    • pauseAd(). Use pauseAd(AdMediaInfo) instead

  • Fixed an issue where the IMA plugin was not emitting the AD_PAUSED/AD_RESUME events when calling GoogleIMAVideoAdPlayer.pauseAd and GoogleIMAVideoAdPlayer.resumeAd, respectively.

    For more information, please visit the Brightcove Android SDK Overview in the Brightcove Support site.

VMAP Plugin changes:

  • The deprecated VMAP plugin has been removed from the Brightcove Native SDK for Android. For VMAP ad delivery, please continue to use the IMA plugin.

OnceUx Plugin Changes:

  • The deprecated OnceUx plugin has been removed from the Brightcove Native SDK for Android. Please use the SSAI plugin instead.

Version 6.14.1

7 Aug 2020

ExoPlayer 2 v2.10.8

SSAI Plugin Changes:

  • Fixes an issue where the CustomClick element would fail to parse.

  • Fixes an issue in parsing the VAST Extension element.

Version 6.14.0

8 Jul 2020

ExoPlayer 2 v2.10.8

SDK Changes:

  • Improved integration with Android TalkBack (and Samsung Voice Assistant).

  • The VideoParser will now ignore any DRM source that does not contain Widevine key systems.

  • Fixed an issue where the VideoParser would fail to parse a Thumbnail VTT Source that does not contain the bandwidth property.

  • Fixed an issue on Android TV platforms where the Player Options button would fail to display after Server-Side Ad Insertion ad breaks completed.

IMA Plugin Changes:

  • ExoPlayer is now used for Ad playback instead of MediaPlayer.

Version 6.13.3

21 May 2020

ExoPlayer 2 v2.10.8

SDK Changes:

  • Improved rendering of ruby text in sidecar closed captions. A similar improvement for in-manifest captions is forthcoming.

Cast Plugin Changes:

  • Fixed a problem where the the activity was not released as expected when the Chromecast plugin is used.

IMA Plugin Changes:

  • Added support for Audience Segment (Ad) Targeting, whereby key/value pairs are added to the ad tag URL's cust_params parameter.

SSAI Plugin Changes:

  • Added support for Audience Segment (Ad) Targeting, whereby key/value pairs are added to the VMAP Source URL.

  • Fixed a problem where an empty or malformed URL in a VAST Tracking element can cause an app crash

Version 6.13.2

24 Apr 2020

ExoPlayer 2 v2.10.8

Offline Playback Changes:

  • Upgraded the FileDownloader dependency to v1.7.7

    This upgrade fixes an issue where downloading while the app is in the background could pause unexpectedly.

Thumbnail Plugin Changes:

  • Fixed an alignment issue between the scrubber and the thumbnail preview on Android TV

Version 6.13.1

16 Apr 2020

ExoPlayer 2 v2.10.8

SDK Changes:

  • Added support for HEVC videos.

    On devices that support HEVC (with API level 21 and higher), playback of HEVC is now automatically available. See documentation for technical details.

Pulse Plugin Changes:

  • Added seek without ads support when setting adsDisabled on VideoPlaybackController

  • Added support to play Pulse passback ads

  • Added a message to indicate when the user is in a Pause Ad

Thumbnail Plugin Changes:

  • Increased size of the thumbnail image shown in tablets

  • Increased speed of thumbnail dragging on Android TV

SSAI Plugin Changes:

  • Fixed an issue where the Closed Captions might be out of sync with the Video

Version 6.12.0

5 Mar 2020

ExoPlayer 2 v2.10.8

SDK Changes:

  • Deprecated BrightcoveSurfaceView.isVideo360Supported(). Based on current supported versions, it always returns true.

Pulse Plugin:

  • With this release, the Brightcove Native SDK for Android implements the Pulse Advertising Plugin.

Version 6.11.0

7 Feb 2020

ExoPlayer 2 v2.10.8

SDK Changes:

  • Added support for the Brightcove Playback Rights Management Service.

  • Breaking Change: The Playlist object is now immutable.

  • The Playlist object can now contain a mix of videos with status Status.OK and Status.ERROR

  • Playlist.getErrorVideos(): This new method will return only videos with status of Status.ERROR

  • Playlist.getAllVideosAndErrors(): This new method will return all videos with both status, Status.OK and Status.ERROR, following the same order as returned from the Playback Rights Management Service response

  • Note: Playlist.getVideos() and Playlist.getCount() behave the same way as previous versions, that is, they consider only the videos with status Status.OK

  • Added ErrorListener.onError(List) callback.

  • Deprecated ErrorListener.onError(String) callback.

  • The Video object now has a status code, which can be either Status.OK or Status.ERROR. You may retrieve the status through Video.getStatus():Status.

  • Status.OK: The Video has all the expected properties and does not have Video.Fields.ERRORS in it.

  • Status.ERROR: The video has Video.Fields.ERRORS in its properties in the form of List<CatalogError>.

VMAP Plugin:

  • The VMAP plugin has been deprecated. For client-side advertising with VMAP and VAST documents, please use the IMA plugin.

Version 6.10.1

17 Jan 2020

ExoPlayer 2 v2.10.8

ExoPlayer Changes:

  • Fixed a crash when attempting to play an HLS Live stream.

Offline Playback Changes:

  • Fixed an issue where some VTT closed captions files would not download successfully.

Cast Plugin:

  • Added new CastMediaUtil.toMediaInfo methods without the unnecessary Android Context parameter.

  • Deprecated CastMediaUtil.toMediaInfo methods with the unnecessary Android Context parameter.

Version 6.10.0

19 Dec 2019

ExoPlayer 2 v2.10.8

SDK Changes:

  • Breaking Change: The Brightcove Android Native SDK is now built using AndroidX (JetPack) libraries. Please refer to the Android SDK Support pages for more information on this change, and required steps to migrate your application code.

  • Fixed an issue with the backgroundOpacity method in BrightcoveCaptionStyle where this method was not setting background opacity on captions as expected.

  • Fixed an issue where fullscreen functionality was not working as expected in the BrightcovePlayerFragment.

ExoPlayer Changes:

  • ExoPlayer support in the Brightcove Android Native SDK has been upgraded to 2.10.8.

  • Fixed an issue in audio track selection where higher-bitrate renditions could not be selected after switching languages.

IMA Plugin Changes:

  • Adds support for live content with pre-roll client-side ads.

SSAI Plugin Changes:

  • Fixed an issue where the Captions button would not consistently display during content playback. Please note that this issue is currently fixed for mobile devices only; a solution for Android TV devices will follow in an upcoming release.

Version 6.9.0

22 Oct 2019

ExoPlayer 2 v2.9.3

SDK Changes:

  • The Android SDK now targets and supports Android 10 (targetSdkVersion 29).

  • Fixes a RunTimeException: "Canvas: trying to use a recycled bitmap", when attempting to display the Poster Image.

  • Added the following convenience constants as HttpRequestConfig query parameters key:

    • HttpRequestConfig.KEY_DELIVERY_RULE_CONFIG_ID Used to add a Delivery Rules Config ID
    • HttpRequestConfig.KEY_AD_CONFIG_ID Used to add an SSAI Ad Config ID

ExoPlayer v1 Changes:

  • All support for ExoPlayer 1.x has been removed from The Brightcove Native SDK for Android. Please make sure to use ExoPlayer v2. For details, see the Migrating to ExoPlayer 2 Framework document.

SSAI Plugin Changes:

  • Live and Live DVR streams with Server Side Ad Insertion (Live SSAI) are now supported.

  • Breaking Change: The Event.PLAYHEAD_POSITION property in both events, EventType.PROGRESS and EventType.AD_PROGRESS, now contains the absolute playhead position, which is the same playhead position given by the underlying player.
    Please use Event.PROGRESS_BAR_PLAYHEAD_POSITION instead to get the relative playhead position.

  • The Event.PROGRESS_BAR_PLAYHEAD_POSITION property was introduced for both EventType.PROGRESS and EventType.AD_PROGRESS events which contains the relative playhead position (as Event.PLAYHEAD_POSITION did in older versions).

  • Added Ad controls for Android TV.

  • Fixed an issue where the rewind button will not rewind properly after consecutive clicks.

Version 6.8.1

31 May 2019

ExoPlayer 2 v2.9.3

ExoPlayer2 Changes:

  • ExoPlayer2 has been downgraded to version 2.9.3 due to an issue with HLS Multiple Audio Tracks in version 2.9.6.

Offline Playback Changes:

  • Add Playback Authentication Service (PAS) support.

  • The following methods are added to the com.brightcove.player.edge.AbstractOfflineCatalog:

    • findOfflineVideoById(String, @NonNull HttpRequestConfig): Video
    • findOfflineVideoById(String, @NonNull HttpRequestConfig, @NonNull OfflineCallback<Video>): void
    • requestPurchaseLicense(@NonNull Video, @NonNull EventListener, @NonNull HttpRequestConfig): void
    • requestRentalLicense(@NonNull Video, @NonNull Date, long, @NonNull EventListener, @NonNull HttpRequestConfig): void
  • The following method is removed from the com.brightcove.player.edge.AbstractOfflineCatalog

    • renewLicense(@NonNull Video, @NonNull EventListener): void
  • Fixes an issue loading poster images for downloaded videos. When available, a local image will be loaded.

FreeWheel Plugin Changes:

  • Adds support for live content with pre-roll client-side ads

SSAI Plugin Changes:

  • Fixes an issue where a content source could be loaded directly from the src attribute in the Playback API response, instead of from the contenturi attribute in the VMAP.

Version 6.8.0

1 May 2019

ExoPlayer 2 v2.9.6

SDK Changes:

  • The Android Minimum SDK Version supported by the Brightcove Native SDK for Android is now 19.

  • The Brightcove Native SDK for Android is now Java 8 compliant. Please note that Android apps developed using this version of the Android SDK may require the following directive added to the build.gradle file to ensure bytecode compatibility:

    compileOptions{
    targetCompatibility JavaVersion.VERSION_1_8
    sourceCompatibility JavaVersion.VERSION_1_8
    }

ExoPlayer2 Changes:

  • ExoPlayer2 has been upgraded to version 2.9.6

  • Please note that this upgrade has the following API changes:

  • Breaking Change Removed:constructor TrackSelectorHelper(@NonNull ExoPlayer player, @NonNull MappingTrackSelector trackSelector)

    Use constructor TrackSelectorHelper(@NonNull ExoPlayer player, @NonNull DefaultTrackSelector trackSelector)

  • Breaking Change Removed: setTrackSelector(@NonNull MappingTrackSelector trackSelector)

    Use setTrackSelector(@NonNull DefaultTrackSelector trackSelector)

  • Removed getTrackSelector(): MappingTrackSelector

    Use getTrackSelector(): DefaultTrackSelector

FreeWheel Plugin Changes:

  • The FreeWheel plugin has been updated to support FreeWheel AdManager version 6.28.0.

  • Please note that FreeWheel now packages the AdManager library as an Android Archive (AAR).

IMA Plugin Changes:

  • The IMA Plugin has been updated to support Google IMA SDK version 3.11.2.

  • This version of the Google IMA SDK supports Open Measurement standards.

  • Please refer to the Brightcove Android SDK documentation for more information.

  • Fixed an issue where midroll ads called after long periods of content playback would not play.

SSAI Plugin Changes:

  • The SSAI Plugin now supports content delivery through the Brightcove Playback Authorization Service (PAS).

  • Please note that PAS works only with the SSAI Plugin. PAS with the deprecated OnceUx Plugin is not supported.

Version 6.7.0

5 Apr 2019

ExoPlayer 2 v2.7.0

SSAI Plugin:

  • With this release, the Brightcove Native SDK for Android implements the SSAI Plugin. For more information on this new plugin, please visit the Brightcove Android SDK Overview in the Brightcove Support site.

OnceUx Plugin Changes:

  • With this release, the OnceUx Plugin is deprecated. Please use the new SSAI Plugin instead. For more information, please visit the Brightcove Android SDK Overview in the Brightcove Support site.

Version 6.6.0

29 Mar 2019

ExoPlayer 2 v2.7.0

SDK Changes:

  • A new class, HttpRequestConfig has been added. This class supports the addition of request URL parameters and/or request headers that may be required by Brightcove services (e.g. the Brightcove Edge API, or the Brightcove Playback Authorization Service (PAS)). Please refer to Brightcove Support documentation for more information on usage of this class.

  • Along with the HttpRequestConfig class, the following methods are added to the com.brightcove.player.edge.Catalog class: findPlaylistByID(String, HttpRequestConfig, PlaylistListener): void findPlaylistByReferenceID(String, HttpRequestConfig, PlaylistListener): void findVideoByID(String, HttpRequestConfig, VideoListener): void findVideoByReferenceID(String, HttpRequestConfig, VideoListener): void

  • The following findPlaylist methods are deprecated in com.brightcove.player.edge.Catalog: findPlaylistByID(String, Map<String, String>, PlaylistListener): void findPlaylistByID(String, Map<String, String>, Map<String, String>, PlaylistListener): void findPlaylistByReferenceID(String, Map<String, String>, PlaylistListener): void findPlaylistByReferenceID(String, Map<String, String>, Map<String, String>, PlaylistListener): void

  • The following findVideo methods are deprecated in com.brightcove.player.edge.Catalog: findVideoByID(String videoID, Map<String, String>, VideoListener): void findVideoByID(String videoID, Map<String, String>, Map<String, String>, VideoListener): void findVideoByReferenceID(String, Map<String, String>, VideoListener): void findVideoByReferenceID(String, Map<String, String>, Map<String, String>, VideoListener): void

Brightcove Native SDK for Android support for the Brightcove Playback Authorization Service (PAS)

  • In the Limited Availability release of the Brightcove Playback Authorization Service (PAS), the following features are supported by the Brightcove Native SDK for Android:

    • Online streaming of DRM content with PAS

    • Online streaming of HLSe content with PAS

  • In the Limited Availability release of the Brightcove Playback Authorization Service (PAS), the following features are not currently supported by the Brightcove Native SDK for Android, and will be implemented in an upcoming release:

    • Server-side Ad Insertion with the OnceUx plugin with PAS

    • Offline Playback with PAS

    • Chromecast with PAS

  • Important Note About ExoPlayer 1:

    • ExoPlayer 1 is deprecated, and will be End Of Life by the end of Q3 2019, at which point it will no longer be available in the Brightcove Native SDK for Android.

Version 6.5.1

12 Feb 2019

OnceUx Plugin Changes:

  • Fixed an issue where the IFrameResource element was being incorrectly parsed from VMAP sources.

Version 6.5.0

6 Dec 2018

SDK Changes:

  • Removed unnecessary dependencies in the Brightcove Android SDK.

  • Added asynchronous versions of the following methods to the OfflineCatalog class: getVideoDownloadStatus findAllQueuedVideoDownload findAllVideoDownload findOfflineVideoByID downloadVideo cancelVideoDownload pauseVideoDownload resumeVideoDownload deleteVideo getMediaFormatTracksAvailable

  • Fixed an issue where the estimateSize method in the OfflineCatalog class was returning an unexpected value.

  • Fixed an issue where an offline video built using VideoParser.buildVideoFromJSON() would not play as expected.

OnceUx Plugin Changes:

  • Fixed an issue where duplicate caption menu items would appear.

Cast Plugin: Release note update: While the Cast plugin has no changes in this release, it is important to note these clarifications in the currently supported features of this plugin.

  • Android 9 - Testing has shown that the following permission is required to use Chromecast with Android 9, in particular when the app is backgrounded and brought back to the foreground, and in order to use notifications to control a casting session. This uses-permission tag should be added to an app's AndroidManifest.xml: <uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>

  • Captions - Testing has shown that in-manifest captions only with Dynamic Delivery DASH display as expected.

  • Captions - In-manifest captions with HLS are not currently supported.

  • Captions - Sidecar captions in any video configuration are not currently supported. This clarification is also present in the Cast plugin release note for the Brightcove Android SDK v6.3.0 release.

Version 6.4.0

17 Oct 2018

SDK Changes:

  • The Brightcove Native SDK for Android now supports Android 9.0 (Pie). Please note that with the Android Pie release you must be aware of some important changes, such as Network TLS enabled by default, Apache HTTP client deprecation and the deprecation of Android ConnectivityManager constants. You might need to make additional changes in your application. For more information, please visit https://support.brightcove.com/android-pie-support-native-sdk-android.

  • The DefaultSourceSelectionController and ExoPlayerSourceSelectionController will now prefer HTTPS sources in its selection if available, otherwise the selection controller will select the first source available.

Older releases

Version 6.3.2

24 Sep 2018

SDK Changes:

  • Fixed an issue where the Settings button in Android TV was not working as expected.

  • Fixed an issue where getRefereiceId() and getDescription() in the Video class were not working as expected.

  • Added a method, getLongDescription(), to the Video class.

  • Fixed an issue in the OfflineCatalog class where calling setDownloadPath with a null argument caused a NullPointerException.

  • Fixed an issue in the OfflineCatalog class where calling the estimateSize method could return an unexpectedly large value.

  • Fixed an issue where an Activity that was not enabled for Picture-In-Picture would throw a non-fatal IllegalStateException. The error is now logged as a warning.

  • Deprecated support for the BrightcoveClosedCaptioningSurfaceView class.

OnceUx Plugin Changes:

  • Added support for the VAST Icon element.

Version 6.3.1

09 Aug 2018

SDK Changes:

  • Fixed an issue where Android Studio will throw an exception in the Layout Editor when rendering the BrightcoveVideView.

ExoPlayer v2 Changes:

  • Added LoadControlConfig and AllocatorConfig classes. The values set in these classes will be used to create the ExoPlayer DefaultLoadControl object, which is used when creating the ExoPlayer instance. The AllocatorConfig may be set when creating the LoadControlConfig. The LoadControlConfig may be set to the ExoPlayerVideoDisplayComponent instance.

OnceUx Plugin Changes:

  • Fixed an issue where the default poster image shown in the BrightcoveVideoView will not disappear after the preroll starts playing.

Version 6.3.0

27 July 2018

Cast Plugin Changes: The Cast Plugin has been updated with a dependency on the ExoPlayer Cast Extension v2.7.0. Please note that certain VideoCloud features have limited support, or are not yet supported when using Cast plugin with the Google sample receiver app.

  • Android 9 - Testing has shown that the following permission is required to use Chromecast with Android 9, in particular when the app is backgrounded and brought back to the foreground, and in order to use notifications to control a casting session. This uses-permission tag should be added to an app's AndroidManifest.xml: <uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>

  • Captions - Testing has shown that in-manifest captions only with Dynamic Delivery DASH display as expected.

  • Captions - In-manifest captions with HLS are not currently supported.

  • Captions - Sidecar captions in any video configuration are not currently supported.

  • Widevine Modular DRM is not supported when using the Cast plugin with the Google sample receiver app.

  • Multiple Audio Tracks are not supported when using the Cast plugin with the Google sample receiver app.

  • Client-side and Server-side Advertising is not supported when using the Cast plugin with the Google sample receiver app.

  • Live and Live DVR streams are not supported when using the Cast plugin with the Google sample receiver app.

FreeWheel Plugin Changes:

  • The FreeWheel plugin has been updated to support FreeWheel AdManager v6.23.0. Please note that this is a breaking change, and that this version of the Brightcove Native SDK for Android will not work with previous versions of FreeWheel AdManager. Please refer to the release notes in FreeWheel AdManager v6.23.0 for more information on the changes in that version.

IMA Plugin Changes:

  • The IMA Plugin now supports v3.9.0 of the Google IMA SDK for Android.

Version 6.2.3

16 July 2018

SDK Changes:

  • Offline Playback: Upgraded the FileDownloader library version to 1.7.4.

  • Offline Playback: Fixed an issue where backgrounding the app and changing network status could throw an IllegalArgumentException.

Version 6.2.2

9 July 2018

ExoPlayer v2 Changes:

  • Fixed an issue where values in the HEADERS field of the Video object were not being added as expected.

OnceUx Plugin Changes:

  • Fixed an issue where seeking without ads during the video could result in ad events still being fired.

Version 6.2.1

5 June 2018

ExoPlayer v2 Changes:

  • The Brightcove ExoPlayer has been reverted to v2.7.0, to work around a regression in backward seek behavior in live streams, and an unexpected change in how the Live Window Range value is calculated.

  • Fixed an issue with the calculation for BrightcoveSegmentTemplate.getSegmentCount when the DASH manifest has the startNumber parameter different than 0.

  • Added a validation for a potential NullPointerException in ExoPlayerVideoDisplayComponent.reportPlayerState

Version 6.2.0

18 May 2018

SDK Changes:

  • Added a VideoParser class with methods to build a Video and a Playlist from a JSON object, following the Brightcove Playback API response format.

  • Overloaded the requestPurchaseLicense() and requestRentalLicense() methods in the OfflineCatalog class in order to set the OutputProtection through the CustomerRightsTokenConfig object.

  • Updated the FileDownloader library to 1.7.3 for Offline Playback.

  • Fixed a race condition for Offline Playback when deleting multiple videos while being downloaded.

ExoPlayer v2 Changes:

  • The Brightcove ExoPlayer has been updated to 2.7.3.

  • The following methods were deprecated from BrightcoveDrmSession interface:

    • DrmException getDrmError()

    • Map<String, String> queryKeyStatus()

    • byte[] getOfflineLicenseKeySetId()

OnceUx Plugin Changes:

  • Added support to parse and read all Ad Creative IDs from SSAI VMAP.

  • Removed requirement for id attribute in Ad tag.

Version 6.1.2

24 Apr 2018

SDK Changes:

  • Fixed an issue where the download would not resume in slow networks (down to 256kbps) after killing and restarting the app.

OnceUx Plugin Changes:

  • Fixed an issue where all ads will be played after seeking over multiple ad pods.

Version 6.1.1

6 Apr 2018

SDK Changes:

  • Fixed an Offline Analytics dependency that was unexpectedly increasing app sizes.

  • Fixed an issue with Offline Playback where some downloads were hanging at 99%.

Version 6.1.0

29 Mar 2018

SDK Changes:

  • Added support for Picture-in-Picture on Android Oreo.

  • Fixed a UI performance issue for Offline Playback when downloading a video by making all Download Manager callbacks on a background thread.

  • Improvement in download speeds for Offline Playback.

  • Fixed an Offline Playback issue where the download_id parameter was missing from video_download_request and video_download_cancellation events for clear downloads.

  • Fixed an issue with WebVTT captions where using the "line:" attribute without a percentage (%) character was preventing the captions from displaying.

  • AbstractOfflineCatalog.renewLicense method is deprecated and is now non-functional. To renew an offline license, please use either AbstractOfflineCatalog.requestRentalLicense(Video, Date, long, EventListener) or AbstractOfflineCatalog.requestPurchaseLicense(Video, EventListener)

ExoPlayer2 changes:

  • ExoPlayer2 now reports the cumulative number of bytes downloaded through the current video engagement event and sends it to the Analytics server as media_bytes_transferred.

  • Added a convenience method to set the peak bitrate before preparing the player for a new video, or any time ExoPlayerVideoDisplayComponent.setPeakBitrate(int peakBitrate) is called.

Version 6.0.2

30 Jan 2018

SDK Changes:

  • Added support for offline playback analytics.

  • The deprecated Widevine Classic plugin has been removed.

IMA Plugin Changes:

  • Fixed an issue where viewable_impression beacons were not being fired as expected.

OnceUX Plugin Changes:

  • Fixed an issue where ad markers were not being displayed in their expected locations.

  • Fixed issues involving seeking past advertisements, and resuming playback from the intended seek position.

  • Fixed issues where player controls would appear in SSAI ads on orientation changes.

Version 6.0.1

18 Dec 2017

SDK Changes:

  • The deprecated legacy Media API classes, those in the com.brightcove.player.media package, were removed from the Brightcove Native SDK for Android.

  • The following classes were moved from com.brightcove.player.media to com.brightcove.player.model. Please note this is a breaking change:

    • DeliveryType

    • CaptionType

    • ErrorFields

    • VideoFields

ExoPlayer v2 Changes:

  • The Brightcove Native SDK for Android using ExoPlayer 2 (v2.5.3) is in General Availability.

  • Added support for the Omniture plugin when using ExoPlayer 2.

  • Several bug fixes.

ExoPlayer v1 Changes:

  • The Brightcove Native SDK for Android using ExoPlayer 1 has been deprecated. For more information about the migration process, please visit https://support.brightcove.com/migrating-exoplayer-2-framework

Complete release notes

For a complete list of release notes, see the Brightcove Native SDK for Android Release Notes.