Skip to main content



  • Bugfixes -
    • Resolved NullPointerException on background threads.
    • Potential reduction of 6122 errors.


  • Security updates.


  • Updated the implementation of FOREGROUND_SERVICE_DATA_SYNC, requiring permission to be provided on the app side.
  • Bugfixes -
    • Fixed a crash occurring when a translucent primaryColor was set for the app theme.
    • Fixed the caption search button visibility issue.
    • Resolved the cast context leak.

Note: Ensure android.permission.FOREGROUND_SERVICE_DATA_SYNC is declared in the manifest for download to work when target SDK version is set as 34 and higher.


  • Added Throwable for methods that can throw exceptions.
  • Bugfixes -
    • Fixed RemoteServiceException coming while downloading videos.
    • Fixed few NullPointer exceptions.


  • Upgraded Play Integrity request from Classic to Standard.
  • Bug fixes:
    • Fixed SecurityException with media downloads when targetSdkVersion is set to 34.


  • Exception handling when player not ready.
  • Bugfixes -
    • Fixed NullPointerExceptions related to data initialization and background process.
    • Added offline data synchronization.


  • Added support for token(alternative of otp).
  • Updated minSdkVersion to 21 and compileSdk to 34.
  • Bugfixes -
    • Fixed caption search visible at multiple places issue.
    • Fixed a NullPointerException and an ANR related to MediaDRM.


  • Added an API, DownloadStatus.isExpired(Context), to check if downloaded media has expired.
  • Displaying error code 6187 when attempting to play an expired downloaded file.
  • Bugfixes -
    • Fixed a NullPointerException related to onDrmSessionAcquired.
    • Addressed an "Application Not Responding" (ANR) error.
    • Resolved a crash in the Bottom Sheet: occurred when pressing the home button while the Bottom Sheet was open.


  • Bugfixes -
    • Fixed auto resume not working properly for offline downloads.
    • Fixed waiting text coming on player after video load.
    • Fixed additional status bar space coming in Flutter.


  • Removed support for safetynet. Use Play integrity instead.
  • Upgraded minSdkVersion to 19.
  • Bugfixes -
    • Fixed download failing due to download being requested in the background.
    • Fixed NullPointerException related to onDrmSessionAcquired.
    • Exception Handling


  • Added play integrity support for media download.


  • Bugfix - Added PlatformSchedulerService for media3


  • Adding cross platform resume.


  • Bug fix - Conflict of media3 PlayerView with exoplayer.


  • Bugfix - Fixed the Exoplayer version mismatch error (Error 1203) coming while loading a player in release apk.


  • Updated DownloadStatus object to include displayable title and description provided while downloading a video.
  • Added default player controls in case an error occurs while loading controls
  • Bug Fixes -
    • Fixed an issue where the download query filter by status was not functioning correctly.
    • Resolved the problem of native controls not being displayed for certain videos.


  • Error message upon transitioning from idle to playing state has been eliminated.


  • Migrated to AndroidX Media3 from ExoPlayer.
  • Displaying video tracks according to device capabilities.


  • Showing media title with download progress notification.
  • Bug fix - NoSuchMethodError for WindowInsets.getDisplayCutout().


  • Bug fixes -
    • Removed usage of non-sdk API onApplyWindowInsets.
    • Handling NullPointerException with DlServiceSpec.fromJSONString().


  • Added option to get description from DownloadStatus.
  • Resolved the problem where the player UI control's transparent background was not visible.
  • Resolved the problem where the video was started from beginning after an error occurs.
  • Incorporated 5114 as retryable error code.


  • Backport version with exoplayer dependency v2.19.1
  • Latest changes and fixes picked from version 1.22.5 excluding Media3.


  • Instead of invoking pack-up, we now pause the player to avoid reloading of the player.
  • Bug fixes -
    • Fixed download notification causing crash when started in background.
    • Fixed NullPointer exception when updating speed


  • Added support for windowLayoutInDisplayCutoutMode with inbuilt player UI.
  • Improved feedback of double tap to skip forward and backward.
  • Implemented fullscreen behavior with video in portrait and landscape mode.
  • Fullscreen Changes for Player UI:
    • Fixed auto rotate lock while going into fullscreen mode.
    • Implemented fullscreen behavior based on aspect ratio:
      • Vertical videos will go fullscreen in portrait mode.
      • Horizontal videos will go fullscreen in landscape mode.
      • Added APIs enterFullScreen and exitFullScreen to enter or exit fullscreen in VdoPlayerUIFragment.
      • Added FullScreenActionListener to monitor when video enters or exits fullscreen. The listener can be set using the method setFullscreenActionListener of VdoPlayerUIFragment.
  • Added API to expose playerOption.
  • Added support for handling fullscreen for custom back press implementation
  • The import path for VdoParamsGenerator has been modified.

Note: If the enterFullScreen or exitFullScreen method is called from onConfigurationChanged, the video goes into fullscreen but the orientation needs to be handled manually.


  • Added support for play integrity.
  • Fixed concurrency issue with offline download.


  • Added support to conserve player config across session.
  • Reduce watermark text size proportionately for a smaller screen.
  • Bug fixes -
    • Releasing media session when player stops.
    • Showing "Tap to retry" only when error message is retry-able with the built-in player ui.
    • Going to PiP closes the bottom sheet and dialogs with the built-in player ui.


  • Upgraded exoplayer dependency to 2.18.5
  • Added view overlay for fullscreen and picture in picture.
  • Bug fixes


  • Bug fix - Incorrect MediaInfo.duration with DownloadStatus.


  • Changed exoplayer data source configurations.


  • VdoPlayerUIFragment now has an option to disable default controls.
  • Pinch to zoom is now supported with VdoPlayerUIFragment default controls.
  • The player resize mode can now be modified.
  • Added support for downloading media without audio.
  • Upgraded exoplayer dependency to 2.18.2
  • Bug fixes.


  • Minor Improvements


  • Added support for Chromecast.


  • Added support for picture in picture mode.
  • Added callback for persistent OTP with save offline.
  • Updated CompileSdkVersion from API level 31 to 33.
  • Updated TargetSdkVersion from API level 30 to 32.
  • Vdocipher cast module moved into core module. Cast module dependency no longer needs to be specified separately.
  • Removed jcenter due to deprecation.
  • Fixed memory leaks.


  • Fixed audio issues with offline playback.

  • Changed signature of OptionsDownloader. Context is now required for the instantiation of OptionDownloader.

     OptionsDownloader optionsDownloader = new OptionsDownloader(context); //Pass context here.
  • Fixed VdoDlService memory leak.


  • Code optimisation and refactoring


  • Bug fixes related to HLS playback

  • First call to onBackPressed() is handled by VdoPlayerUIFragment to manage player orientation and state then subsequent calls are passed to attached activity.

  • Option to disable initital handling of onBackPressed() in VdoPlayerUIFragment by setting app:handleBackPress="false". This can be used to handle all back press action in activity.

    app:handleBackPress="false" //by default it's true


  • Added support for TV applications in VdoPlayerUIFragment


  • Fixed issue with caption selection
  • Increased gesture area for double tap in VdoPlayerUIFragment
  • Added migrations for database changes across SDK


  • Player UI enhancements
  • Fixed issue with clear storage option in VdoPlayerUIFragment


  • Player UI enhancements
  • Multiple download issue fixed
  • Upgraded exoplayer dependency to 2.18.1
  • Bug fixes


  • New VdoPlayerUIFragment with built-in player controls
    • Option to enable or disable player controls
    • Media can be saved and streamed locally
  • Bug fixes


  • Adaptive playback bug fix


  • Upgraded exoplayer dependency to 2.18.0
  • Added caption support for offline playback
  • Added option in VdoInitParams to resume video from last playback position
  • Added callback to provide an event to resume from saved seek position
  • Bug fixes


  • Upgraded exoplayer dependency to 2.17.1
  • Implemented offline downloads using exoplayer
    • Added feature to download content in external storage
    • Use VdoDownloadManager.getInstance(@NonNull Context context, @Nullable String downloadLocation) with DownloadRequest.Builder(@NonNull DownloadSelections selections) and vdoDownloadManager.enqueueV2(@NonNull DownloadRequest downloadRequest) to use new download implementation
  • Provided option for customising download notification helper
  • Added feature to search using selected caption
  • Added feature to set default caption
  • Enhanced watermark feature
  • Bug Fixes

Note - - If video download is paused and download location is changed, the half downloaded content needs to be removed manually from device storage and download should be restarted. - In case of re-downloading a video, existing file is removed and downloaded again with new selected tracks


  • Fix Track class equals() and hashCode()
  • Bug fixes


  • Update minSdkVersion to 18. Apps depending on this version will need to set a minSdkVersion of 18 or above
  • Fix PlaybackEventListener#onBufferUpdate callback not being called
  • Move VdoInitParams, PlayerHost and related classes to top level classes
  • Class name changes are:
    • VdoPlayer.PlayerHost --> PlayerHost
    • VdoPlayer.InitializationListener --> PlayerHost.InitializationListener
    • VdoPlayer.PlayerHostNotReadyException --> PlayerHost.PlayerHostNotReadyException
    • VdoPlayer.VdoInitParams --> VdoInitParams


  • Upgrade exoplayer dependency to 2.14.2
  • Restore track selections on player restore
  • Bug fixes


  • Option to block devices with ABD debugging on
  • Bug fixes


  • Upgrade exoplayer dependency to 2.12.3
  • Regular security and bug fix updates


  • Upgrade exoplayer dependency to 2.11.8
  • Add api to get device's analytics ID on vdocipher logs for error handling
  • Bug fixes.


  • Add option in VdoInitParams to turn off playback analytics collection.
  • Disable auto backup of downloaded offline video index.
  • Add error code for the case when a requested offline video is not found on the device.
  • Bug fixes.


  • SafetyNet Implementation for security enhancements


  • Offline Download Video Watermark addition


  • Bug fixes
  • Added Cast plugin dependencies


  • Further classify generic errors so they are easier to debug.
  • Bug fixes


  • Implemented Watermark Skip Behaviour
  • Bug fixes


  • Some generic error codes have been replaced with more informative specific ones.
  • Bug fixes.


  • New sdk available for Google Cast support; integration instructions and demo provided in sample app on github
  • Added support to specify resume time and autoplay behavior in VdoInitParams
  • Added support-library based player fragment
  • Improved offline playback compatibility
  • Bug fixes.


  • Fixed delayed query results for offline downloads.
  • Fixed unreliable deletion for offline downloads.
  • Updated to new gradle dependency configurations.
  • Bug fixes.


  • Added api to specify start and end time for playback in VdoInitParams.
  • Additional error information, when applicable, is available in DownloadStatus#reasonDescription, which can be parsed as a json to obtain details.
  • Bug fixes.


  • Added api to easily set and query adaptive mode.
  • Finer permission denial error codes and messages.
  • Bug fixes.