[object Object] Icon

Encoding
Learn how to create, start, manage and modify Encodings

[object Object] Icon

Player
Learn how to create, start, manage and modify Players

[object Object] Icon

Analytics
Learn how to create, start, manage and modify Analyticss

Docs Home
User shortcuts for search
Focus by pressing f
Hide results by pressing Esc
Navigate via   keys

Player Android / AndroidTV Releases

Latest Releases

Date

Version

Stable

6/8/2021

3.2.0

Added

  • TweaksConfiguration.useDrmSessionForClearSources that specifies whether a DRM session should be used for clear sources in a playlist if they follow after a DRM protected source
  • Performance improvements when using the Bitmovin Web UI by caching values that are fetched frequently

Fixed

  • TTML image subtitle positioning in SubtitleView
  • Potential crash when detaching and attaching a Surface to the player while playing non-DRM protected content and then detaching again when playing DRM protected content within the same playback session

Stable

5/26/2021

3.1.0

Added

  • BufferConfig.startupThreshold to configure the minimum amount of seconds of playback data to buffer before starting playback for the first time
  • BufferConfig.restartThreshold to configure the minimum amount of seconds of playback data to buffer before starting playback again after a stall

Fixed

  • Potential RemoteServiceException when setting an OfflineConfig
  • UI not reflecting correct video qualities and playback speed when attaching the Player to the PlayerView after loading a source

Stable

5/11/2021

3.0.1

Fixed

  • PlayerEvent.Inactive not being emitted for the previous playback session when loading new sources into an already active player
  • Potential crash when starting playback during a cast session
  • Potential exception when casting to a remote device is stopped while it is actively playing
  • Potential selection of wrong tracks when downloading HLS content
  • Progressive content not being downloaded for offline playback
  • Deadlock when using VR functionality
  • UI always becoming visible after exiting PiP, ignoring previously set visibility
  • PiP button not being displayed in the web UI

Stable

4/27/2021

3.0.0

V3 of the Android Player SDK marks a new direction where the player itself and the sources it plays back become more decoupled. Check out the V2 -> V3 Migration Guide for a detailed description and migration steps.

Added

  • Scope information to dependencies in the generated POM file of the SDK in order to not unnecessarily pollute the namespace of the consuming project
  • The SDK now includes the source-code of the api package for a better developer experience without the need to consult the JavaDocs or external docs frequently
  • Completely reworked documentation for a more productive and enjoyable learning experience. The new docs are based on Kotlin and include more information, a new design, search functionality and more
  • More intuitive and flexible way of handling event subscriptions with the new EventEmitter, which is implemented by the Player, Source and PlayerView. It now requires less boilerplate to subscribe/unsubscribe to events and works with either lambdas or EventListener implementations, offering intuitive usage from Kotlin and Java
  • Player, which replaces the BitmovinPlayer as the main player type. A Player instance can be created via Player.create
  • Source, which represents the new main type that is loaded into a Player. It emits its own events and is configured via the SourceConfig. A Source instance can be created via Source.create
  • PlaylistConfig, which allows the configuration of a playlist consisting of multiple Sources. This config can then be loaded into a player instance in order to enable gapless playback across multiple sources, as upcoming sources can be preloaded before they begin playback
  • Player.playlist to manage the player's playlist and transition between sources
  • Player.source, which returns the currently active Source
  • Player.load(Source) to enable loading of the new Source type
  • SourceConfig.url, which returns the url of the SourceConfig
  • SourceConfig(url: String, type: SourceType) constructor to create a SourceConfig of a specific type
  • PlayerEvent.PlaylistTransition, which is emitted when the player transitions between two sources in a playlist
  • SourceEvent.DurationChanged, which is emitted when a source transitions from live to VoD
  • PlayerEvent.Active, which is emitted when a playback session starts (i.e. a Source or PlaylistConfig is loaded into the player)
  • PlayerEvent.Inactive, which is emitted when the player is unloaded

Changed

  • Renamed Maven artifactId from playercore to player. The full dependency is now com.bitmovin.player:player:<version>
  • Moved all public API to new com.bitmovin.player.api package, requiring a simple re-import. Some concrete implementations were not moved
  • Renamed all classes/interfaces that have acronyms in their name to follow a consistent naming pattern (e.g. VR to Vr, API to Api)
  • Replaced BitmovinPlayerEvent with Event and two subtypes: PlayerEvent and SourceEvent
  • All events are now split up between PlayerEvent and SourceEvent (e.g. ReadyEvent is now PlayerEvent.Ready, SourceLoadedEvent is now SourceEvent.Loaded)
  • Error codes were reworked and split up into PlayerErrorCode and SourceErrorCode enums
  • Warning codes were reworked and split up into PlayerWarningCode and SourceWarningCode enums
  • EventListener now has a onEvent function to make it generic and usable for all events instead of requiring a different interface for each event
  • SourceEvent.Load.sourceConfig of type SourceConfig to SourceEvent.Load.source of type Source
  • SourceEvent.Loaded.sourceConfig of type SourceConfig to SourceEvent.Loaded.source of type Source
  • PlayerEvent.Seek now has from and to properties of type SeekPosition
  • Default Bitmovin Web UI version to 3.25.0
  • CAF is now used as the default cast receiver
  • Renamed SourceItem to SourceConfig
  • Renamed all configuration objects to use the Config suffix instead of the Configuration suffix
  • Refactored many configs to data classes, making it possible to use named parameters instead of setters (e.g. PlayerConfig(advertisingConfig = AdvertisingConfig()))
  • Changed enum code style from SCREAMING_SNAKE_CASE to PascalCase
  • Renamed BitmovinPlayerView to PlayerView
  • Renamed BitmovinSubtitleView to SubtitleView
  • Renamed BitmovinPlayerNotificationManager to PlayerNotificationManager
  • SourceConfig to only handle a single ProgressiveSource
  • SourceConfig to only handle a single DrmConfig
  • SourceConfig.setPersistentPoster to sourceConfig.setPosterPersistent
  • Renamed MediaSourceType to SourceType
  • Deprecated constructor SourceConfig(url: String) in favour of SourceConfig.fromUrl(url: String)
  • Changed all Array return types in the Player to return List instead
  • Improved nullability information on PlayerConfig, VrConfig and LowLatencyConfig
  • Renamed FullscreenHandler.isFullScreen to FullscreenHandler.isFullscreen for consistency
  • SourceConfig.posterSource is now of type String? instead of URLResource
  • Changed return type of AdvertisingConfig.schedule from Array to List
  • Changed return types of PlaybackConfig.videoCodecPriority and PlaybackConfig.audioCodecPriority from Array to List
  • Renamed AdaptationConfig.isAllowRebuffering to AdaptationConfig.isRebufferingAllowed
  • Track.id is not nullable anymore

Removed

  • Support for Bitmovin Web UI v2. Use Bitmovin Web UI v3 instead
  • Support for non-CAF Cast Receivers
  • EventHandler. Refer to the new EventEmitter to see how to subscribe to events of the Player/Source/PlayerView
  • All *Listener classes, as the new EventEmitter works with lambdas or generic EventListener implementations
  • Player.setup. In order to re-configure player behaviour, a new player must be created
  • ConfigurationUpdatedEvent
  • Player.load(SourceConfiguration). Use Player.load(Source) or Player.load(SourceConfig) instead
  • flags parameter from OfflineContentManager.getOfflineContentManager() and BitmovinDownloadService()
  • Empty Config interface that some configs implemented
  • CastConfig. Use RemoteControlConfig instead
  • PlaybackConfig.getAutoplayEnabled. Use isAutoplayEnabled instead
  • PlaybackConfig.getMuted. Use isMuted instead
  • PlaybackConfig.getTimeShiftEnabled. Use isTimeShiftEnabled instead
  • AdBreakConfig.skippable. Use skippableAfter instead
  • LinearAd.skippable. Use skippableAfter instead
  • Deprecated BitmovinCastManager.initialize functions
  • Track.getDefault. Use isDefault instead
  • ThumbnailTrack constructor which allows setting the url, label, id and isDefault. Use ThumbnailTrack(url) instead
  • StyleConfig.getUiEnabled. Use isUiEnabled instead
  • getShowErrors, isShowErrors and setShowErrors from the StyleConfig
  • Deprecated methods from SourceConfig
  • Deprecated PlayerAPI functions. The removed functionality can be found on their individual namepsaces (e.g. Player.buffer, Player.lowLatency, Player.vr)
  • PlayerConfig.fromJSON
  • PlayerAPI and moved definitions to the Player interface
  • Generic type parameter from UserInterfaceApi
  • DrmSystems enum. Use WidevineConfig and ClearKeyConfig directly
  • PlayerView constructor that takes a PlayerConfig. Use PlayerView(Context, Player?) to provide a custom player instead
  • GoogleCastReceiverVersion and all usages
  • PlayerFragment
  • JsonConverter

Deprecated

  • MediaSource, AdaptiveSource, HlsSource, SmoothSource, ProgressiveSource and DashSource. SourceConfig should instead be constructed using an url and a SourceType. Alternatively, SourceConfig.fromUrl(String) can be used to try and auto-detect the source type. These deprecated functions will be removed in an upcoming minor version
  • SourceConfig.addSubtitleTrack functions that do not take a SubtitleTrack directly. These deprecated functions will be removed in an upcoming minor version
  • SourceConfig.setThumbnailTrack function that does not take a ThumbnailTrack directly. This deprecated function will be removed in an upcoming minor version

Stable

6/8/2021

2.68.0

Added

  • Performance improvements when using the Bitmovin Web UI by caching values that are fetched frequently

Fixed

  • TTML image subtitle positioning in BitmovinSubtitleView

Stable

5/26/2021

2.67.0

Added

  • BufferConfiguration.startupThreshold to configure the minimum amount of seconds of playback data to buffer before starting playback for the first time
  • BufferConfiguration.restartThreshold to configure the minimum amount of seconds of playback data to buffer before starting playback again after a stall

Fixed

  • Potential RemoteServiceException when setting an OfflineConfig

Stable

5/11/2021

2.66.1

Changed

  • Reopened BitmovinPlayerView to allow for inheritance again. This class will be final starting with 3.0.0, so it is not recommended to directly inherit it if existing workflows don't depend on it.

Fixed

  • Potential crash when starting playback during a cast session
  • Potential selection of wrong tracks when downloading HLS content
  • UI always becoming visible after exiting PiP, ignoring previously set visibility
  • Progressive content not being downloaded for offline playback

Stable

4/27/2021

2.66.0

Added

Changed

  • Updated Koin dependency to 2.2.2

Fixed

  • Crash when seeking very often in a short time
  • Crash on pre API 24 devices, due to usage of Java 8 API

Stable

4/13/2021

2.65.0

Added

  • Support for side-loaded SubtitleTracks when casting to a v3 (CAF) receiver

Fixed

  • Starting a cast session during client-side ad playback causes the local playback to continue side by side with the cast playback
  • HLS streams including both #EXT-X-PLAYLIST-TYPE:EVENT and #EXT-X-ENDLIST being incorrectly identified as live instead of VoD streams

Stable

3/30/2021

2.64.0

Added

Changed

  • Update play-services-cast-framework to 19.0.0

Fixed

  • Text tracks reported with SUBTYPE_NONE from a CAF receiver are not considered as subtitle tracks

Latest Releases

Give us feedback