[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

5/10/2022

3.18.0

Added

  • Source.availableAudioTracks, which provides the currently available audio tracks of the source
  • Source.availableAudioQualities, which provides the currently available audio qualities of the selected audio track of the source
  • SourceEvent.AudioAdded to be emitted from the Source for which the audio track was added. It is now also emitted for inactive sources in a playlist
  • SourceEvent.AudioRemoved to be emitted from the Source for which the audio track was added. It is now also emitted for inactive sources in a playlist
  • SourceEvent.AudioTracksChanged, which is emitted when the Source.availableAudioTracks changed
  • SourceEvent.AudioQualityAdded, which is emitted when a new audio quality was added to Source.availableAudioQualities
  • SourceEvent.AudioQualityRemoved, which is emitted when an audio quality was removed from Source.availableAudioQualities
  • SourceEvent.AudioQualitiesChanged, which is emitted when the Source.availableAudioQualities changed
  • SourceEvent.AudioChanged to be emitted from the Source for which the audio track changed. It is now also emitted for inactive sources in a playlist
  • Source.setAudioTrack, which allows setting an audio track for the source
  • Source.selectedAudioTrack, which provides the currently selected audio track of the source
  • SourceEvent.AudioQualityChanged to be emitted from the Source for which the audio quality changed. It is now also emitted for inactive sources in a playlist
  • Source.setAudioQuality, which allows setting a fixed audio quality for the source
  • Source.selectedAudioQuality, which provides the currently selected audio quality of the source
  • SourceEvent.AudioDownloadQualityChanged to be emitted from the Source for which the download quality changed. It is now also emitted for inactive sources in a playlist
  • SourceEvent.Warning and SourceEvent.Error to be emitted from the Source for which the respective warning or error occurred. It is now also emitted for inactive sources in a playlist

Fixed

  • Crash when creating a PlayerNotificationManager on Android 31 devices
  • Some errors not being surfaced via the corresponding SourceEvent.Error or PlayerEvent.Error listeners

Stable

4/26/2022

3.17.0

Added

  • Source.availableSubtitleTracks, which provides the currently available subtitle tracks of the source
  • SourceEvent.SubtitleAdded to be emitted from the Source for which the subtitle track was added. It is now also emitted for inactive sources in a playlist
  • SourceEvent.SubtitleRemoved to be emitted from the Source for which the subtitle track was added. It is now also emitted for inactive sources in a playlist
  • SourceEvent.SubtitleTracksChanged, which is emitted when the Source.availableSubtitleTracks changed
  • Source.setSubtitleTrack, which allows setting a subtitle track for the source
  • Source.selectedSubtitleTrack, which provides the currently selected subtitle track of the source
  • SourceEvent.SubtitleChanged to be emitted from the Source for which the subtitle track changed. It is now also emitted for inactive sources in a playlist

Fixed

  • User-Agent header being ignored/overridden when set via the PreprocessHttpRequestCallback
  • Download service crashing when setting the OfflineConfig before creating an OfflineContentManager

Stable

4/12/2022

3.16.0

Added

  • Source.setVideoQuality, which allows setting a fixed video quality for the source
  • Source.selectedVideoQuality, which provides the currently selected video quality of the source

Changed

  • Download Service stops itself when all downloads are suspended

Fixed

  • Last ad frame being visible after orientation changes on Android 12
  • Main content being visible in background during fullscreen ad playback, if aspect ratio does not exactly fit the screens ratio
  • No audio being played back after switching from a fixed AudioQuality to "auto"
  • AudioTrack selection being ignored after selecting a AudioQuality
  • Foreground notification of the download service not vanishing if all downloads are suspended

Stable

3/16/2022

3.15.0

Added

  • Source.availableVideoQualities, which provides the currently available video qualities of the source
  • SourceEvent.VideoQualityAdded, which is emitted when a video quality has been added to the source
  • SourceEvent.VideoQualityRemoved, which is emitted when a video quality has been removed from the source
  • SourceEvent.VideoQualitiesChanged, which is emitted when the Source.availableVideoQualities changed
  • SourceEvent.VideoDownloadQualityChanged to be emitted from the Source for which the download quality changed. It is now also emitted for inactive sources in a playlist

Fixed

  • Offline thumbnail scrubbing not working on devices running Android 11+
  • Casting to a remote device being stopped when destroying the Bitmovin Player
  • ExpandedControllerActivity loading endlessly if pausing an active cast session
  • Wrong video qualities being displayed in Bitmovin Web UI when video qualities change during playback
  • Potential crash when getting a buffer level via BufferApi.getLevel
  • SubtitleTrack selection is reset to default when selecting an AudioTrack
  • AudioTrack selection is reset to default when selecting a SubtitleTrack

Stable

3/16/2022

3.14.1

Changed

  • Integrated changes from ExoPlayer version 2.16.1
  • SourceOptions.startOffset is now nullable and null per default. This change was necessary to properly support EXT-X-START:TIME-OFFSET values.

Fixed

  • Live edge being clamped to EXT-X-START:TIME-OFFSET value if present in a live HLS playlist. This could lead to an invalid DVR window, affecting potential timeshift operations.

Known Issues

  • AudioTrack selection is reset to default when selecting a SubtitleTrack and vice versa

Stable

3/16/2022

3.13.3

Added

  • Source.seekableRange, which returns a time range in seconds the player can seek in between. Does not return valid values for live sources yet
  • AdaptationConfig.initialBandwidthEstimateOverride to replace AdaptationConfig.startupBitrate as the latter does not do what the name suggests

Changed

  • Updated IMA SDK dependency to version 3.26.0. This may require an update of the dependent Google Ads Play Services.
  • Updated Google Cast SDK to 21.0.1
  • PlayerEvent.TimeChanged is now emitted on the main thread

Fixed

  • Player.seek or Player.timeshift being ignored when called inside PlayerEvent.Ready listener
  • PlayerEvent.TimeChanged being emitted before the start offset is applied for live sources
  • PlayerEvent.TimeChanged not being emitted after a successful seek or time shift when paused

Deprecated

  • AdaptationConfig.startupBitrate as it does not do what the name suggests. Use AdaptationConfig.initialBandwidthEstimateOverride instead

Stable

1/18/2022

3.12.0

Added

  • Support for different audio and video codec priorities via SourceConfig.audioCodecPriority and SourceConfig.videoCodecPriority when multiple sources are part of a playback session

Changed

  • Default Bitmovin Web UI version to 3.32.0

Fixed

  • Playhead on the seekbar jumping back and forth while seeking when using the default Bitmovin Web UI
  • SourceErrorCode.General error description in Bitmovin Web UI showing placeholder instead of a proper message
  • Potential NullReferenceException when playing multi period DASH live streams

Stable

12/21/2021

3.11.1

Fixed

  • Streams containing unsupported metadata not playing
  • Player.currentTime returning incorrect values for progressive live streams
  • Post-roll IMA ads occasionally being played back only when replaying the source
  • ResourceIdentifierCallback not being called for DASH segments
  • SourceEvent.SubtitleChanged containing a special off subtitle track instead of null when enabling/disabling subtitles during casting. This behaviour was not in line with the same event during local playback.
  • Subtitles not disabling when passing null to Player.setSubtitle during casting

Known Issues

  • The playhead on the seekbar can jump back and forth while seeking when using the Bitmovin Player Web UI

Stable

12/7/2021

3.11.0

Added

  • SourceEvent.DrmDataParsed to be emitted from the corresponding Source
  • Player.playbackTimeOffsetToRelativeTime to convert absolute live timestamps to relative timestamps
  • Player.playbackTimeOffsetToAbsoluteTime to convert relative live timestamps to absolute timestamps

Changed

  • Integrated changes from ExoPlayer version 2.15.1
  • Muted state is not being synced between the local device and any cast receiver anymore as the audio setup between those devices is too different for this to be a sensible default behavior. The old behavior can be achieved by manually muting or unmuting after PlayerEvent.CastStarted or PlayerEvent.CastStopped is emitted

Fixed

  • Player.playbackVideoData returning null after a period switch to a DASH period containing different qualities than the previous one
  • PlayerEvent.VideoPlaybackQualityChanged being emitted with null as the new quality after a period switch to a DASH period containing different qualities than the previous one
  • Setting Player.volume and calling Player.mute or Player.unmute not working when there is no source loaded
  • Setting Player.volume and calling Player.mute or Player.unmute not working while connecting to a cast-compatible device
  • Initial volume and muted state sometimes not being respected for ad playback
  • Muxed tracks being listed as separate OfflineOptionEntrys for download
  • Invalid tracks being listed as OfflineOptionEntrys for download

Known Issues

  • The playhead on the seekbar can jump back and forth while seeking when using the Bitmovin Player Web UI

Stable

11/23/2021

3.10.0

Added

  • SourceEvent.MetadataParsed to be emitted for in-band metadata from the Source the metadata actually belongs to. With this addition all metadata formats are emitted correctly through the respective Source

Changed

  • PlayerEvent.Seeked is now emitted once the seek operation is actually completed and enough data is buffered to continue playback instead of it being emitted immediately after calling Player.seek
  • PlayerEvent.TimeShifted is now emitted once the time shift operation is actually completed and enough data is buffered to continue playback instead of it being emitted immediately after calling Player.timeshift
  • PlayerEvent.StallStarted and PlayerEvent.StallEnded are not emitted during seek or time shift operations anymore
  • The new event sequence when triggering replay by calling Player.play when the player has finished playback is PlayerEvent.Play, PlayerEvent.PlaylistTransition, PlayerEvent.Playing instead of PlayerEvent.PlaylistTransition, PlayerEvent.Play, PlayerEvent.Playing

Fixed

  • Player.currentTime not returning an epoch timestamp for DASH live streams with periods declaring a start time
  • Player.currentTime returning the seek target timestamp while seeking
  • Player.currentTime returning the time shift target timestamp while time shifting
  • PlayerEvent.Seeked being emitted before enough data is loaded to continue playback
  • PlayerEvent.TimeShifted being emitted before enough data is loaded to continue playback
  • Incorrect Metadata.startTime for in-band metadata in the first Period of a DASH live streams
  • Incorrect Metadata.startTime for EventStream metadata in DASH live streams
  • Low Latency catch-up and fallback mechanism not working when close to the live edge
  • Not selected media tracks being downloaded when they contain metadata
  • PlayerEvent.TimeShift not containing absolute timestamps when time shifting in a DASH live source
  • PlayerEvent.TimeShift not containing relative timestamps when time shifting in an HLS live source
  • Last frame of an ad staying visible once ad playback has finished

Known Issues

  • The playhead on the seekbar can jump back and forth while seeking when using the Bitmovin Player Web UI
  • Incorrect Metadata.startTime for in-band metadata in periods that are not at the first position in DASH live streams

Latest Releases

Give us feedback