Changelog
π 8.0.0 (2024/09/09)β
Officially announcing THEOplayer 8.0β
Introducing a major version bump to THEOplayer 8.0. This version officially releases all the improvements and developments THEOplayer has achieved since version 7.0.
THEOplayer 8.0 is backwards compatible for most features but includes some breaking changes per SDK. Please review them carefully in the respective changelog for your SDK.
-
THEOplayer 8.0 is the first official release with support for THEOads, our new product for delivering seamless and novel ad experiences through Server Guided Ad Insertion.
-
The Custom Server Side Ad Insertion API allows custom SSAI integrations to control the player Ad API, and forms the basis for our new Yospace connectors for Web, Android and iOS as well as our upcoming Edgio Uplynk connectors.
-
The Latency Manager API allows fine-tuned control over live and low-latency playback for DASH, HLS and HESP, available on Web and Android.
For more info on navigating our breaking changes, take a look at our migration guides for Web, Android and iOS.
Generalβ
β¨ Featuresβ
- Custom server-side advertisement integrations are now stable. See the API documentation for web, Android and iOS.
Webβ
π₯ Breaking Changesβ
- Removed the Yospace pre-integration in favor of the new Yospace web connector.
- Removed the Conviva pre-integration in favor of the new Conviva web connector.
- Removed the empty
player.analytics
API. - Renamed the default integration for client-side VAST and VMAP ads from
'theo'
to'csai'
. Ad descriptions that don't specify an integration or use the old name will continue to work, but will have their integration replaced with'csai'
in the API. The new name was chosen to avoid confusion with our new THEOads solution for server-guided ad insertion.
Androidβ
π₯ Breaking Changesβ
- Removed deprecated UIConfiguration.
- Removed deprecated
AdIntegrationKind.DEFAULT
. - Removed deprecated
HlsPlaybackConfiguration.isUseLegacy
flag.
β‘ Improvementsβ
- Make
CachingTaskList#getTaskById(String)
returnnull
if no match is found.
iOSβ
π₯ Breaking Changesβ
- Due to low number of usage of iOS 12, we decided to raise the minimum supported version of our iOS SDK to 13.0. This decision was based on metrics provided by Apple's iOS usage measures by devices that transacted on the App Store. For more info check
https://developer.apple.com/support/app-store/
. - Removed deprecated
GoogleIMAAdsConfiguration
andGoogleIMAConfigurationBuilder
APIs. UseIMASettings
instead and pass it toGoogleIMAIntegrationFactory.createIntegration
. For more info check https://www.theoplayer.com/docs/theoplayer/getting-started/sdks/ios/migrating-to-theoplayer-8/ - Removed deprecated
GoogleDAIAdsConfiguration
andGoogleDAIAdsConfigurationBuilder
APIs. UseIMASettings
instead and pass it toGoogleIMAIntegrationFactory.createIntegration
. For more info check https://www.theoplayer.com/docs/theoplayer/getting-started/sdks/ios/migrating-to-theoplayer-8/ - Removed deprecated
AdsConfiguration
andAdPreloadType
APIs. - Removed deprecated
ScheduledAd
API. ChangeAds.scheduledAds
type fromScheduledAd
toAd
. - Removed deprecated
PiPConfiguration.init
API. UsePiPConfigurationBuilder
instead. - Removed deprecated
UIConfiguration
API. - Removed deprecated
setPreload
andsetPlaybackRate
APIs. Usepreload
andplaybackRate
setters respectively. - Removed deprecated
THEOplayerCastHelper
API. UseTHEOplayerGoogleCastIntegration.CastIntegrationHelper
instead. - Changed
CompanionAd.width
andCompanionAd.height
types fromInt?
toInt
. - Changed
Ad.adBreak
type fromAdBreak
toAdBreak?
. ChangedAd.companions
type from[CompanionAd?]
to[CompanionAd]
. - Removed deprecated
THEOplayerConfiguration.init
API. UseTHEOplayerConfigurationBuilder
instead. - Removed deprecated
ads
,cast
andui
properties fromTHEOplayerConfiguration
API. - Removed obsoleted and deprecated
defaultKind
,theo
andfreewheel
cases fromAdIntegrationKind
API. - Bumped minimum supported GoogleCast xcframework version from 4.7.1 to 4.8.0.
- Removed unused
AdIntegration.theo
enum case in preparation for the new THEOads API.
π Deprecationsβ
- Deprecating all THEOplayer Objective-C API support. Existing APIs will still continue to work until next major release, but additional support for new APIs will discontinue. When it was introduced, the goal of the Objective-C APIs was to provide bindings to bridge our native SDK to React Native. Over time that became unneeded as Swift became capable of accomplishing the goal. Please contact us for support in case your codebase relies on the Objective-C APIs.
tvOSβ
π₯ Breaking Changesβ
- Raising the tvOS mimimum supported version of our tvOS SDK to 13.0 for consistency with iOS version.
π Deprecationsβ
- Deprecating all THEOplayer Objective-C API support. Existing APIs will still continue to work until next major release, but additional support for new APIs will discontinue. When it was introduced, the goal of the Objective-C APIs was to provide bindings to bridge our native SDK to React Native. Over time that became unneeded as Swift became capable of accomplishing the goal. Please contact us for support in case your codebase relies on the Objective-C APIs.
π 7.12.0 (2024/09/05)β
Generalβ
π Issuesβ
- Fixed an issue where the player could stall indefinitely when playing or seeking in an HLS stream with misaligned discontinuities.
Webβ
β¨ Featuresβ
- Added
Ad.customData
andAdBreak.customData
, which can be populated with integration-specific data by a custom SSAI integration.
β‘ Improvementsβ
- Do not report the HESP latency when paused or when recovery seeking as these values don't have semantic meaning.
Androidβ
β¨ Featuresβ
- Added
headers
property toTypedSource
. The player will add the headers to the HTTP requests for the givenTypedSource
, only for mp3 and mp4 sources. - Added
Ad.customData
andAdBreak.customData
, which can be populated with integration-specific data by a custom SSAI integration.
π Issuesβ
- Fixed an issue where
player.getDuration()
was negative while playing a live stream on Chromecast.
π Deprecationsβ
- Deprecated unused
AdIntegrationKind.DEFAULT
.
iOSβ
β¨ Featuresβ
- Added
headers
property toTypedSource
. The player will add the headers to the HTTP requests for the givenTypedSource
.
π Deprecationsβ
- Deprecated obsoleted
defaultKind
,theo
andfreewheel
cases fromAdIntegrationKind
.
π 7.11.0 (2024/08/26)β
Generalβ
β‘ Improvementsβ
- Added support for the
urn:mpeg:dash:adaptation-set-switching:2016
property inside DASH SupplementalProperty.
Webβ
β¨ Featuresβ
- Added support for FLAC audio in CMAF HLS streams.
β‘ Improvementsβ
- Set an empty WAI-ARIA
role
attribute on the Web Worker iframe to make sure it is ignored by assistive technologies, such as screen readers.
π Issuesβ
- Fixed an issue where the player would unmute after source changes and seeks on Tizen 2.4.
Androidβ
π Issuesβ
- Fixed an issue where no
sourcechange
event would be dispatched when resetting the player's source after play-out of a non-streamable asset. - Fixed an issue where the Metrics API reported incorrect values.
π Deprecationsβ
- Deprecated unused
UIConfiguration
. - Deprecated unused
THEOplayerConfig#getUi()
. - Deprecated unused
THEOplayerConfig.Builder#ui(UIConfiguration)
.
iOSβ
π Issuesβ
- Fixed an issue where the picture-in-picture window would disappear after an ad preroll ends.
π 7.10.0 (2024/08/12)β
Generalβ
π Issuesβ
- Fixed an issue where the player would not do ABR for audio only HLS streams.
- Fixed an issue where the player would stall indefinitely on certain HLS streams with discontinuities.
Webβ
π Issuesβ
- Fixed an issue with the positions top-left and top-right of picture-in-picture.
π Deprecationsβ
- Deprecated the
'theo'
AdIntegrationKind andTHEOplayerAdDescription
. The functionality of the default client-side ad integration remains identical but is now renamed to AdIntegrationKind'csai'
and the associatedCsaiAdDescription
. Ad descriptions that don't explicitly configureintegration
will for now still default to'theo'
until THEOplayer 8.0, starting from which it will default to the new'csai'
.
Androidβ
β‘ Improvementsβ
- Added support for generic ad event types (defined in
AdsEventTypes
) to the Google IMA, Google DAI and MediaTailor integrations. - All events will now be dispatched on the main thread.
π Issuesβ
- Fixed an issue where the player could sometimes crash when starting a Chromecast session.
- Fixed an issue where hiding the player view until the
loadeddata
event breaks the playback.
iOSβ
β¨ Featuresβ
- Added support for sideloaded WebVTT thumbnails as metadata text tracks. The player will expose the thumbnails as a
TextTrack
via thetheoplayer.textTracks
API.
π 7.9.0 (2024/07/31)β
Generalβ
β¨ Featuresβ
- Added support for media track enabling / disabling for HESP streams (Safari on iOS <17.1 devices not included).
π Issuesβ
- Fixed an issue where the player could crash when processing an MPEG-TS segment containing a PES header split across multiple MPEG-TS packets.
Webβ
β‘ Improvementsβ
- Extended the functionality of source abr configuration properties
preferredAudioCodecs
andpreferredVideoCodecs
to apply throughout playback rather than only at the beginning.
π Issuesβ
- Fixed several issues that would cause the player to get stuck resetting after a source change on older Tizen versions.
- Fixed an issue where source abr property
preferredAudioCodecs
would not be properly applied in case of multiple audio tracks of the same language with different codecs.
π Deprecationsβ
- Deprecated the Conviva pre-integration in favor of the new Conviva web connector.
- Deprecated the Yospace pre-integration in favor of the new Yospace web connector.
Androidβ
β¨ Featuresβ
- Added support for streaming advertisements (DASH/HLS) with Google IMA.
- It can be set by combining
AdsRenderingSettings.setMimeTypes(List<String> mimeTypes)
along with
GoogleImaIntegration.setAdsRenderingSettings(adsRenderingSettings: AdsRenderingSettings?)
orGoogleImaIntegration.requestAds(adsRequest: AdsRequest, adsRenderingSettings: AdsRenderingSettings?)
- Note that this will limit the playback of the ads to the ones with the specified mimeTypes, which means some ads might be skipped.
- It can be set by combining
AdsRenderingSettings.setMimeTypes(List<String> mimeTypes)
along with
- Added support for using the experimental custom
Surface
to play advertisements. - Added support for managing low-latency live playback via
Player.getLatencyManager()
API.
β‘ Improvementsβ
- Added ability to create
THEOplayerView
from non-ActivityContext
.
π Issuesβ
- Fixed an issue where Chromecast did not start playing if the source URL did not have a file extension.
- Fixed an issue where cast crashed if one of the values in the metadata was null.
- Fixed an issue where the player could sometimes crash after stopping a Chromecast session.
iOSβ
π Issuesβ
- Fixed an issue where the seeking and seeked events would fire twice while casting to AirPlay.
- Fixed an issue where the main content would load before ad pre-rolls.
- Fixed an issue where sideloading subtitles would fail.
π 7.8.0 (2024/07/15)β
Webβ
β¨ Featuresβ
- Added
MultiViewPlayer.ui
to access the UI of a multiview player.
π Issuesβ
- Fixed
MultiViewPlayer.destroy()
to not remove the original container element from the DOM. - Updated
MultiViewPlayerLayout
in the TypeScript type definitions to be a string union instead of an enum. - Fixed an issue on older browsers (such as Samsung Tizen 2.4) where the player failed to load when
Symbol.iterator
is not defined. - Fixed an issue on Tizen where seeking backwards after the stream ended could cause the player to be stuck in a playback loop and not ending again.
- Fixed an issue where Google IMA midroll and postroll ads were not preloaded.