Release Notes (iOS)
Release notes for the v2 version of the iOS SDK can be found here.
3.39.0
Released: 2023-05-30
Removed
- Deprecated methods and properties from
OfflineManager
:offlineState(for:)
deleteOfflineData(for:)
fetchAvailableTracks(for:)
download(sourceConfig:)
download(sourceConfig:, downloadConfig:)
download(sourceConfig:, tracks:, downloadConfig:)
cancelDownload(for:)
suspendDownload(for:)
resumeDownload(for:)
syncOfflineDrmLicenseInformation(for:)
offlineDrmLicenseInformation(for:)
renewOfflineLicense(for:)
createOfflineSourceConfig(for:, restrictedToAssetCache:)
add(listener:, for:)
remove(listener:, for:)
isPlayableOffline(sourceConfig:)
usedStorage(for:)
- Deprecated
OfflineManagerListener
Fixed
- Missing types from API documentation
3.38.0
Released: 2023-05-15
Changed
FullscreenEnterEvent
,FullscreenExitEvent
,FullscreenEnabledEvent
,FullscreenDisabledEvent
,ControlsShowEvent
,ControlsHideEvent
,PictureInPictureEnterEvent
,PictureInPictureEnteredEvent
,PictureInPictureExitEvent
,PictureInPictureExitedEvent
andScalingModeChangedEvent
are now conforming toPlayerViewEvent
instead ofPlayerEvent
Fixed
SourceConfig.options.startOffset
not being respected when using Chromecast
3.37.2
Released: 2023-04-24
Fixed
- Stalling when a progressive source is loaded into a
Player
instance that has a source loaded already with autoplay enabled
3.37.1
Released: 2023-04-11
Fixed
- Ads are covered by main content after exiting Picture-in-Picture playback when another UI is used that is not Bitmovin Player UI
3.37.0
Released: 2023-04-03
Added
Logger
and related componentsLogLevel
,LogSender
andLogEntry
for the logging facilityLoggingConfig
to provide logging related configuration optionsDebugConfig.logging
to configure logging in the SDKBitmovinUserInterfaceConfig.forceSubtitlesIntoViewContainer
to provide access to theUIConfig.forceSubtitlesIntoViewContainer
of our Bitmovin Player Web UITweaksConfig.delayInitialSubtitleSelection
which can be enabled to prevent race conditions withAVPlayer
's internal subtitle selection logic. When this race condition occurs, it can have unexpected side effects, like playback starting at the beginning of the DVR window instead of at the live-edge for live streams with growing DVR window.
Changed
- Increased minimum required versions to iOS 14.0 and to tvOS 14.0
- Updated Bitmovin Player Web UI to version
3.46.0
Fixed
- Out-of-view-port caption rendering on iOS 16 by setting
UIConfig.forceSubtitlesIntoViewContainer
totrue
per default in our Bitmovin Player Web UI
Deprecated
PlayerWarningEvent
,SourceWarningEvent
,PlayerListener.onPlayerWarning
andSourceListener.onSourceWarning
. Warnings are now communicated through logs with level.warning
.
3.36.0
Released: 2023-03-20
Changed
- Updated Bitmovin Player Web UI to version
3.45.0
Fixed
- Potential crashes when
Player
gets deallocated or destroyed
3.35.1
Released: 2023-03-06
Fixed
- Buffer level indicator exceeding right edge of seek bar when seeking close to the end in Bitmovin Web UI
- A memory leak of our internal retry handler
- Crash during casting when time shifting before a source was loaded
3.35.0
Released: 2023-02-12
Changed
Xcode 14.1
or newer is required to integrate the SDK
Fixed
SourceUnloadEvent
andSourceUnloadedEvent
are now emitted correctly after (and not before) thePlayerErrorEvent
when a player error occursDestroyEvent
is now emitted correctly after (and not before) thePlayerErrorEvent
when a licensing error occurs
3.34.1
Released: 2023-01-30
Changed
- Removed main-thread assertion leading to runtime crashes when accessing video-quality related API from a background thread
Fixed
Player.timeShift
returning0
after time-shifting when the System UI is used.TimeShiftEvent.timeShift
returning0
when the System UI is used for time-shifting.- Missing
PausedEvent
during group playback when pausing right after seeking
3.34.0
Released: 2023-01-19
Added
PlayerView.pictureInPicture
API namespace to group picture in picture related APIs together going forwardPictureInPictureApi.showSkipControls
to dynamically specify if skip-backward and skip-forward buttons are visible when Picture in Picture is active on iOSPictureInPictureConfig.restoreUserInterfaceHandler
to provide the possibility to restore the user interface before Picture in Picture stops
3.33.0
Released: 2023-01-17
Added
BitmovinCastManagerOptions.deviceDiscoveryMode
to specify when cast devices discovery should start
Changed
- Update Google IMA SDK for iOS to latest stable version (3.18.4)
- Update Google IMA SDK for tvOS to latest stable version (4.8.2)
Fixed
- Potential crash when using
TweaksConfig.isCustomHlsLoadingEnabled
with valuetrue
- Missing
PausedEvent
when a participant is doing stall recovery during group playback and the group pauses while the stalling participant is suspended - Potential memory leak when using the Bitmovin Player UI
3.32.0
Released: 2022-12-20
Added
PlayerViewConfig
to configurePlayerView
behaviorPictureInPictureConfig
to group configurations for Picture in Picture playbackshowSkipControls
to specify if skip-backward and skip-forward buttons are visible when Picture in Picture is active on iOSshouldEnterOnBackground
to specify if Picture in Picture playback should start automatically when the App enters background
PlayerView(player:,frame:,playerViewConfig:)
initializer to thePlayerView
to allow setting the newPlayerViewConfig
.dSYM
and.bcsymbolmap
files to XCFramework product in order to support crash report symbolication
Deprecated
PlaybackConfig.isPictureInPictureEnabled
in favor ofPictureInPictureConfig.isEnabled
Removed
- Deprecated
RenderFirstFrameEvent
event data object andonRenderFirstFrame
event listener fromPlayerListener
3.31.0
Released: 2022-12-06
Added
Player.sharePlay
namespace to control SharePlay related features. SharePlay allows synchronized group playback between participants that are on a FaceTime call together. A SharePlay sample application can be found in our sample repository. ThePlayer.sharePlay
namespace offers the following APIs:coordinate(with groupSession:)
lets the player join thegroupSession
to allow group playbackisInGroupSession
describes whether the player is currently participating in group playbackbeginSuspension(for suspensionReason:)
starts a suspension. The player is not participating in group playback while the suspension is activeendSuspension(_ suspension:)
andendSuspension(_ suspension:, proposingNewTime newTime:)
ends the suspension and optionally proposes a new time that every participant should seek toisSuspended
describes whether the player is currently suspended and not able to participate in group playbacksuspensionReasons
describes why the player is currently not able to participate in group playback
NetworkConfig.retryHttpRequest
callback that can be used to implement a custom retry logic for failed HLS playlist requests
Fixed
- Potential crash when hitting play on the System UI when no
Source
is currently loaded
Known Issues
Missing features and known limitations for the SharePlay feature:
- Trick play (slow/fast-forward and rewind) is not supported
- Synchronized ad playback and ad break management is not supported
- Casting is not supported
- Playlists are not supported
- Scrubbing suspensions when using Bitmovin UI are not supported
- System UI is not supported
- AirPlay and Picture in Picture (PiP) are not fully supported. Playback changes done with the AirPlay receiver or PiP mini player are not synchronized with the group. Playback changes done on the AirPlay sender device are working as expected
3.30.0
Released: 2022-11-22
Changed
PlayerConfig
fromopen
tofinal
to restrict subclassing
Removed
NSCopying
conformance forConfig
Config
as super type from all configs
Fixed
- Endless stalling after seeking on iOS 16.1 when
TweaksConfig.unstallingBehaviour
is set to.aggressive
for HLS assets - Bad structure of
TweaksConfig.isCustomHlsLoadingEnabled
documentation
3.29.0
Released: 2022-11-08
Added
ImaSettings
type to improve usability when Google IMA SDK is usedImaAdsManager
type to improve usability when Google IMA SDK is usedVideoPlaybackQualityChangedEvent
which is emitted when the playback video quality changes
Changed
- Improved documentation on
AdBreak.ads
to state limitations AdvertisingConfig.beforeInitialization
property now uses our ownImaSettings
type instead of Google IMA SDK to improve usabilityAdvertisingConfig.onAdsManagerAvailable
property now uses our ownImaAdsManager
type instead of Google IMA SDK to improve usability
Removed
autoPlayAdBreaks
property when usingIMASettings
fromAdvertisingConfig.beforeInitialization
, as using this property has no effect on ad playbackplayerType
property when usingIMASettings
fromAdvertisingConfig.beforeInitialization
, as using this property has no effect on ad playbackenableDebugMode
property when usingIMASettings
fromAdvertisingConfig.beforeInitialization
, as using this property has no effect on ad playbackdelegate
property when usingIMAAdsManager
fromAdvertisingConfig.onAdsManagerAvailable
, as using this caused undefined behavior, potentially breaking playbackadPlaybackInfo
property when usingIMAAdsManager
fromAdvertisingConfig.onAdsManagerAvailable
, as all of this information is available viaPlayer
API during ad playbackvolume
property when usingIMAAdsManager
fromAdvertisingConfig.onAdsManagerAvailable
, as this is available viaPlayer.volume
API during ad playbackdelegate
property when usingIMAAdsManager
fromAdvertisingConfig.onAdsManagerAvailable
, as using this caused undefined behaviorinitialize(with:)
when usingIMAAdsManager
fromAdvertisingConfig.onAdsManagerAvailable
, as this had no effectstart()
method when usingIMAAdsManager
fromAdvertisingConfig.onAdsManagerAvailable
, as ads are starting automatically when scheduled if playing, or can be started using viaPlayer.play()
pause()
method when usingIMAAdsManager
fromAdvertisingConfig.onAdsManagerAvailable
, as this is available viaPlayer.pause()
API during ad playbackresume()
method when usingIMAAdsManager
fromAdvertisingConfig.onAdsManagerAvailable
, as this is available viaPlayer.play()
API during ad playbackskip()
method when usingIMAAdsManager
fromAdvertisingConfig.onAdsManagerAvailable
, as this is available viaPlayer.skipAd()
API during ad playbackclicked()
when usingIMAAdsManager
fromAdvertisingConfig.onAdsManagerAvailable
, as this API had no effect when useddestroy()
when usingIMAAdsManager
fromAdvertisingConfig.onAdsManagerAvailable
, as using this caused undefined behavior, potentially breaking playback
Fixed
Seek
/TimeShift
andSeeked
/TimeShifted
event emitting when multiple seek or timeShift operations are done after each other- Missing
onVideoDownloadQualityChanged
listener method inSourceListener
3.28.0
Released: 2022-09-27
Added
player.isOutputObscured
property that returns whether visual output is obscured due to insufficient external protection for the content.OutputObscuredEvent
andOutputUnobscuredEvent
which are emitted whenplayer.isOutputObscured
changes its value
Deprecated
TweaksConfig.disableSubtitleTracksWhileSeeking
without replacement
3.27.0
Released: 2022-09-13
Added
SystemUiApi.customInfoViewControllers
which allows adding custom info view controllers that are presented as content tabs on tvOS 15 and above- Event emitting for
Seek
/TimeShift
andSeeked
/TimeShifted
events during casting
Fixed
- Playback on cast receiver not continuing when destroying the local player
- Outdated and incomplete documentation for
NetworkConfig
- Performance issues when running on iOS or tvOS simulator
- Horizontal positioning for cues in WebVTT subtitle tracks on iOS and tvOS 16
3.26.0
Released: 2022-08-30
Added
- Possibility to remove faulty
Source
s from aSourceErrorEvent
. SeeonSourceError
for details.
3.25.0
Released: 2022-08-16
Changed
- Change
TimeMode
to a@frozen
enum SourceConfig.metadata
in Swift now uses[String: Any]
type
Removed
- Deprecated APIs from
SourceConfig
:HlsSource
DashSource
ProgressiveSource
SourceConfig
initializers:init(adaptiveSource:)
init(HlsSource)
initWithDASHSource:
initWithProgressiveSource:
SourceConfig
properties and methods:urlForType:
hasSourceOfType:
addSource:error:
addAdaptiveSource:error:
addProgressiveSource:error:
AdaptiveSource
,DASHSource
,HLSSource
,ProgressiveSource
,MediaSource
classes
Fixed
CueExitEvent
s firing continuously when external subtitles are added toSourceConfig
- Incorrect playback position when using an UNIX timestamp for time-shifting using
player.timeShift
3.24.0
Released: 2022-08-02
Added
SystemUiApi.infoViewActions
which allows dynamically changing info view actions on tvOS 15 and above
3.23.1
Released: 2022-07-19
Fixed
- Google IMA SDK overlay not respecting safe area layout of the
PlayerView
- Compilation error when BitmovinPlayer is used within an Objective-C++ (
.mm
) file - Broken
PlayerView
subclassing for a custom view implementation
3.23.0
Released: 2022-07-05
Added
PlayerFactory.sdkVersion
to retrieve the current version of the BitmovinPlayer SDKSystemUserInterfaceConfig.transportBarCustomMenuItems
to configure custom transport bar items on tvOS 15 and abovePlayerView.systemUi
API namespace of typeSystemUiApi
for interactions regarding the system UISystemUiApi.transportBarCustomMenuItems
which allows dynamically changing custom transport bar items on tvOS 15 and aboveAdvertisingConfig.ima
property andImaAdvertisingConfig
type to customize Google IMA SDKImaAdvertisingConfig.adAttributionUiMode
to customize Ad attribution appearance when using Google IMA SDK
Fixed
- Setting
PlayerView.scalingMode
having no effect when Subtitle UI is used
3.22.0
Released: 2022-06-21
Added
- Picture In Picture support on tvOS 14 and above
AdBreakStartedEvent.adBreak.totalNumberOfAds
andAdBreakFinishedEvent.adBreak.totalNumberOfAds
properties to provide the number of ads in an ad break
Fixed
- Incorrect handling when the application enters background on tvOS, resulting in restarted streams when the application enters foreground again
UserInterfaceType.subtitle
not properly respected on tvOS resulting in displaying the system UIAdStartedEvent.indexInQueue
always returned0
instead of the proper value
3.21.0
Released: 2022-06-07
Added
- Ads support on tvOS
- Google IMA tvOS SDK
4.6.1
and higher - Progressive ads
- Google IMA tvOS SDK
player.playlist.add(source:at:)
to dynamically addSource
s into the playlistplayer.playlist.add(source:)
to dynamically addSource
s at the end of the playlistSourceRemovedEvent
to notify about aSources
removed from the playlistplayer.playlist.remove(sourceAt:)
to dynamically removeSource
s from the playlistSourceAddedEvent
to notify about new Sources added into the playlistSourceRemovedEvent
to notify about Sources removed from the playlist
Fixed
- No replay overlay visible on the sender when playback finished during casting
- Inconsistent player state and event emitting during loading a new
Source
while casting - UI seekbar flickering when loading a live-stream while casting
3.20.0
Released: 2022-05-24
Added
- Support for
PreprocessHttpRequestDelegate
of theNetworkConfig
for HLS Playlist requests
Fixed
- Incorrect
onCastTimeUpdated
event fired after pausing the player while casting - During casting, after pausing playback and seeing the expected
onCastPaused
event, an incorrect event sequence ofonCastPlaying
,onCastTimeUpdated
andonCastPaused
is seen
3.19.0
Released: 2022-05-10
Added
cea
toSubtitleFormat
to represent closed captions
Changed
- Type of
position
fromString?
toCuePosition?
inCueEvent
,CueEnterEvent
,CueExitEvent
andCueParsedEvent
Fixed
- Positioning information not available on
CueEnterEvent
andCueExitEvent
for closed caption tracks hideFirstFrame
not working when usingUserInterfaceType.system
3.18.0
Released: 2022-04-12
Removed
AudioQuality
as it was unused
Fixed
- Player getting stuck when new source is loaded directly from
onSourceError
listener SourceErrorEvent
emitted twice when new source is loaded directly fromonSourceError
listener- Missing
AdErrorEvent
event for ads with non-supported file types within VMAP manifests - Thumbnails not showing on the Bitmovin Player UI
- Absolute-path relative references not resolved correctly for WebVTT
ThumbnailTrack
3.17.0
Released: 2022-03-29
Added
replayMode
property to thePlaylistOptions
to make playlist replay behavior configurable
Removed
- Support for Bitmovin Player Web UI below version
3.19.0
Fixed
offlineDrmLicenseInformation.isDrmLicenseExpired
is always showing as expired for FPS protected content- Background Playback not working when
uiEnabled
is false
Changed
OfflineContentManager.offlineDrmLicenseInformation
to return optional value in order to always represent the correct stateOfflineManager.offlineDrmLicenseInformationForSourceConfig:
to return optional value in order to always represent the correct state
Deprecated
OfflineContentManager.isDrmLicenseExpired
in favor of optionalOfflineContentManager.offlineDrmLicenseInformation
value
3.16.0
Released: 2022-03-15
Added
- Swift Package Manager support. To use our SDK with the Swift Package Manager we created this repository including all releases starting from 3.0.0
SubtitleRemovedEvent
,SubtitleChangedEvent
,SubtitleAddedEvent
andCueParsedEvent
to be emitted for inactive sources in a playlist
Fixed
- Incorrect SCTE tag timing when the initial variant playlist has a
EXT-X-MEDIA-SEQUENCE
of 0 CueEnter.text
property containing<br>
as new-line representation instead of\n
CueEnter.html
property containing\n
as new-line representation instead of<br>
for externalSubtitleTrack
sCueEnter.html
is empty forSubtitleTrack
s that are present in the manifest
Changed
SubtitleRemovedEvent
,SubtitleChangedEvent
,SubtitleAddedEvent
andCueParsedEvent
are now conforming toSourceEvent
instead ofPlayerEvent
CueEvent
is now a protocol instead of a class conforming toPlayerEvent
3.15.0
Released: 2022-03-01
Added
isCastEnabled
property to theRemoteControlConfig
to enable or disable casting functionality for a player instance- Support for
ID
andCLASS
properties forEXT-X-DATERANGE
metadata
Fixed
- Some internal events are emitted through the
onEvent
listener method
3.14.0
Released: 2022-02-16
Added
MetadataParsedEvent
to be emitted for inactive sources in a playlist when SCTE metadata is parsed for HLS contentMetadataParsedEvent
to be emitted for inactive sources in a playlist when Id3 metadata is parsed for HLS content- Allow seeking and time shifting as soon as
PlayerActiveEvent
is seen. Before, it was required to wait until theReadyEvent
is received. - Support for negative values for
player.playbackSpeed
to allow reverse playback Player.canPlayAtPlaybackSpeed
API to check if givenplaybackSpeed
value is supported by the currently loaded source
Fixed
- Missing
TimeShiftEvent
andTimeShiftedEvent
on tvOS when live stream containsEXT-X-PROGRAM-DATE-TIME
- Playback via AirPlay for HLS streams hosted on Akamai using Token Authentication
- Unnecessary caching of HLS playlist requests
Known Issues
- Picture in Picture mode is not working on iOS 14.0 and iOS 14.1
- Playback gets stuck when playing a Progressive Ad that results in an
AdError
- Loading a new `Source from a PlayerErrorEvent or a SourceErrorEvent does not work
- Loading a new
Source
from aPlaybackFinishedEvent
sometimes does not start playback automatically whenPlaybackConfig.isAutoPlayEnabled
is set totrue
- When our default Bitmovin Player Web UI is used it can happen that the label of an
AudioTrack
keeps the value of the previous source
3.13.0
Released: 2022-02-01
Added
- Automatic retries for HLS playlist requests when the previous request failed with an non-2xx HTTP status code
Fixed
- Time shifting not always working properly when being connected to AirPlay on iOS versions lower than iOS 14.7
- Potential runtime crash when using Google IMA SDK
Known Issues
- Picture in Picture mode is not working on iOS 14.0 and iOS 14.1
- Playback gets stuck when playing a Progressive Ad that results in an
AdError
- Loading a new `Source from a PlayerErrorEvent or a SourceErrorEvent does not work
- Loading a new
Source
from aPlaybackFinishedEvent
sometimes does not start playback automatically whenPlaybackConfig.isAutoPlayEnabled
is set totrue
- When our default Bitmovin Player Web UI is used it can happen that the label of an
AudioTrack
keeps the value of the previous source
3.12.0
Released: 2022-01-18
Added
HttpRequestType
enum when used from SwiftDownloadFinishedEvent.requestType
to make use of the newHttpRequestType
enum
Changed
- Updated Google Cast SDK to latest stable version (4.7.0)
Removed
- Underscored methods and properties from documentation
Fixed
- Partially downloaded offline data getting discarded when upgrading from version 2.64.2 or below
- Resuming offline downloads after upgrading from version 2.64.2 or below
- Crash during seeking while connecting to Google Cast device
PlayEvent
is fired too late whenPlaybackConfiguration.isAutoplayEnabled
is set totrue
- Documentation generation for various types
- Missing documentation for tvOS only properties
Deprecated
HttpRequestType
s constants when used from Swift in favour of the newHttpRequestType
enumDownloadFinishedEvent.downloadType
in favour of the new properly typedrequestType
property
Known Issues
- Picture in Picture mode is not working on iOS 14.0 and iOS 14.1
- Playback gets stuck when playing a Progressive Ad that results in an
AdError
- Loading a new `Source from a PlayerErrorEvent or a SourceErrorEvent does not work
- Loading a new
Source
from aPlaybackFinishedEvent
sometimes does not start playback automatically whenPlaybackConfig.isAutoPlayEnabled
is set totrue
- When our default Bitmovin Player Web UI is used it can happen that the label of an
AudioTrack
keeps the value of the previous source
3.11.0
Released: 2021-12-21
Changed
- Updated Google IMA SDK to latest stable version (3.14.5)
Fixed
- Missing
PlayingEvent
whenSourceOptions.startOffset
is configured andPlaybackConfiguration.isAutoplayEnabled
is set totrue
- Deprecation message pointing to non-existing API for
OfflineManager.isPlayableOffline
- Content being paused on Google Cast receiver when sender device gets locked
- Content being reloaded unnecessarily on Google Cast receiver when sender application is brought back to foreground
Known Issues
- Picture in Picture mode is not working on iOS 14.0 and iOS 14.1
- Playback gets stuck when playing a Progressive Ad that results in an
AdError
- Loading a new `Source from a PlayerErrorEvent or a SourceErrorEvent does not work
- Loading a new
Source
from aPlaybackFinishedEvent
sometimes does not start playback automatically whenPlaybackConfig.isAutoPlayEnabled
is set totrue
- When our default Bitmovin Player Web UI is used it can happen that the label of an
AudioTrack
keeps the value of the previous source - Already partially downloaded data for offline playback will be lost and has to be re-downloaded after updating from below
2.64.2
to this version
3.10.0
Released: 2021-12-07
Added
OfflineContentManager
to manage all offline content and offline DRM related tasks for a singleSourceConfig
OfflineContentManagerListener
to receive updates regarding offline content and offline DRM related tasksOfflineManager.offlineContentManager(for:)
to retrieve aOfflineContentManager
instance for a certainSourceConfig
OfflineEvent
as parent type for all other events emitted by anOfflineContentManager
AvailableTracksFetchedEvent
to get notified when the available tracks were fetchedOfflineContentLicenseExpiredEvent
to get notified when the stored license is expiredOfflineContentLicenseRenewedEvent
to get notified when the license was renewedContentDownloadCanceledEvent
to get notified when the content download was cancelledContentDownloadResumedEvent
to get notified when the content download was resumedContentDownloadProgressChangedEvent
to get notified for every progress change during the content downloadContentDownloadSuspendedEvent
to get notified when the content download was suspendedContentDownloadFinishedEvent
to get notified when the content download finished successfullyOfflineErrorEvent
to get notified about any error that happenedofflineContentManager(for:id:)
toOfflineManager
to define a custom unique identifier forOfflineContentManager
OfflineContentManager.tweaks
namespace to control tweaks for offline content downloadsOfflineContentManagerTweaksApi.migrateDownload(remoteAssetUrl:resourceIdentifierCallback:)
to enable updating download URL for offline content downloads
Changed
AudioAddedEvent
,AudioChangedEvent
andAudioRemovedEvent
are now conforming toSourceEvent
instead ofPlayerEvent
- Improved documentation of consequences when enabling/disabling
TweaksConfig.isCustomHlsLoadingEnabled
andTweaksConfig.isNativeHlsParsingEnabled
Removed
- Internal types from public documentation
Fixed
- Downloading ClearKey (AES-128) protected content when
SourceConfig.title
is not set - Calling
player.audio
orplayer.setAudio(trackIdentifier:)
before the source finishes loading blocks the main thread
Deprecated
- All methods on the
OfflineManager
which areSourceConfig
related. From now on theOfflineContentManager
should be used OfflineManagerListener
and all its methods. From now on theOfflineContentManagerListener
should be used
Known Issues
- Picture in Picture mode is not working on iOS 14.0 and iOS 14.1
- Playback gets stuck when playing a Progressive Ad that results in an
AdError
- Loading a new `Source from a PlayerErrorEvent or a SourceErrorEvent does not work
- Loading a new
Source
from aPlaybackFinishedEvent
sometimes does not start playback automatically whenPlaybackConfig.isAutoPlayEnabled
is set totrue
- When our default Bitmovin Player Web UI is used it can happen that the label of an
AudioTrack
keeps the value of the previous source - Already partially downloaded data for offline playback will be lost and has to be re-downloaded after updating from below
2.64.2
to this version
3.9.2
Released: 2021-11-23
Fixed
- Performance issues on iOS 15 when preloading a playlist with many sources
- A potential crash on iOS 15 when preloading a playlist with many sources
Known Issues
- Picture in Picture mode is not working on iOS 14.0 and iOS 14.1
- Playback gets stuck when playing a Progressive Ad that results in an
AdError
- Loading a new `Source from a PlayerErrorEvent or a SourceErrorEvent does not work
- Loading a new
Source
from aPlaybackFinishedEvent
sometimes does not start playback automatically whenPlaybackConfig.isAutoPlayEnabled
is set totrue
- When our default Bitmovin Player Web UI is used it can happen that the label of an
AudioTrack
keeps the value of the previous source - Already partially downloaded data for offline playback will be lost and has to be re-downloaded after updating from below
2.64.2
to this version
3.9.1
Released: 2021-11-11
Fixed
- Broken playback of downloaded FairPlay protected content when upgrading from SDK version 2.64.2 or below to v3 or from 3.3.0 or below to v3
Known Issues
- Picture in Picture mode is not working on iOS 14.0 and iOS 14.1
- Playback gets stuck when playing a Progressive Ad that results in an
AdError
- Loading a new `Source from a PlayerErrorEvent or a SourceErrorEvent does not work
- Loading a new
Source
from aPlaybackFinishedEvent
sometimes does not start playback automatically whenPlaybackConfig.isAutoPlayEnabled
is set totrue
- When our default Bitmovin Player Web UI is used it can happen that the label of an
AudioTrack
keeps the value of the previous source - Already partially downloaded data for offline playback will be lost and has to be re-downloaded after updating from below
2.64.2
to this version
3.9.0
Released: 2021-10-12
Added
thumbnail(forTime:)
API toSource
to retrieve thumbnails for non-active sources.
Fixed
- A memory leak inside a
Source
object after it was loaded into a player, which lead to never releasing it
Known Issues
- Picture in Picture mode is not working on iOS 14.0 and iOS 14.1
- Playback gets stuck when playing a Progressive Ad that results in an
AdError
- Loading a new `Source from a PlayerErrorEvent or a SourceErrorEvent does not work
- Loading a new
Source
from aPlaybackFinishedEvent
sometimes does not start playback automatically whenPlaybackConfig.isAutoPlayEnabled
is set totrue
- When our default Bitmovin Player Web UI is used it can happen that the label of an
AudioTrack
keeps the value of the previous source - Already partially downloaded data for offline playback will be lost and has to be re-downloaded after updating from below
2.64.2
to this version - When upgrading to this version, FairPlay protected streams that were downloaded with a version before
2.64.2
for v2 to v3 upgrade or before3.3.0
for a v3 to v3 upgrade (usingOfflineManager
) are not playable anymore when the device is offline
3.8.0
Released: 2021-09-28
Added
showTitleInSeekBar
property in theSystemUserInterfaceConfig
to control the visibility of the title above the seek bar on tvOS 15 and above
Fixed
- Crash when stopping the cast session after a
SourceConfig
was used for loading an asset
Changed
- The documentation for
showSeekBar
andshowInfoViews
on theSystemUserInterfaceConfiguration
to properly reflect it's behaviour on tvOS 15
Known Issues
- Picture in Picture mode is not working on iOS 14.0 and iOS 14.1
- Playback gets stuck when playing a Progressive Ad that results in an
AdError
- Loading a new `Source from a PlayerErrorEvent or a SourceErrorEvent does not work
- Loading a new
Source
from aPlaybackFinishedEvent
sometimes does not start playback automatically whenPlaybackConfig.isAutoPlayEnabled
is set totrue
- When our default Bitmovin Player Web UI is used it can happen that the label of an
AudioTrack
keeps the value of the previous source - Already partially downloaded data for offline playback will be lost and has to be re-downloaded after updating from below
2.64.2
to this version - When upgrading to this version, FairPlay protected streams that were downloaded with a version before
2.64.2
for v2 to v3 upgrade or before3.3.0
for a v3 to v3 upgrade (usingOfflineManager
) are not playable anymore when the device is offline
3.7.0
Released: 2021-09-14
Added
movpkg
toSourceType
to support playback of local MOVPKG filesprovideLicenseData
andpersistLicenseData
toFairplayConfig
for advanced use-cases and external FairPlay license handling
Fixed
- Seeking backwards within a playlist is never finished on iOS 15
isPlaying
occasionally returnedfalse
inside anonPlaylistTransition
listener method- Bitmovin Player Web UI occasionally stays visible after a transition to a subsequent source
AirPlayToggleButton
not updating to active state when AirPlay is active
Changed
- The
ad
parameter of theinit
function in theAdStartedEvent
from Optional to non-Optional FairplayConfig.certificateUrl
changed from typeURL
toURL?
to enable advanced FairPlay license handling
3.6.1
Released: 2021-08-31
Fixed
- AirPlay playback session is paused when iOS device gets locked
- Subsequent
Source
s within a playlist don't finish preloading before transitioning on iOS 12
Changed
- Making several
Events
open for extending and changed their initializers to public for better integration support
3.6.0
Released: 2021-08-19
Added
BitmovinCastManagerOptions
to specifyapplicationId
,namespace
andenableBackgroundSessions
when initializingBitmovinCastManager
BitmovinCastManagerOptions.enableBackgroundSessions
to keep Google Cast sessions active when the app is in backgroundOfflineConfig
to configure the offline functionalityOfflineConfig.restrictMediaDownloadsToWiFi
to specify if an active WiFi connection is required for downloading media for offline playbackOfflineManager.initializeOfflineManagerWithOfflineConfig
to set theOfflineConfig
OfflineManager.isOfflineManagerInitialized
to check if the shared instance is already initializedrestrictMediaDownloadsToWiFi
property onOfflineManager
to specify if an active WiFi connection is required for downloading media for offline playbackOfflineManagerDelegate
which will act as the delegate forOfflineManager
areSuspendedDownloadsRestored
property onOfflineManager
to specify if theOfflineManager
has finished restoring suspended downloads
Deprecated
BitmovinCastManager.initializeCasting(applicationId:)
andBitmovinCastManager.initializeCasting(applicationId:messageNamespace:)
in favor ofBitmovinCastManager.initializeCasting(options:)
Fixed
- Offline FairPlay license renewal and synchronization
- Failing offline playback for assets with dual-expiry FairPlay licenses
- Removed internal types from public documentation
3.5.0
Released: 2021-08-03
Added
OfflineAudioTrack
model that represents audio track for offline downloadaudioTracks
property toOfflineTrackSelection
for selecting audio tracks to download for offline playback
Fixed
- Different text size between single-line and multi-line subtitles when using Bitmovin Player Web UI
Changed
- Make
AdErrorEvent
open - Rename
DRMConfig
toDrmConfig
to follow CamelCase style - Rename
DRMSystems
toDrmSystems
to follow CamelCase style
3.4.0
Released: 2021-07-20
Added
showSeekBar
andshowInfoViews
properties inSystemUserInterfaceConfig
fortvOS
to control UI elements' visibility- Support to call
OfflineManager.usedStorage(for:)
during ongoing downloads to keep track of disk storage used
Changed
- The parent type of
DrmDataParsedEvent
fromPlayerEvent
toSourceEvent
DrmDataParsedEvent
to be emitted for inactive sources in a playlist when DRM data is parsed for HLS content
Fixed
- No audio on playback when there is no default audio track defined in the asset
- Unexpected
TimeChanged
events when calling play right after thePlaybackFinished
event - Online playback occasionally not starting for AES-128 protected streams
StallingEnded
event being emitted afterPlaying
event- Unexpected
MetadataEvent
s for SCTE tags during seeking
Deprecated
- Deprecated
RenderFirstFrameEvent
as this event is never emitted
3.3.0
Released: 2021-06-22
Added
MetadataParsedEvent
to be emitted for inactive sources in a playlist when Daterange metadata is parsed for HLS content
Changed
- The parent type of
MetadataParsedEvent
fromPlayerEvent
toSourceEvent
.
Fixed
- Issue that
SourceConfig
s that are not downloaded for offline playback were marked as already downloaded. - Offline playback of AES-128 encrypted HLS content when only a variant playlist is used
- Removed internal extensions from public documentation
3.2.0
Released: 2021-06-08
Added
- HTTP response status code to
SourceErrorEvent.data
for failed DRM requests
3.1.0
Released: 2021-05-26
Added
isAirPlayEnabled
property inRemoteControlConfig
to enable or disable the AirPlay functionality- HTTP response status code to
SourceErrorEvent.data
for failed DRM requests
Fixed
- Incorrect value of
isPlaying
andisPaused
inside the Bitmovin Player Web UI when thePlaybackFinishedEvent
is received.
3.0.1
Released: 2021-05-11
Changed
- A
StallStartedEvent
will now be emitted after aSeekedEvent
andTimeShiftedEvent
if the seek or timeShift results in stalling
Fixed
- Crash when destroying player during ad playback
- No stalling indicator visible when stalling is in progress when transitioning from one Source to another happens
- Incorrect
Source.loadingState
when the following event listeners were called:SourceLoad
/SourceLoaded
/SourceUnload
/SourceLoaded
- Additional
SourceLoaded
events when aSource
already finished preloading during playback of the previousSource
- Player is returning data from the previous source inside the
PlaylistTransitionEvent
(e.g.Player.availableAudio
,Player.availableSubtitles
)
3.0.0
Released: 2021-04-27
Added
- Native support for running the SDK on iOS/tvOS simulators on
Apple Silicon
Player
protocol, which replaces theBitmovinPlayer
as the main player typePlayerFactory
to createPlayer
instancesSource
protocol as top-level typeSourceFactory
to createSource
instancesSourceState
indicating the current state of a SourcePlayer.source
that returns the currently active sourcePlayer.load(source:)
to load a singleSource
PlaylistConfig
to configure playback of multiple sourcesPlaylistOptions
to customize additional playlist behaviourPlayer.playlist
namespace to control playback of multiple sourcesPlayer.load(playlistConfig:)
to load multiple SourcesPlayer.registerPlayerLayer
for custom native UI support using anAVPlayerLayer
Player.registerPlayerViewController
for custom native UI support using anAVPlayerViewController
Player.registerAdContainer
for custom native UI support to register the container view which should be used for Ad renderingTweaksConfiguration.seekToEndThreshold
to configure the threshold when seeking to the end in seconds- The sender to the each
PlayerListener
method to distinguish whichPlayer
emitted an event - Events
PlaybackTransitionEvent
to indicate a transition from oneSource
to anotherPlayerActiveEvent
to indicate the player got a source to loadPlayerInactiveEvent
to indicate when a player does not have any source anymore
Fixed
AdaptationConfig
andNetworkConfig
not extendingConfig
CloseButton
of theSettingsPanel
sliding out of Safe Area in Bitmovin Player Web UI v3- Subtitles are rendered very close to the bottom Safe Area in Bitmovin Player Web UI v3
Changed
- The
BitmovinPlayer
framework is now shipped asXCFramework
- All
Configurations
were renamed toConfig
DurationChangedEvent
is no longer fired initially- Renamed
SourceItem
toSourceConfig
- Renamed
SourceItem.itemTitle
toSourceConfig.title
- Renamed
SourceItem.itemDescription
toSourceConfig.sourceDescription
- Removed
SourceConfig.drmConfigs
and introducedSourceConfig.drmConfig
to only handle a singleDrmConfig
- Removed
SourceConfig.progressiveSources
and introduceSourceConfig.progressiveSource
to only handle a singleProgressiveSource
SourceConfig.options
is no longer an optional type- Renamed
BitmovinPlayerView
toPlayerView
- Moved
Player.sourceMetadata
toSource.metadata
- Removed
BMP
prefix from all public types used fromSwift
- Increased minimum required
Google Cast SDK
version to4.4.1+
- Renamed
MediaSourceType
toSourceType
- Rewrote all abbreviations and acronyms to follow CamelCase style
- Renamed
RemoteControlAPI
toRemoteControlApi
- Renamed
UserInterfaceAPI
toUserInterfaceApi
- CAF is now used as the default cast receiver
- Bitmovin Player Web UI v3.25.0 is now used as the default UI
Removed
Player.setup
- Pass thePlayerConfig
to thePlayerFactory
insteadPlayerConfig.sourceConfig
- Loading a source from thePlayerConfig
is no longer supportedConfigurationUpdatedEvent
PlayerView
- TheBitmovinPlayerView
from v2 became the newPlayerView
PlaybackType
SourceConfig.drmConfigs
SourceConfig.add(drmConfig:)
Player.streamType
- UseSourceConfig.type
insteadJsonable
implementation- All non is* boolean properties on the API when used from ObjC
Player.preload
- iOS/tvOS 10 Support
- iOS/tvOS 11 Support
- Support for non CAF Cast Receivers
- Support for Bitmoivn Player Web UI v2
Deprecated
- Deprecated
MediaSource
,AdaptiveSource
,HlsSource
,ProgressiveSource
andDashSource
.SourceConfig
should instead be constructed using an url and the accordingSourceType
2.64.1
Released: 2021-05-26
Fixed
- Incorrect value of
isPlaying
andisPaused
inside the Bitmovin Player Web UI when thePlaybackFinishedEvent
is received
2.64.0
Released: 2021-04-27
Added
- Support for side-loaded
SubtitleTrack
s when casting to a v3 (CAF) receiver UserInterfaceAPI.scalingMode
to dynamically get or setBitmovinPlayerView
'sScalingMode
ScalingModeChangedEvent
to be emitted whenBitmovinPlayerView.scalingMode
changedSystemUserInterfaceConfiguration#hideFirstFrame
to prevent rendering of the first video frame before playback starts when the system UI is used
Fixed
- Unexpected
TimeChangedEvent
is emitted betweenPlayEvent
andPlayingEvent
2.63.0
Released: 2020-04-13
Added
TweaksConfiguration.playbackStartBehaviour
to configure the player behaviour whenPlayer.play
is calledTweaksConfiguration.unstallingBehaviour
to configure the player behaviour when stalling should be exited
Fixed
- Local playback starts in addition to remote playback when joining an existing Google Cast session with
PlaybackConfiguration.isAutoplayEnabled
set totrue
2.62.0
Released: 2021-03-30
Added
- Properties
sendManifestRequestsWithCredentials
,sendSegmentRequestsWithCredentials
andsendDrmLicenseRequestsWithCredentials
to theRemoteControlConfiguration
to control cookies and credentials on requests made on Chromecast CAF (v3) receivers
Changed
- Type of
AdSurvey.uri
fromURL
toString
(see the ### Fixed section for more details)
Fixed
- Crash if an
AdSurvey
URL inVAST
ad tag contains invalid characters.
2.61.1
Released: 2021-03-16
Fixed
- Missing seekbar when joining an existing Google Cast session
- Live stream starting at wrong playback position when casting
- Current time is not updating when joining a cast session while remote playback is paused
- Seek bar is jumping when seeking on the sender device while casting
- Incorrect values on
CastTimeUpdatedEvent
when casting to a V2 receiver isMuted
returning wrong value when callingmute
beforeload
- Ad playback does not respect muted state of the player when changed before
load
2.61.0
Released: 2021-03-02
Added
PlaybackConfiguration.isPictureInPictureEnabled
to enable/disable Picture-In-Picture support- Picture-In-Picture support with BitmovinPlayer UI
Fixed
- Missing events when casting to a V2 receiver
TimeChanged
events beforeStartOffset
is applied
2.60.1
Released: 2021-03-02
Fixed
- Missing events when casting to a V2 receiver
2.60.0
Released: 2021-02-16
Added
- Support for
ControlsShow
andControlsHide
events on tvOS when the system UI is used LiveConfiguration
to configure live-stream specific settingsLiveConfiguration#minTimeshiftBufferDepth
to specify a threshold whentimeShift
should be possible
Changed
- Exclude BitmovinPlayer SDK from arm64 simulator builds when integrated via CocoaPods.
Fixed
- Missing payload values on
Metadata
andMetadataParsed
events for SCTE tags containing a=
sign
2.59.1
Released: 2021-03-02
Fixed
- Missing events when casting to a V2 receiver
2.59.0
Released: 2021-01-19
Changed
metadata
property from theSourceItem
is automatically passed to CAF (v3) receivers whenever the source is loaded
Fixed
- Duplicated
Metadata
andMetadataParsed
events for SCTE tags isBackgroundEnabled
not respected for audio-only assets
Known issues
- Picture in Picture mode (on System UI) is not working on iOS 14.0 and iOS 14.1
Removed
- Internal type from online documentation
2.58.0
Released: 2020-12-22
Changed
Player.currentTime
andPlayer.duration
during ad playback now return current time and duration of the currently playing adonPause
,onPlay
,onPlaying
andonTimeChanged
events are now also emitted during IMA ad playback
Fixed
- Stuck playback when loading an IMA Playlist or a VMAP containing an empty tag
- Duplicated
onPlay
andonPlaying
events when VMAP ads are started
2.57.1
Released: 2020-12-09
Fixed
- Values returned via
PlayerAPI.isPlaying
andPlayerAPI.isPaused
when the player is stalled - Missing
onTimeChanged
events when external playback (e.g. AirPlay) was started during playback - Scheduling ads into live-streams results in ads not being played
Removed
- Internal type from online documentation
2.57.0
Released: 2020-11-24
Added
beforeInitialization
callback to theAdvertisingConfiguration
to allow customization ofIMASettings
disableSubtitleTracksWhileSeeking
property to theTweaksConfiguration
for temporarily disabling selected subtitle track while seeking to avoidAVPlayer
getting stalled permanently with assets having conflicting information about subtitle track duration
Fixed
- Missing
onPlaying
event when play was called during stalling - Local UI getting reset when connecting or disconnecting to a Chromecast device
- Crash if the license key was only configured via the
PlayerConfiguration
Removed
- Internal logging being exposed in release builds
2.56.0
Released: 2020-11-10
Added
- Support for controlling audio tracks when using a CAF (v3) receiver
Fixed
- Invalid URL generation for backup manifest URLs, leading to playback failures
- Background playback on iOS 14.2+ devices
Removed
- Internal types from online documentation
2.55.0
Released: 2020-10-27
Added
onAdsManagerAvailable
callback toAdvertisingConfiguration
to give access to theIMAAdsManager
currently in use once it becomes availableId3Metadata
, now also holdingstartTime
propertystartTime
toScteMetadata
- Support for subtitles loaded from manifest when using a CAF (v3) receiver
Fixed
- Inconsistent and jumping
timeShift
values while playing back live-streams
2.54.1
Released: 2020-10-13
Fixed
- Offline playback on iOS 12 and below did not work for certain streams
2.54.0
Released: 2020-10-13
Changed
- Increased minimum deployment target to iOS 10 and tvOS 10
Fixed
- Background playback on iOS 14
- Stability of
onPlay
,onPlaying
andonPause
events by relying onAVPlayer.timeControlStatus
instead ofAVPlayer.rate
Removed
- Support for building for iOS 9 and tvOS 9 in order to ensure stability of
onPlay
,onPlaying
andonPause
events
2.53.0
Released: 2020-09-29
Added
DrmDataParsedEvent
which is fired whenEXT-X-KEY
information is found in a manifest for FairPlay protected streams.TweaksConfiguration.isNativeHlsParsingEnabled
needs to be set totrue
to receive those events.DrmRequest
as subclass ofHttpRequest
in order to expose FairPlay key request data to thePreprocessHttpRequestDelegate
Changed
- Improved HLS parsing performance when
PlayerConfiguration.tweaksConfiguration.isNativeHlsParsingEnabled
is enabled
Fixed
- Crash when
PlayerConfiguration.tweaksConfiguration.isNativeHlsParsingEnabled
is enabled andEXT-X-KEY
tags are present - Crash when
PlayerConfiguration.tweaksConfiguration.isNativeHlsParsingEnabled
is enabled andSCTE35
tags are present - Downloading an asset resulted in only main tracks being downloaded on iOS 14
- Offline download did not resume after application gets killed before main tracks were downloaded
2.52.1
Released: 2020-09-17
Fixed
- Invalid value reported for offline download progress on iOS 14 devices for some assets
- Inconsistent offline download progress distribution when downloading only specific subtitle tracks
- Crash when passing a
SourceConfiguration
without aSourceItem
to the load call
2.52.0
Released: 2020-09-15
Added
- CAF (v3) sender with basic media controls
- Support for DRM protected content when casting to CAF (v3) receiver
BitmovinCastManager.send(metadata:)
for sending custom metadata to the cast receiverPlayerAPI.load(sourceItem:)
to load aSourceItem
directlyPlaylistApi
to control playlist workflow. Accessible viaPlayerAPI.playlist
PlaylistConfiguration
to configure the playlist featurePlayerAPI.load(playlistConfiguration:)
to load a playlistPlayerAPI.load(sourceItem:)
to load a single source
Changed
- Update Google IMA SDK to latest stable version (3.12.1)
Deprecated
BitmovinCastManager.initializeCasting(applicationId:messageNamespace:)
in favor ofBitmovinCastManager.initializeCasting(applicationId:castReceiverVersion:messageNamespace:)
PlayerApi.load(sourceConfiguration:)
in favor ofPlayerAPI.load(sourceItem:)
Removed
- Support for Google IMA SDK below version 3.12.1
2.51.1
Released: 2020-09-01
Changed
- Make
playerUiCss
,supplementalPlayerUiCss
andplayerUiJs
ofBMPStyleConfiguration
unavailable on tvOS
Fixed
- Replaying a source while casting (after playback has finished) did not work
2.51.0
Released: 2020-08-18
Added
isDestroyed
property toBMPBitmovinPlayer
- Support for VTT positioning for subtitle tracks which are present in the manifest in combination with our v3 Web-UI (required version >
v3.16.0
) BMPVttProperties
toBMPCue
andBMPCueEvent
Changed
- Modernizing our SDK requires the type
BitmovinPlayer
being renamed toPlayer
to avoid a known Swift limitation due to name collision with the module name. To handle the breaking change as smooth as possible we suggest defining atypealias
(typealias BitmovinPlayer = Player
) as a top level declaration in any Swift file in the affected target. Xcode 11.4
or newer is required to integrate the SDK- Types prefixed with
_
are subject to change and not intended to be used outside of the SDK
2.50.0
Released: 2020-08-05
Fixed
- Main content (video and audio) occasionally being perceivable before a pre-roll ad when
autoplay
was enabled even thoughhideFirstFrame
was set totrue
inBMPBitmovinUserInterfaceConfiguration
Changed
Google IMA SDK
does not need to be linked anymore to enable progressive ad playback
2.49.1
Released: 2020-08-04
Fixed
- Possible incorrect event ordering in case a post-roll ad is configured
2.49.0
Released: 2020-07-21
Added
- Picture In Picture support while background playback is enabled
- Support for progressive video ads. They can be served from the network or from the device storage which enables basic offline ad support. To schedule progressive video ads,
BMPAdSourceTypeProgressive
should be used for the accordingBMPAdSource
BMPAdSourceTypeProgressive
Fixed
- Replacing the player on the
BitmovinPlayerView
would result in inconsistent UI behaviour - Inconsistent subtitle styling in landscape if Bitmovin Player UI v3 was used
- Missing
onSubtitleChanged
event when subtitles are switched viaPlayerAPI.setSubtitle(trackIdentifier:)
and via System UI consecutively - Disabling subtitles during casting does not work
- Possible memory leak when scheduling Ads
- Invalid progress calculation when downloading content for offline playback
[2.48.0]
Added
- Support for configuring external playback mode while mirroring via AirPlay by setting
usesExternalPlaybackWhileExternalScreenIsActive
withinRemoteControlConfiguration
[2.47.0]
Added
- Possibility to select text tracks to be downloaded or ignored for offline playback
2.46.1
Released: 2020-06-09
Fixed
- Missing
onSubtitleChanged
event when subtitles are switched via System UI - Empty thumbnail preview on
tvOS
whenEXT-X-I-FRAME-STREAM-INF
playlists are referenced with relative URLs - Missing metadata events for consecutively loaded sources
- Missing metadata events on stream start-up due to race condition
2.46.0
20202-05-26
Added
BMPAdManifestLoadEvent
, which is triggered when the download of an ad manifest startsBMPDownloadConfiguration.tweaksConfiguration
along withDownloadTweaksConfiguration.shouldInsertPlaylistTypeTagIfMissing
to ensure offline playback of VOD content where theEXT-X-PLAYLIST-TYPE
tag is missing
Fixed
- Missing
BMPMetadataEvent
s for live streams
Changed
- Update Google IMA SDK to latest stable version (3.11.4)
Removed
- Support for Google IMA SDK below version 3.11.1
2.45.0
Released: 2020-05-12
Added
BMPDownloadConfiguration
along withBMPOfflineManager.download(sourceItem:downloadConfiguration:)
to allow configuring content downloads for offline playback- Support for offline playback of AES-128 encrypted HLS content. Set
BMPDownloadConfiguration.supportClearKeyContent
to enable it when downloading AES-128 encrypted content PlayerConfiguration.key
to be able to overwrite the Bitmovin license key that is stated in theInfo.plist
. This enables using different player instances with different license keys.
Changed
- Reduced time needed to parse huge M3U8 playlists
Deprecated
BMPOfflineManager.download(sourceItem:minimumBitrate:)
in favor ofBMPOfflineManager.download(sourceItem:downloadConfiguration:)
2.44.0
Released: 2020-04-14
Added
- Support for Chapter Markers on
tvOS
. These can be set viaBMPSourceItem.metadata
by setting an array ofAVNavigationMarkersGroup
using theBMPMetadataIdentifierNavigationMarker
identifier.
Fixed
- HLS master playlist is no longer being downloaded twice
Changed
PlayerAPI.videoQuality
now returnsnil
instead of a default quality with0
values for variant playlist only sourcesPlayerAPI.availableVideoQualities
is now empty for variant playlist only sources
2.43.0
Released: 2020-03-31
Added
BMPImaAdData.traffickingParameters
to provide trafficking parameters associated with an ad when using the IMA SDK
Fixed
- Potential crash when delivering the
BMPAdStartedEvent
2.42.0
Released: 2020-03-16
Added
- Support for forced subtitles
Fixed
- Potential missing initial
SubtitleChanged
event if no default or forced subtitle is present
2.41.0
Released: 2020-03-02
Added
BMPSourceItem.options
to configure a customstartOffset
Changed
- Live-streams without a
EXT-X-START
tag will no longer start at the live-edge. Per default it will start at the point in time where the stream was loaded into the player (this is the default behaviour ofAVPlayer
). To always start at the live-edge make sure to enableautoplay
or make use of the newBMPSourceOptions.startOffset
configuration.
Fixed
EXT-X-START
was not respected correctly
2.40.0
Released: 2020-02-17
Added
BMPBitmovinUserInterfaceConfiguration#hideFirstFrame
to prevent rendering of the first video frame before playback startsAdBreakStarted
andAdBreakFinished
events now include information about the related AdBreakAdStarted
,AdFinished
andAdSkipped
events now include information about the related AdAdError
event now includes the AdConfiguration that caused the error, if this information is availableAdManifestLoaded
event after an ad manifest has finished downloading, which includes information about the download timing and the AdBreak, or the AdConfiguration for ad tags that do not result in an AdBreak like VMAP tagsAdQuartile
event contains information about triggered quartile
Fixed
- Seekbar position marker not updating while casting
Changed
- The poster image now hides on
playing
instead ofplay
2.39.0
Released: 2020-02-03
Added
- Support for side-loaded
VTT
subtitles in combination with our Bitmovin UI by providing them viaBMPSubtitleTrack
s on theBMPSourceItem
2.38.0
Released: 2020-01-20
Added
customHlsLoadingEnabled
property to theTweaksConfiguration
to disable custom HLS playlist loading. I.e. if disabled, the playlists will be loaded by theAVFoundation
framework instead of the Bitmovin Player
2.37.0
Released: 2019-12-18
Added
- API call to get
currentTime
either asrelative
orabsolute
value in case of live-streams
2.36.1
Released: 2019-12-11
Fixed
- No inband caption rendering if
BMPBitmovinPlayerView
is used with user interface typesystem
2.36.0
Released: 2019-12-09
Added
- Warning if
#EXT-X-PLAYLIST-TYPE
tag is not present in a variant playlist
Fixed
- Potential crash if the
BMPBitmovinPlayerView
is created for an active player
Changed
- Documentation for
OfflineManager#createSourceItemForSourceItem:restrictedToAssetCache:
is now reflecting prerequisites if DRM protected content is used.
2.35.1
Released: 2019-11-20
Fixed
- Wrong character encoding of Bitmovin Player UI
- Live streams not starting on the live edge
2.35.0
Released: 2019-11-11
Added
- Buffer API implementation to provide information about available buffer
Changed
- Whenever an additional sender wants to connect to an already running cast session, the according receiver app gets restarted.
Fixed
- Manifest loading for certain SSAI streams
- Not updating Bitmovin Player UI V3 during casting.
- Potentially incorrect asset download state after app was killed and restarted while downloading
2.34.0
Released: 2019-10-28
Fixed
- Wrong timing of
onControlsHide
event -12645
system error when trying to play offline content
Changed
- The system's default subtitle selection is now respected if no default track is present in the manifest
2.33.0
Released: 2019-10-14
Fixed
- Touching the live button (or duration label) results in UI staying visible
Changed
- Update Bitmovin Player UI to version 2.22.1.
2.32.1
Released: 2019-10-09
Added
- Support for parsing URL parameters of multiple
#EXT-X-KEY
tags
Fixed
- Crash while parsing
#EXT-X-KEY
tag withMETHOD=NONE
2.32.0
Released: 2019-09-30
Added
timeChangedInterval
toBMPTweaksConfiguration
to specify how frequent anTimeChangedEvent
should be fired
2.31.0
Released: 2019-09-16
Added
- Convenience method
BitmovinCastManager
.sendMessage
for sending messages to the cast receiver
Fixed
- No variant playlist parsing when the master manifest was redirected
- ClearKey (AES-128) streams not playing
Changed
- Timing of impression tracking
2.30.0
Released: 2019-09-02
Added
- Send
BMPDownloadFinishedEvent
also for playlist downloads - Property
lastRedirectLocation
to theBMPDownloadFinishedEvent
- Update Google Cast SDK to latest stable version (4.4.4)
- Update Google IMA SDK to latest stable version (3.9.2)
- Support to set custom artwork data when downloading assets to show up in "Review Downloaded Videos"
- Include
BMPSourceItem#metadata
attribute when sending the source to the cast device
Fixed
- Missing hour representation in Bitmovin Player UI v3
- Unloading of currently playing ad when player is destroyed
- Redirected master manifest requests are now handled properly
2.29.2
Released: 2019-08-19
Fixed
- Possible runtime crash caused by incorrect thread handling
- Download percentage calculation when app is terminated and restarted while downloads are running
2.29.1
Released: 2019-08-13
Fixed
- Pass current timeshift value via
source.options
to the cast receiver app even when the cast source is configured viaprepareSource
2.29.0
Released: 2019-08-05
Added
- Error propagation when DRM license key could not be persisted
- Pass current timeshift value via
source.options
to the cast receiver app when starting a cast session
Fixed
SubtitleSelectBox
not updating in Web UI v3 when changing the subtitles viasetSubtitle
API methodAudioTrackSelectBox
was missing when using the Bitmovin Web UI v3- Multiple
MetadataParsed
events for the same SCTE tag
2.28.3
Released: 2019-08-01
Added
- Retry logic for failed requests when downloading thumbnail images for offline playback
Fixed
- False error state when
NSURLSession
delegate has been called multiple times for the same asset download
2.28.2
Released: 2019-07-22
Fixed
- Stuck background download tasks of thumbnails under certain circumstances
2.28.1
Released: 2019-07-11
Fixed
- Background download of thumbnails
- Display of thumbnails when WebVTT file doesn't include coordinates
2.28.0
Released: 2019-07-08
Added
BMPTweaksConfiguration
to apply preset tweaks to theBitmovinPlayer
- Possibility to communicate between a custom Bitmovin Player UI and the native environment by using a
CustomMessageHandler
which can be set on theBitmovinUserInterfaceConfiguration
. - EXT-X-SCTE35 Tags Support
Fixed
- Downloading a source with minimum bitrate also downloads the highest rendition for non-muxed streams
2.27.0
Released: 2019-06-11
Added
- Possibility to synchronize expiration dates for an offline DRM license
Fixed
SourceError
when trying to play back an offline asset after license has been renewed.
2.26.1
Released: 2019-05-16
Fixed
- Downloading a
SourceItem
with provided minimum bitrate
2.26.0
Released: 2019-05-13
Fixed
- (De-)Serialization of Widevine DRM headers
- Offline thumbnail scrubbing for independent images
2.25.0
Released: 2019-05-02
Fixed
- Notification handling if system storage runs out of space during download
BMPBitmovinPlayer
returned wrong states forisPlaying
,isPaused
andisMuted
if an ad was playing.- Resuming the download of an asset after the app was killed
2.24.0
Released: 2019-04-17
Added
- AirPlay icon within the default Bitmovin UI
2.23.1
Released: 2019-04-12
Fixed
- Set volume level and mute state also for the currently playing ad and not just for queued ads
2.23.0
Released: 2019-04-08
Added
- API call to the
BMPOfflineManager
to renew an offline DRM license - Error in case an DRM certificate request fails
Fixed
- Downloading a source after it was deleted previously
2.22.0
Released: 2019-04-03
Added
- Codec property to the quality model classes (
BMPVideoQuality
,BMPAudioQuality
)
2.21.0
Released: 2019-03-20
Added
prepareLicenseServerUrl
callback to theBMPFairplayConfiguration
to manipulate license request URIs.- API call
currentVideoFrameRate
to fetch the currently playing video frame rate from the player. - Ability to integrate frameworks via Carthage. Read more on how to get started with it here.
- Bitmovin UI v3 support
Changed
- For live streams,
currentTime
now returns the current playback time as a Unix timestamp.
2.20.0
Released: 2019-03-07
Added
ErrorEvent
from theOfflineContentManager
when the download fails due to insufficient storage- Chromecast button to Bitmovin UI
- API call
usedStorageForSourceItem:
onBMPOfflineManager
to check the used disk space for a specific offline source item
Fixed
- TimeShift behavior when casting a live stream
- Mutated while being enumerated exception when initializing
BitmovinPlayerView
2.19.0
Released: 2019-02-20
Added
- Support for timed
onMetadata
events forEXT-X-DATERANGE
metadata contained in HLS manifests - Support for offline thumbnail scrubbing
- Error event if player item fails to play to end
Fixed
- Unmute via the UI did not unmute the player
- Wrong
seekTarget
values inSeekEvent
when usingBMPUserInterfaceTypeSystem
- Provide overall download progress for a single source item instead of reporting the progress of its sub-tasks.
- Jumping scrubber in the Bitmovin Player UI for live streams when autoplay is enabled
2.18.0
Released: 2019-02-06
Added
setSubtitleStyles
API call toBitmovinPlayerView
to allow changing subtitle styles during playback- Explicit reporting of DRM license errors
- A flag to the
BMPSystemUserInterfaceConfiguration
to enable/disable the 'Auto' subtitle option on tvOS.
Fixed
onSubtitleChanged
event was never fired on tvOS
2.17.0
Released: 2018-01-24
Added
onPlaying
event listener in combination withBMPPlayingEvent
toBMPPlayerListener
onMetadataParsed
with correspondingBMPMetadataParsedEvent
- Support for
EXT-X-DATERANGE
tags in HLS manifests onAirplayChanged
event listener to get notified when an AirPlay session starts or endssourceMetadata
API call toBitmovinPlayer
to allow setting/changing source related metadata during playback
Fixed
- Ad events not being fired if multiple ad breaks are scheduled at the same position
- Support any metadata of type
AVMetadataItem
for theBMPSourceItem
2.16.0
Released: 2018-12-21
Added
- Thumbnail support to the
BitmovinPlayer
- Support of local certificate URLs for FairPlay streaming
- Property
scalingMode
toBMPStyleConfiguration
to control scaling/stretching of video content - Property
userInterfaceConfiguration
toBMPStyleConfiguration
to allow user-interface specific style configurations - Property
metadata
toBMPSourceItem
to allow setting metadata on the source item
Fixed
- Documentation of
BMPSourceItem#progressiveSources
- Broken local Web-UI when casting live streams
2.15.0
Released: 2018-11-29
Added
- Official support for iOS Cast Sender SDK 4.3.3
BMPAdSourceTypeUnknown
toBMPAdSourceType
enum
Changed
- Property
clickThroughUrl
is now optional when instantiatingBMPAdStartedEvent
Fixed
BMPDestroyEvent
does not get fired- Indirect retain-cycle between
BitmovinPlayer
andBitmovinPlayerView
when IMA ad integration is used
2.14.0
Released: 2018-11-15
Added
- Warning events are delivered to the
onWarning
event listener method in thePlayerListener
protocol.
Fixed
- Player continues playback after it was destroyed
2.13.3
Released: 2018-11-01
Fixed
- Crash when using latest Google Cast sender library version 4.3.3 in production application
2.13.2
Released: 2018-10-25
Added
- Missing documentation for configuration classes
- Support for FairPlay Key Rotation
Fixed
- Web UI is rendered in an incorrect state when a
BitmovinPlayer
instance is attached to aBitmovinPlayerView
after playback has started
2.13.1
Released: 2018-10-10
Fixed
- Web UI breaks after system picker view was shown on iOS 12 +
2.13.0
Released: 2018-10-09
Added
- First version of CHANGELOG.md
- Support for image subtitles in Bitmovin UI
- Support for custom receiver configuration values (key/value pairs) within the
RemoteControlConfiguration
DownloadFinishedEvent
for DRM license request and DRM certificate requests
Changed
- Updated to web UI version 2.19.0
Updated 2 days ago