Changelog
π 7.1.1 (2024/04/15)β
Generalβ
π Issuesβ
- Fixed an issue where setting preload to auto and autoplay would result in an endless spinner for HLS live streams.
Androidβ
π Issuesβ
- Fixed an issue where the player would crash when removing the Google IMA integration in response to the
ended
event.
iOSβ
π₯ Breaking Changesβ
- Increasing minimum IMA SDK supported version to 3.18.5.
π 7.1.0 (2024/04/10)β
Generalβ
β¨ Featuresβ
- Added the option to enable tracks immediately after the track is added for HLS streams.
Webβ
β¨ Featuresβ
- Added support for adaptation set switching.
π Issuesβ
- Fixed an issue where active tracks were not consistent between Chromecast sender and receiver.
- Fixed an issue where ABR would not work for some streams on Safari.
- Fixed an issue where the click-through button for Google DAI was not clickable on mobile devices.
Androidβ
β¨ Featuresβ
- Added support for adaptation set switching.
π Issuesβ
- Fixed an issue where stream is paused when starting casting.
- Fixed a rare issue where the player would periodically stall due to failing requests on certain networks.
- Fixed a memory leak where the player would unintentionally keep some segments in memory for long periods of time.
iOSβ
π Issuesβ
- Fixed an issue where calling
Ads.scheduledAdBreaks
with IMA/DAI integrations would return an empty list.
π 7.0.0 (2024/04/03)β
Officially announcing THEOplayer 7.0β
Introducing a major version bump to THEOplayer 7.0. This version officially releases all the improvements and developments THEOplayer has achieved since version 6.0.
THEOplayer 7.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.
-
Further improvements to accelerate monetization of your FAST/AVOD service by enabling seamless THEO Ads integration on Chromecast CAF (v3) receivers. (Currently available on Web)
-
A smaller and more efficient Android and iOS player thanks to refactorings and further modularization.
-
Added experimental support for using
ManagedMediaSource
in iOS Safari. This brings MPEG-DASH and HESP support to iOS, along with manual quality selection for HLS streams. (Requires iOS 17.1 or higher.) -
Added conformance to Apple's new privacy policy for API usage.
-
Performance optimizations to help our React Native and Flutter SDKs run smoothly on all devices.
Generalβ
π₯ Breaking Changesβ
- Changed the Chromecast default app ID on all platforms to our THEOplayer Chromecast CAF receiver with app ID
8E80B9CE
. If you prefer the previous default web behavior which uses our Chromecast V2 receiver, you can set theChromecastConfiguration.appID
to1ADD53F3
. For our Android and iOS SDKs, we officially only support Chromecast CAF receivers. If you prefer to use the default Google Chromecast CAF receiver instead, you can set the app ID toCC1AD845
. - In an effort to align with the changes made by Apple regarding the App Store publishing policy, starting from THEOplayer 7.0 we will distribute our SDK builds using Xcode 15. Effectively, this means that developing a client application using THEOplayer iOS/tvOS SDK will require a minimum version of Xcode 15.
π Issuesβ
- Fixed an issue where setting
liveOffset
on a DASH source would be ignored ifsuggestedPresentationDelay
was specified in the manifest.
Webβ
β¨ Featuresβ
- Added THEOlive support as a feature to THEOplayer.
Androidβ
π₯ Breaking Changesβ
- Removed unused
RequestCallback
interface. - Removed deprecated asynchronous
Player
APIs in favor of the respective synchronous ones. - Removed deprecated
GoogleImaIntegrationFactory#createGoogleImaIntegration
APIs. - Removed deprecated
GoogleDaiIntegrationFactory#createGoogleDaiIntegration
APIs. - Removed deprecated
CastIntegrationFactory#createCastIntegration
API. - Removed deprecated
THEOplayerSettings#isFullScreenOrientationCoupled()
in favor ofFullScreenManager#isFullScreenOrientationCoupled()
. - Removed deprecated
THEOplayerSettings#setFullscreenOrientation(@ScreenOrientation int)
in favor ofFullScreenManager#setFullscreenOrientation(@ScreenOrientation int)
. - Removed deprecated
THEOplayerSettings#getFullscreenOrientation()
in favor ofFullScreenManager#getFullscreenOrientation()
. - Removed deprecated
AdsConfiguration
. - Removed
THEOplayerGlobal#getSDKType()
API. - Align
LoadedDataEvent#getCurrentTime()
andWaitingEvent#getCurrentTime()
APIs with the rest of Events to returndouble
instead ofString
. - Applications using the Cache feature are now required to add
android.permission.FOREGROUND_SERVICE_DATA_SYNC
permission in their AndroidManifest.xml file. - Removed deprecated
THEOplayerView.getPlayerSuiteVersion()
andTHEOplayerGlobal.getPlayerSuiteVersion()
APIs. - Removed deprecated
MediaTailorSource.Builder
constructors. - Removed deprecated
SourceDescription.Builder#ads()
API. - Removed deprecated
KeySystemConfiguration.Builder#licenseType()
API.
β‘ Improvementsβ
- Updated the Gson dependency from 2.8.2 to 2.10.1.
- Updated the Google Chromecast dependency from 21.3.0 to 21.4.0.
- Updated the Google Mediarouter dependency from 1.2.6 to 1.7.0.
- Updated the Google IMA dependency from 3.31.0 to 3.32.0.
iOSβ
π₯ Breaking Changesβ
- Removed deprecated bitcode compilation support.
- Removed deprecated
THEOplayer.playerSuiteVersion
API. - Removed deprecated
THEOplayer.requestCurrentTime
API. - Removed deprecated
THEOplayer.requestVideoHeight
API. - Removed deprecated
THEOplayer.requestVideoWidth
API. - Removed deprecated
THEOplayer.requestCurrentProgramDateTime
API. - Removed deprecated
THEOplayer.requestBuffered
API. - Removed deprecated
THEOplayer.requestPlayed
API. - Removed deprecated
THEOplayer.requestMetrics
API. - Removed deprecated
THEOplayer.requestSeekable
API. - Removed deprecated
Ads.requestPlaying
API. - Removed deprecated
Ads.requestCurrentAds
API. - Removed deprecated
Ads.requestCurrentAdBreak
API. - Removed deprecated
Ads.requestScheduledAdBreaks
API. - Removed deprecated
Ads.requestScheduledAds
API. - Removed deprecated
GoogleDAI.requestSnapBack
API. - Removed deprecated
GoogleDAI.setSnapBack
API. - Removed deprecated Yospace related APIs.
- Removed deprecated
FullscreenEventTypes.ASPECT_RATIO_CHANGE
API. - Removed deprecated
Fullscreen.aspectRatio
&Fullscreen.setAspectRatio
APIs. - Removed deprecated Moat related APIs.
- Removed deprecated Agama related APIs.
- Removed deprecated Verizon Media related types.
- Removed deprecated
EventDispatcher
class. - Removed deprecated Conviva related types.
- Removed deprecated
AudioQuality
type. - Removed deprecated
chromeless
,cssPaths
,jsPaths
,jsPathsPre
,defaultCSS
,pictureInPicture
andanalytics
properties fromTHEOplayerConfiguration
. - Removed deprecated SpotX related types.
- Removed deprecated
analytics
property fromSourceDescription
andSourceDescription.init
. - Removed deprecated
AnalyticsDescription
andAnalyticsIntegration
types. - Removed deprecated
YouboraOptions
type. - Removed deprecated
THEOAdDescription
type. - Remove deprecated
addJavascriptMessageListener
,removeJavascriptMessageListener
andevaluateJavaScript
methods fromTHEOplayer
. - Removed deprecated
THEOplayer.related
property,RelatedContent
type, and all related RelatedContent types. - Removed deprecated VR related APIs.
tvOSβ
π₯ Breaking Changesβ
- Removed deprecated tvOS specific
THEOplayer
initializers. - Removed deprecated
MenuItem
andMenuLayoutConfigurator
types.
π 6.13.0 (2024/03/28)β
Webβ
β¨ Featuresβ
- For Google IMA, added the option to pass
uiElements
to the Google IMA SDK usingPlayerConfiguration.ads.googleIma.uiElements
.
π Issuesβ
- Fixed an issue on smart TVs where switching to or from an opus audio track could cause playback issues.
- Fixed an issue on Android devices where sometimes the gyroscope would not work immediately after playing a VR source inside an iframe.
π Deprecationsβ
- Deprecated
PlayerConfiguration.ads.showCountdown
in favor ofPlayerConfiguration.ads.googleIma.uiElements
.
Androidβ
π Issuesβ
- Fixed an issue where mediaTracks were not consistent between cast sender and receiver.
- Fixed an issue where
MediaTailorSource.Builder#src(String)
did not have all setters asTypedSource.Builder
has. - Fixed an issue where video playback was failing if network connection was too slow.
- Fixed an issue where the player would not cancel request if they took too long, for example after a big network drop.
π Deprecationsβ
- Deprecated setter in
MediaTailorSource.Builder#src(String)
for source URL in favor of Builder with a parameterMediaTailorSource.Builder#Builder(String)
- Deprecated
MediatailorSource.Builder()
default constructor in favor of constructor with a parameterMediaTailorSource.Builder#Builder(String)
- Deprecated unused
RequestCallback
interface. - Deprecated asynchronous
Player
APIs in favor of the respective synchronous ones. - Deprecated
CastIntegrationFactory.createCastIntegration(THEOplayerView)
API in favor ofCastIntegrationFactory.createCastIntegration(THEOplayerView, CastConfiguration)
. - Deprecated
THEOplayerSettings#setFullScreenOrientationCoupled(boolean)
in favor ofFullScreenManager#setFullScreenOrientationCoupled(boolean)
. - Deprecated
THEOplayerSettings#isFullScreenOrientationCoupled()
in favor ofFullScreenManager#isFullScreenOrientationCoupled()
. - Deprecated
THEOplayerSettings#setFullscreenOrientation(@ScreenOrientation int)
in favor ofFullScreenManager#setFullscreenOrientation(@ScreenOrientation int)
. - Deprecated
THEOplayerSettings#getFullscreenOrientation()
in favor ofFullScreenManager#getFullscreenOrientation()
. - Deprecated
AdsConfiguration
in favor of integration specific configuration.
iOSβ
β¨ Featuresβ
- Added conformance to Apple's new privacy policy for API usage.
π Deprecationsβ
- Deprecated
AnalyticsDescription
andAnalyticsIntegration
types. - Deprecated
setPreload
method in favor ofpreload
property setter. - Deprecated
setPlaybackRate
method in favor ofplaybackRate
property setter. - Deprecated Verizon Media related types.
- Deprecated
GoogleIMAAdsConfiguration
&GoogleIMAConfigurationBuilder
. Configuration for Google IMA is moved toTHEOplayerGoogleIMAIntegration
. - Deprecated
PiPConfiguration.init
methods in favor ofPiPConfigurationBuilder
. ThenativePictureInPicture
property inPiPConfigurationBuilder
defaults totrue
. - Deprecated obsolete
EventDispatcher
class. - Deprecated Conviva related types. Conviva feature has moved to
THEOplayer-Connector-Conviva
. - Deprecated
AudioQuality
type. - Deprecated
UIConfiguration
type. - Deprecated
AdsConfiguration
type. - Deprecated
THEOplayerConfiguration.init
methods in favor ofTHEOplayerConfigurationBuilder
. - Deprecated
chromeless
,ads
,ui
,cssPaths
,jsPaths
,jsPathsPre
,defaultCSS
,pictureInPicture
,analytics
andcast
properties fromTHEOplayerConfiguration
. - Deprecated SpotX related types.
- Deprecated
THEOplayerCastHelper
in favor ofTHEOplayerGoogleCastIntegration.CastIntegrationHelper
. - Deprecated
GoogleDAIAdsConfiguration
&GoogleDAIAdsConfigurationBuilder
. Configuration for Google DAI is moved toTHEOplayerGoogleIMAIntegration
. - Deprecated
analytics
property fromSourceDescription
andSourceDescription.init
. - Deprecated
vr
property fromSourceDescription
andSourceDescription.init
, andVRConfiguration
type. - Deprecated
THEOplayer.related
property,RelatedContent
type, and all related RelatedContent types. - Deprecated
addJavascriptMessageListener
,removeJavascriptMessageListener
andevaluateJavaScript
methods fromTHEOplayer
. - Deprecated
THEOAdDescription
type. - Deprecated
YouboraOptions
type. - Deprecated
AdPreloadType
type.
tvOSβ
π Deprecationsβ
- Deprecated tvOS specific
THEOplayer
initializers. Moving forward, iOS and tvOSTHEOplayer
initializers are unified. - Deprecated
MenuItem
andMenuLayoutConfigurator
types.
π 6.12.1 (2024/03/18)β
Androidβ
π Issuesβ
- Fixed an issue where AdError object was not dispatched in case of AdErrorEvent in DAI.
iOSβ
π Issuesβ
- Fixed an issue where THEOplayerGoogleIMAIntegration reported compatibility issues during build time.
π 6.12.0 (2024/03/12)β
Generalβ
β‘ Improvementsβ
- Improved the behaviour of the player when segments in a DASH stream are unavailable by marking the missing data as a gap.
π Issuesβ
- Fixed an issue where the player sometimes would download the wrong segment after a hard discontinuity switch.
Webβ
β¨ Featuresβ
- Added the option to localize the Google-IMA integration when using a
ChromelessPlayer
usingPlayerConfiguration.ads.googleIma.language
. Previously this was only possible usingPlayerConfiguration.ui.language
.
π Issuesβ
- Fixed non-linear ads not showing.
- Fixed an issue where the player could error with an out-of-bounds exception during the parsing of TextTrack cues.
- Fixed an issue where the player would download HLS renditions and segments twice on certain streams containing combined audio/video segments.
- Fixed an issue where Fairplay protected streams would not play on iOS 17.1+ devices when useManagedMediaSource was enabled.
Androidβ
π Issuesβ
- Fixed an issue where on audio-only HLS streams, the play() function needed to be called twice to initiate playback.
- Fixed an issue where a crash occurred sometimes while accessing
player.metrics.getCurrentBandwidthEstimate()
. - Fixed an issue where MP3 streaming playback was broken.
- Fixed a bug where sometimes last video frame was not cleared after calling
stop()
or source set tonull
. - Fixed an issue where the content of an EMSG metadata cue was not correctly formatted.
iOSβ
β¨ Featuresβ
- Make
THEOplayer.videoRect
property observable. - Introduce
AVPictureInPictureControllerDelegateExtended
protocol to help monitor changes toisPictureInPicturePossible
. - Introduced
GoogleImaAdErrorEvent
inTHEOplayerGoogleIMAIntegration
. It can be cast fromAdErrorEvent
returned by the event listener of typeAdsEventTypes.AD_ERROR
.
π Issuesβ
- Fixed an issue caused by IMASettings, where IMA ads would be incorrectly unmuted.
- Added support for MP3 playback.
π 6.11.0 (2024/02/27)β
Webβ
π Issuesβ
- Fixed an issue where VMAPs would not be scheduled in the Google IMA intergration if
player.currentTime
was set before initial playback. - Fixed an issue where the browser tab could hang when removing the player from the DOM without calling
player.destroy()
, while the player is rendering WebVTT subtitles. - Fixed a CSS issue where the control bar could sometimes have a very small vertical overflow, which could lead to unwanted scrollbars when the player is embedded in an
<iframe>
. - Fixed an issue where very old browsers could not play using MSE.
Androidβ
β¨ Featuresβ
- Added side-loaded WEBVTT text track support for progressive MP4 assets.
iOSβ
β¨ Featuresβ
- Added side-loaded WEBVTT text track support for progressive MP4 assets.
- Added
NetworkConfiguration
toTHEOplayerConfiguration
. This allows to configure the user agent header for network requests executed by THEOplayer. - Added
NetworkConfiguration
toCachingParameters
. This allows to configure the user agent header for network requests executed by the caching task.
π Issuesβ
- Fixed an issue where streaming through a chromecast receiver would not dispatch a durationChange event after loading a source.
- Fixed an issue where setting a new source on iOS during a chromecast session, would start playout for that source on the startTime of the previously casted source.
π 6.10.1 (2024/02/20)β
Webβ
β‘ Improvementsβ
- Improved the downloading behavior for DASH segments on bad network.
π 6.10.0 (2024/02/13)β
Webβ
β¨ Featuresβ
- Added
BaseSource.seamlessSwitchStrategy
to configure the player's decision to switch seamlessly on a discontinuity for HLS or a period on DASH. This replaces theDashPlaybackConfiguration.useSeamlessPeriodSwitch
for DASH.
π Issuesβ
- Fixed an issue for HLS streams where the fallback logic didn't start if there was a backup rendition with the same bandwidth.
- Fixed an issue where the player with the combination of preloading metadata and autoplay would create the audio tracks twice.
- Fixed an issue where WebVTT cues with the same
line
attribute but different start times would be rendered in the wrong order. - Fixed an issue where WebVTT cues would sometimes be rendered with an extra empty line in between.
- Fixed an issue where some webOS devices could run out of memory when rapidly resetting an HLS source containing MPEG-TS.
- Fixed an issue where our TypeScript types were using a newer DOM type (
VideoFrameCallbackMetadata
) that is missing in older versions of TypeScript, causing compatibility issues.
π Deprecationsβ
- Deprecated
DashPlaybackConfiguration.useSeamlessPeriodSwitch
in favor ofBaseSource.seamlessSwitchStrategy
.
Androidβ
β¨ Featuresβ
- Exposed ImaSdkSettings in GoogleImaIntegration
π Issuesβ
- Fixed an issue where sometimes Google IMA VMAP midrolls wouldn't play.
π Deprecationsβ
- Deprecated the usage of UIConfiguration for setting IMA and DAI language settings. Use the ImaSdkSettings object for language configuration instead.
iOSβ
β¨ Featuresβ
- Dispatch
AdTappedEvent
fromTHEOplayerGoogleIMAIntegration
. - Add
IMASettings
as a parameter to theGoogleIMAIntegrationFactory.createIntegration
API. This allows IMA SDK wide settings to be configured. - Introduced a
videoRect
property toTHEOplayer
API which returns the size and position of the video image as displayed within the player's bounds. - Introduced an
aspectRatio
property toTHEOplayer
API which gets and sets the player'sAspectRatio
. - Introduced a new player event type
PlayerEventTypes.ASPECT_RATIO_CHANGE
which dispatches anAspectRatioChangeEvent
when the player's aspect ratio changes.
π Issuesβ
- Fixed issues where redundant durationchange events were fired when IMA and DAI ads began/ended.
π Deprecationsβ
- Deprecated the getter property
Fullscreen.aspectRatio
in favor of the getter propertyTHEOplayer.aspectRatio
. - Deprecated the setter method
Fullscreen.setAspectRatio
in favor of the setter propertyTHEOplayer.aspectRatio
. - Deprecated the event type
FullscreenEventTypes.ASPECT_RATIO_CHANGE
in favor of the event typePlayerEventTypes.ASPECT_RATIO_CHANGE
.
π 6.9.0 (2024/01/30)β
Generalβ
π Issuesβ
- Fixed an issue where an alternative rendition in an HLS manifest with the same URI but a different groupID as another rendition is omitted.
Webβ
β¨ Featuresβ
- Added
SourceDescription.streamType
to hint the player in advance whether the source is a VOD, live or DVR stream. This is required for live and DVR streams when casting to Chromecast, in order for the receiver to show the correct UI. - Added support for casting Google IMA ads to Chromecast.
- Added support for
player.ads.currentAds
,.currentAdBreak
,.scheduledAds
and.scheduledAdBreaks
when using the Google IMA integration.
π Issuesβ
- Fixed an issue where pausing and then playing within a Google IMA ad would sometimes prematurely end the entire ad break.
- Fixed an issue for VR where requesting device motion permissions on iOS devices would not immediately allow the gyroscope to work.
- Fixed an issue with Google IMA where changing a source containing a VMAP with at least a postroll ad could incorrectly schedule the ads of the new source.
Androidβ
β¨ Featuresβ
- Added support for clickthrough ad functionality in the MediaTailorTrackingEvent, allowing to fetch clickthrough and clicktracking URLs from MediaTailor ads
π Issuesβ
- Fixed an issue where changing the device orientation from landscape to reverse landscape before the player loads would result in a black screen
- Fixed an issue where the player would return an empty seekable for an mp4 source while seeking.
iOSβ
β¨ Featuresβ
- Add subspecs to IMA and GoogleCast THEOplayer integrations distributed on Cocoapods.
Base
subspec (e.g.pod THEOplayer-Integration-GoogleIMA/Base
) fetches the integration without the SDK dependency, meanwhile theDependencies
(e.g.pod THEOplayer-Integration-GoogleIMA/Dependencies
) subspec defines the SDK dependencies. No changes are required for Podfiles where the dependency needs to be fetched.
π Issuesβ
- Fixed an issue where enabling an audio track would result in no audible output.
- Fixed an issue where setting the abr configurations before setting the player source would fail
π 6.8.1 (2024/01/25)β
Generalβ
π Issuesβ
- Fixed an issue where the player could stall indefinitely at an HLS discontinuity when the discontinuity was improperly aligned across audio and video renditions.
π 6.8.0 (2024/01/15)β
Generalβ
π Issuesβ
- Fixed an issue where the paused state would be incorrect for a brief amount of time when calling play in quick succession after setSource on autoplaying HESP streams resulting in a non-dissapearing big play button on the UI.
Webβ
β¨ Featuresβ
- Added support for client-side advertisements when casting to Chromecast.
- This first release supports linear VAST ads using the THEO Ads integration. (Server-side ads, non-linear ads, VMAP ads, or ads using the Google IMA integration are not yet supported.)
- Scheduling additional ads while casting using
player.ads.schedule()
is not supported. - The Chromecast receiver must be based on the Chromecast CAF v3 SDK, such as Styled Media Receivers, the Default Media Receiver, or any Custom Receiver built with the THEOplayer Chromecast CAF SDK. (Receivers based on the Cast Receiver v2 SDK are not supported.)
- Exposed the HLS SCORE attribute through the Quality API.
- Added the option for HLS streams to clear existing buffer when setting
MediaTrack.targetQuality
. This can be turned on withplayer.abr.clearBufferWhenSettingTargetQuality
.
β‘ Improvementsβ
- Improved the behavior of
player.videoWidth
andplayer.videoHeight
at startup. When the player has not yet buffered the first segment of the stream, it will now fall back to the resolution information from the HLS multivariant playlist or the DASH MPD, rather than always returning0
.
π Issuesβ
- Added a workaround for a Safari issue where using the previous/next page buttons could cause the player to error.
- Fixed an issue where
videoWidth
andvideoHeight
were always0
while playing a linear ad. - Fixed an issue with HLS streams where the Quality API would always report a value for
averageBandwidth
, even when it was not provided by the HLS variant stream. - Fixed an issue where sometimes the player would continuously redownload the same segments after switching to a different quality.
- Fixed an issue where the player failed to parse WebM media.
- Fixed an issue where the poster image briefly flashes on the sender when switching sources while casting to Chromecast.
- Fixed an issue for DASH live streams where seeking to live could ignore the presentation delay.
Androidβ
β¨ Featuresβ
- Added
DecoderSelectionHelper#isRepresentationSupported
API to enable filtering qualities from tracks. - Added support for setting
startTime
and/orendTime
on aTextTrackCue
.
π Issuesβ
- Fixed an issue where targeting Android 14 devices would cause a crash when using the cache API.
- Fixed an issue where the audio/video was stuttering on low end devices.
π 6.7.0 (2023/12/21)β
Webβ
β‘ Improvementsβ
- Improved the
player.ads
API when using the THEO Ads system. Previously, properties such asplayer.ads.currentAdBreak
orplayer.ads.scheduledAds
would return new objects for eachAd
andAdBreak
on every access. Now, they always return the same object.
π Issuesβ
- Fixed an issue where the remaining time of the Google DAI ads would not be updated sequentially.
- Fixed an issue where the player would play some ad content twice when seeking into a Google DAI ad.
- Fixed an issue where extra properties in
SourceDescription.metadata
were not correctly sent to the Chromecast receiver when casting. - Fixed an issue where the player keeps downloading the initial rendition besides the active rendition after a quality switch.
- Fixed an issue where the player sometimes would download the same segments after a quality switch.
- Fixed an issue where setting
preload
tometadata
when the player already has loaded metadata would result in creating the same media tracks twice. - Fixed an issue where sometimes a
playing
event would not be dispatched when play-out resumes after awaiting
event. - Fixed an issue on EOS boxes where the player would loop the first few seconds of a stream multiple times.
Androidβ
β‘ Improvementsβ
- Updated the Google IMA dependency from 3.25.1 to 3.31.0.
π Deprecationsβ
- Deprecated wrongly named
KeySystemConfiguration.Builder#licenseType(byte[] certificate)
method in favor ofKeySystemConfiguration.Builder#certificate(byte[] certificate)
.
π 6.6.1 (2023/12/15)β
Webβ
π Issuesβ
- Fixed a regression where Google IMA ads were not showing correctly when playing on iOS with
allowNativeFullscreen = true
.
π 6.6.0 (2023/12/05)β
Generalβ
β‘ Improvementsβ
- Improved the latency estimation for HESP streams.
Webβ
β‘ Improvementsβ
- Simplified the experimental
player.hesp.latencies
api. - Added conversion of standard base64 encoded Clearkey license responses to base64url encoded Clearkey license responses.
π Issuesβ
- Fixed an issue where the DASH track with a main role would not be selected as initial active track.
- Fixed a player crash when the WebAssembly-based transmux worker is blocked by the page's Content Security Policy. In that case, the player will now attempt to fall back to a (slower) asm.js-based worker.
- Fixed chapter markers not working for HLS streams.
- Fixed an issue where device motion controls would be disabled when setting stereo to false for VR content.
- Fixed
player.seekable
not being set while casting to a default (non-THEOplayer) Chromecast CAF receiver.
Androidβ
β‘ Improvementsβ
- Updated the Google Chromecast dependency from 21.0.1 to 21.3.0.
π Issuesβ
- Fixed an issue where ABR settings were lost after setting a source.
- Fixed an issue where targeting Android 14 devices would cause a crash because of attempting to load writable dex.
- Fixed an issue where the player would trigger "The license for this player is invalid" error on some devices.
iOSβ
β¨ Featuresβ
- Extended the VolumeChangeEvent to include the device volume.
π Issuesβ
- Fixed an issue where providing the offset value for an AdDescription as a Timecode string (HH:mm:ss.SSS) was not supported.
- Fixed an issue where the volume value in a VolumeChangeEvent would be incorrect.
Chromecastβ
β¨ Featuresβ
- Added support for
MediaStatus.liveSeekableRange
when playing a live stream.
π 6.5.0 (2023/11/27)β
Generalβ
π Issuesβ
- Fixed an issue where the player crashed when parsing a non-compliant MPEG-TS segment that has an ID3 tag at the start of the file.
- Fixed a playback issue in HLS if the last segment of a combined audio/video playlist would suddenly contain only audio or video.
Webβ
β¨ Featuresβ
- Added support for cross-codec ABR in HLS.
- Add support for setting
startTime
and/orendTime
on aTextTrackCue
. - Added
requestVideoFrameCallback
andcancelVideoFrameCallback
toplayer.canvas
. - Added MultiView to the @theoplayer/extended npm package.
- Added the option to override the detected
DATA_CONNECTION_TYPE
for the Agama integration.
β‘ Improvementsβ
- Improved the localization of some aria-labels and menu items for the player UI.
π Issuesβ
- Fixed an issue where no
volumechange
event was fired when the player needed to be muted to allow autoplay. - Fixed a regression where the
dimensionchange
event was no longer dispatched on the player. - Fixed an issue where the player might schedule only one ad when multiple Google IMA ads with the same timeOffset were scheduled after each other via
player.ads.schedule
. - Fixed an issue in the HLS pipeline where the player could stall indefinitely after a quality switch if the given codecs were incorrect.
- Fixed an issue where the current time of the MultiViewPlayer could remain zero.
- Fixed an issue where the player would not recover from a temporary network disconnection on Tizen.
- Fixed an issue where HLS date range cues would not have an updated endDate if
endOnNext
istrue
.
Androidβ
β¨ Featuresβ
- Added support for HLS date range metadata text track cues.
- Added
getTrack
methods toTextTrackEventTypes.ENTERCUE
andTextTrackEventTypes.EXITCUE
.
π Issuesβ
- Fixed an issue where the player would sometimes crash when being destroyed during play-out.
- Fixed an issue where the player would sometimes crash when stopping casting a progressive mp4 asset.
- Fixed an issue where switching audiotracks from canplay events broke playback.
iOSβ
π Issuesβ
- Fixed an issue where license check would fail when multiple sources are present.
- Fixed an issue where DateRangCues were never activated.
π 6.4.0 (2023/11/08)β
Generalβ
π Issuesβ
- Align the custom data across SDKs while sending a loading request to Chromecast.
Webβ
β¨ Featuresβ
- Added the option to override the detected
DEVICE_TYPE
for the Agama integration.
β‘ Improvementsβ
- Added MultiViewPlayer constructor to the docs.
π Issuesβ
- Fixed an issue where the player's play/pause state would be incorrect after pausing playback when between two ads.
- Fixed an issue where the activeView measurements for Google DAI were wrong.
Androidβ
π Issuesβ
- Fixed an issue where the player would sometimes crash when stopping to cast an mp4 asset.
π 6.3.0 (2023/10/26)β
Generalβ
π Issuesβ
- Fixed an issue where a HLS stream with a combined audio & video rendition would stop buffering after switching to an alternative audio rendition and back.
- Fixed an issue where the player would stall indefinitely when encountering an MPEG-TS segment containing an AAC audio frame that overlaps with the previous frame.
Webβ
β‘ Improvementsβ
- Allow
source.abr.restrictToPlayerSize
to override whether the ABR algorithm on smart TVs should only select qualities whose resolution fits within the device's display resolution.
π Issuesβ
- Fixed an uncaught
AbortError
promise rejection when switching from an HESP source to a non-HESP source. - Fixed an issue were companion ads in the THEO ad integration were no longer available.
- Added a workaround for an issue in Edge Chromium where
SourceBuffer.changeType
is not working correctly for PlayReady streams.
Androidβ
π Issuesβ
- Fixed an issue where the player would not dispatch a
playing
event when initiating IMA ad play-out.
π 6.2.1 (2023/10/17)β
Generalβ
π Issuesβ
- Fixed an issue where a HLS stream with a combined audio & video rendition would stop buffering after switching to an alternative audio rendition and back.
π 6.2.0 (2023/10/16)β
Webβ
β¨ Featuresβ
- Added experimental support for using
ManagedMediaSource
in Safari. This requiresBaseSource.useManagedMediaSource
to be set totrue
, and requires iOS 17.1 beta 2 or higher with the "Managed Media Source API" feature flag turned on in the Advanced settings of Safari.
π Issuesβ
- Fixed an issue where the player would endlessly download the first segment of an HLS subtitle rendition if that rendition's playlist starts after the audio or video playlist during a live stream.
- HLS with Clear Key DRM will now work on desktop Safari when the
SourceConfiguration.contentProtection
contains an emptyClearkeyKeySystemConfiguration
. - Fixed an issue in MPEG-DASH streams where a big unexpected drop in network bandwidth would not be detected when the browser does not support streaming fetch.
- Fixed an issue with HLS where the reported Program Date Time would be incorrect if the playlist contains a discontinuity where the Program Date Time jumps in time.
Androidβ
π Issuesβ
- Fixed an issue where accessing
MediaTrack.getQualities().getItem()
would always throw aNullPointerException
while playing a static MP4 video. - Fixed
CachingTaskList.getItem()
incorrectly throwingNoSuchElementException
(instead ofIndexOutOfBoundsException
) when the index is out of bounds. - Fixed an issue where HLS streams with AES-128 encryption would not play.
iOSβ
π Issuesβ
- Fixed an issue where CPU performance would decline when using Picture-in-Picture or AirPlay.
π 6.1.1 (2023/10/11)β
iOSβ
π Issuesβ
- Fixed an issue where the player would crash when calling the destroy method after an ad break.
π 6.1.0 (2023/10/02)β
Webβ
β‘ Improvementsβ
- Optimized the Canvas API when called on every frame.
π Issuesβ
- Fixed an issue for HLS where webvtt files starting with a byte order mark would cause a parsing error.
- Fixed an issue where a DASH stream could error with an unspecified error when playback falls outside the seekable range.
- Fixed an issue in MPEG-DASH streams where downloading a segment would not timeout if it takes much longer than the segment duration to download.
- Fixed an issue in MPEG-DASH streams where a big unexpected drop in network bandwidth would not be detected.
- Fixed a compatibility issue with Webpack where THEOplayer fails to load when building in production mode.
- Fixed an issue where no
adbreakbegin
and noadbegin
event would fire for anAdBreak
following a non-linearAdBreak
.
Androidβ
π Issuesβ
- Fixed an issue where line breaks on a cue were not handled correctly on sideloaded SRTs
iOSβ
β‘ Improvementsβ
- Improved text track active cues processing when endTime is infinite.
π Issuesβ
- Fixed an issue where the Chromecast integration would not play when connecting through the default Cast button.
π 6.0.0 (2023/09/13)β
Officially announcing THEOplayer 6.0β
Introducing a major version bump to THEOplayer 6.0. This version officially releases all the improvements and developments THEOplayer has achieved since version 5.0.
THEOplayer 6.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.
-
Further improvements to accelerate monetization of your FAST/AVOD service, including new ad connectors and advertisement capabilities in our Open Video UI.
-
A smaller and more efficient web player thanks to ESM modules.
-
Updated analytics connectors to ensure you are seeing whatβs happening.
-
Increased performance through new features, optimizations of our analytics connectors and further reductions in startup time.
The Legacy (WebView-based) Android and iOS SDKs are officially reaching end of life. No further fixes will be provided for those SDKs (previously included in THEOplayer 4.12.x hotfixes). Please contact our support if you have further questions or follow our migrations guides on the THEOportal pages.
Webβ
π₯ Breaking Changesβ
import { Player } from 'theoplayer'
now results in a JavaScript module using ES2017 syntax, which won't work when loaded inside older browsers (such as old smart TVs). If you still need to support such older browsers, you can import the old JavaScript file directly withimport { Player } from 'theoplayer/THEOplayer.js'
.- The player will now start playback at a medium bitrate quality (up to 2.5 Mbps) instead of the lowest bitrate quality, if it doesn't yet have a network speed estimate from a prior playback session. This can be overridden by setting
player.abr.strategy
(documentation). - Removed
source.hls.useLegacy
. The legacy HLS pipeline has been removed, all HLS streams will now use the new HLS pipeline.
β¨ Featuresβ
- Added support for importing THEOplayer as a JavaScript module ("ESM").
- Added
THEOplayer.esm.js
andTHEOplayer.chromeless.esm.js
.- These provide the THEOplayer API using
export
statements instead of using a globalTHEOplayer
variable. This makes them appropriate to use with modern bundlers that consume ESM, such as webpack, Rollup or esbuild. They can also be used directly in modern browsers using<script type="module">
. - These versions use ES2017 syntax (rather than ES5 syntax), targeting more modern browsers. This results in smaller and faster code, by using more of the native JavaScript features provided by the browser itself.
- These provide the THEOplayer API using
- Added an
exports
field topackage.json
on npm. These define subpath exports for the chromeless player and the UI player, supporting both CommonJS and ESM.import { Player } from 'theoplayer'
: imports the UI player.import { ChromelessPlayer } from 'theoplayer/chromeless'
: imports the chromeless player only. This is intended to replace explicit imports fortheoplayer/THEOplayer.chromeless
.
- If you use TypeScript in your project, we recommend setting
moduleResolution
tobundler
,node16
ornodenext
in yourtsconfig.json
to correctly resolve these subpath exports.
- Added
π Issuesβ
- Fixed an issue where characters from CEA-608 closed captions could be shown too early.
- Fixes an issue with CEA-608 closed captions where seeking could cause overlapping cues.
π Deprecationsβ
- Deprecated
THEOplayer.playerSuiteVersion
. UseTHEOplayer.version
instead.
Androidβ
π₯ Breaking Changesβ
- Removed deprecated
THEOplayerConfig#isChromeless()
. - Removed deprecated
THEOplayerConfig#defaultCss()
. - Removed deprecated
THEOplayerConfig#getCssPaths()
. - Removed deprecated
THEOplayerConfig#getJsPaths()
. - Removed deprecated
THEOplayerConfig#getJsPathsPre()
. - Removed deprecated
THEOplayerConfig.Builder#defaultCss(boolean)
. - Removed deprecated
THEOplayerConfig.Builder#cssPaths(String...)
. - Removed deprecated
THEOplayerConfig.Builder#jsPaths(String...)
. - Removed deprecated
THEOplayerConfig.Builder#jsPathsPre(String...)
. - Removed deprecated
THEOplayerConfig.Builder#chromeless(boolean)
. - Removed deprecated
THEOplayerConfig#isGoogleIma()
. - Removed deprecated
GoogleImaConfiguration
class. - Removed deprecated
AdsConfiguration#googleIma()
in favor ofGoogleImaIntegration
. - Removed deprecated
AdsConfiguration.Builder#googleIma(GoogleImaConfiguration)
. - Removed deprecated
TypedSource.Builder#setNativeRenderingEnabled(boolean)
. - Removed deprecated
TypedSource.Builder#setNativeUiRenderingEnabled(boolean)
. - Removed deprecated
TypedSource.Builder#isNativeRenderingEnabled()
. - Removed deprecated
TypedSource.Builder#isNativeUiRenderingEnabled()
. - Removed deprecated
VerizonMediaSource#getParameters()
in favor ofVerizonMediaSource#getPreplayParameters()
. - Removed deprecated
VerizonMediaSource.Builder#parameters(Map<String, String>)
in favor ofVerizonMediaSource.Builder#preplayParameters(Map<String, String>)
. - Removed deprecated
THEOplayerGlobal#getWebViewSettings()
. - Removed deprecated
THEOplayerView#addJavaScriptMessageListener(String, MessageListener)
. - Removed deprecated
THEOplayerView#evaluateJavaScript(String, ValueCallback)
. - Removed deprecated
THEOplayerView#removeJavaScriptMessageListener(String, MessageListener)
. - Removed deprecated
MessageListener
interface. - Removed deprecated
MediaTrack#setTargetQualities(QualityList)
in favor ofMediaTrack#setTargetQualities(List)
. - Removed deprecated
Player#getVR()
API. - Removed deprecated
Player#getYospace()
API. - Removed deprecated
Player#getVerizonMedia()
API. - Removed unsupported Verizon Media classes.
- Removed unsupported Agama classes.
- Removed unsupported SpotX classes.
- Removed unsupported Conviva classes.
- Removed unsupported Moat classes.
- Removed unsupported Youbora classes.
- Removed unsupported Yospace classes.
- Removed unsupported THEO ads classes.
- Removed unsupported VR classes.
π Deprecationsβ
- Deprecated
THEOplayerGlobal.getPlayerSuiteVersion()
andTHEOplayerView.getPlayerSuiteVersion()
. UsegetVersion()
instead. - Deprecated
THEOplayerConfig.Builder()#ads(AdsConfiguration)
in favor of using advertisement integrations to configure advertisements. - Deprecated
THEOplayerConfig.Builder()#castStrategy(CastStrategy)
in favor of using integrations to configure casting. - Deprecated
SourceDescription.Builder#ads(String...)
in favor ofSourceDescription.Builder#ads(AdDescription...)
.
iOSβ
π₯ Breaking Changesβ
- Removed deprecated
ContentProtectionIntegration.extractFairplayContentId
in favor ofContentProtectionIntegration.onExtractFairplayContentId
. - Removed deprecated
GoogleIMAConfigurationBuilder.useNativeIMA
andGoogleIMAAdsConfiguration.useNativeIma
properties.
β¨ Featuresβ
- Added synchronous player APIs:
currentTime
,currentProgramDateTime
,buffered
,played
,seekable
,metrics
,videoHeight
andvideoWidth
. - Added synchronous ads APIs:
playing
,currentAds
,currentAdBreak
,scheduledAdBreaks
andscheduledAds
. - Added synchronous DAI API:
snapback
.
π Deprecationsβ
- Deprecated
THEOplayer.playerSuiteVersion
. UseTHEOplayer.version
instead. - Deprecated
Ads.requestPlaying
in favor ofAds.playing
. - Deprecated
Ads.requestCurrentAds
in favor ofAds.currentAds
. - Deprecated
Ads.requestCurrentAdBreak
in favor ofAds.currentAdBreak
. - Deprecated
Ads.requestScheduledAdBreaks
in favor ofAds.scheduledAdBreaks
. - Deprecated
Ads.requestScheduledAds
in favor ofAds.scheduledAds
. - Deprecated
GoogleDAI.requestSnapBack
in favor ofGoogleDAI.snapback
. - Deprecated
GoogleDAI.setSnapBack
in favor ofGoogleDAI.snapback
. - Deprecated
THEOplayer.requestCurrentTime
in favor ofTHEOplayer.currentTime
. - Deprecated
THEOplayer.requestVideoHeight
in favor ofTHEOplayer.videoHeight
. - Deprecated
THEOplayer.requestVideoWidth
in favor ofTHEOplayer.videoWidth
. - Deprecated
THEOplayer.requestCurrentProgramDateTime
in favor ofTHEOplayer.currentProgramDateTime
. - Deprecated
THEOplayer.requestBuffered
in favor ofTHEOplayer.buffered
. - Deprecated
THEOplayer.requestPlayed
in favor ofTHEOplayer.played
. - Deprecated
THEOplayer.requestMetrics
in favor ofTHEOplayer.metrics
. - Deprecated
THEOplayer.requestSeekable
in favor ofTHEOplayer.seekable
.
π 5.11.0 (2023/09/11)β
Generalβ
π Issuesβ
- Fixed an issue where the player wouldn't recover from a reset of the HLS stream that contains program date time.
- Fixed an issue where older players were no longer compatible with our Chromcast SDK.
- Fixed a crash when encountering an MPEG-TS segment containing an incomplete PES packet during HLS playback.
Webβ
β¨ Featuresβ
- Added the possibility of selecting audio from a different view than the main view when using the Multiview player.
- Added support for Apollo set-top boxes.
π Issuesβ
- Fixed an issue in the Multiview player where offsets weren't properly taken into account when the main view already had an offset.
- Fixed an issue where the Google IMA integration was not dispatching
ReadyStateChangeEvent
s.
Androidβ
β¨ Featuresβ
- Added the ability to intercept network requests.
π Issuesβ
- Fixed an issue where OMID API was not available for IMA integrations
- Fixed an issue where EC-3 and AC-3 audio tracks for DRM video were parsed using wrong decoder
π 5.10.0 (2023/09/01)β
Generalβ
π Issuesβ
- Fixed an issue where older players were no longer compatible with our Chromecast SDK.
Webβ
π Issuesβ
- Fixed an issue that could cause the player to redownload the same segment multiple times during HLS playback.
Androidβ
β¨ Featuresβ
- Added
totalVideoFrames
property to the metrics API. - Added
PlaybackSettings#getDecoderName()
API to retrieve the decoder name for a specified media.
π Issuesβ
- Fixed an issue where creating a
CachingTask
instance through the Media Cache API would crash the player.
iOSβ
π Issuesβ
- Fixed an issue where failing IMA ads would stall the player.
- Fixed an issue where MP4 source playback was failing.
- Fixed an issue where scheduled IMA ad breaks timeoffset would be 0.
- Fixed an issue where playback duration and currentTime values would be incorrect post ad.
- Fixed an issue where content protected streams with keys specified outside of master playlist would fail.
- Fixed an issue where playback was broken when restoring a
CachingTask
. - Fixed a memory issue caused by the IMA integration.
π 5.9.1 (2023/08/24)β
Webβ
π Issuesβ
- Fixed an issue for HLS streams where the codec strings could cause buffering issues when switching renditions.
Androidβ
π Issuesβ
- Fixed an issue where closing the Picture-in-Picture window did not pause playback when an application was in the background and background playback was not allowed.
π 5.9.0 (2023/08/22)β
Generalβ
β‘ Improvementsβ
- Improved support for HLS with clear key SAMPLE-AES.
- Improved the initial load time of HLS streams.
π Issuesβ
- Fixed an issue where ID3 tags containing padding bytes were not correctly handled.
Webβ
β¨ Featuresβ
- Added
BaseSource.ignoreEmbeddedTextTrackTypes
to ignore embedded text tracks that would otherwise always be parsed by the player. - Added
AgamaPlayerConfiguration.deviceOs
andAgamaPlayerConfiguration.deviceOsVersion
.
β‘ Improvementsβ
- Improved the recovery mechanism for HLS streams when the currentTime falls outside the seekable range (e.g. due to a bad network).
- The player will no longer dispatch a
waiting
event during the initial load (until the firstcanplay
orplaying
event). This should make it easier to distinguish between an "expected" buffering time at the start, and an "unexpected" re-buffering event during playback. To detect when the player starts its initial load, we recommend using either the firstplay
orloadstart
event. - The player will no longer dispatch unnecessary
play
,pause
,seeking
and/orratechange
events when switching between content and advertisements.
π Issuesβ
- Fixed an issue with THEO ads where changing the
muted
andvolume
properties during an Ad would not persist across other Ads in the same AdBreak. - Fixed an issue in THEO ads where a VAST ad with an error could cause the player to be stuck.
- Fixed an issue where the Google DAI click through link doesn't open when pressing enter using the Chromeless player.
- Fixed an issue where AirPlay didn't work on iOS devices.
Androidβ
β¨ Featuresβ
- Customizable notifications for downloading media. Check the documentation on how to customise notifications
π Issuesβ
- Fixed an issue on Android where querying the
timeOffset
property of a Google IMA adbreak would return an incorrect value. - Fixed a typing issue of
CachingTaskErrorEvent
that would prevent the ability to listen for CachingTask errors. - Fixed an issue where a
CachingTaskStateChangeEvent
event with statusevicted
would be dispatched after removing a CachingTask. - Fixed an issue with package obfuscation that resulted in build failures when both THEOPlayer and a library with the same package retention problem were present in the project.
- Fixed an issue where video segments were not downloading in parallel during caching.
- Fixed an issue where the player would sometimes crash while creating and destroying multiple player instances.
iOSβ
β¨ Featuresβ
- Added support for SRT formatted text tracks through sideloaded subtitles connector.
π Issuesβ
- Fixed an issue where player would stall indefinitely on startup when autoplay is set.
- Fixed an issue where native picture-in-picture mode would not be retained after a source change.
- Fixed an issue where failing IMA ads would stall the player.
π 5.8.0 (2023/08/02)β
Generalβ
β‘ Improvementsβ
- Improved the handling of small gaps in the player's buffer. The player will now jump over such gaps without firing
seeking
orwaiting
events, which avoids showing a loading spinner for a short time during playback. - Improved the handling of short seeks. The player will no longer fire a
waiting
event if the seek finishes quickly.
π Issuesβ
- Fixed an issue where
<SegmentList>
elements defined at the<Period>
level where incorrectly ignored in a DASH MPD. - Fixed an issue where the player sometimes failed to jump a known gap between two buffered segments.
Webβ
π Issuesβ
- Fixed an issue where some CEA-608 cues weren't properly extracted.
- Fixed an issue where CEA-608 cues could be falsely removed after appending a segment.
- Fixed an issue where CEA-608 cues could be in the wrong order at segment boundaries.
- Fixed an issue where in rare circumstances a very short HLS VOD stream would fail to start playback.
Androidβ
π Issuesβ
- Fixed an issue on Android where an HLS stream would not replay after playback had ended.
- Fixed an issue where an error was thrown on some devices while trying to play Dolby AC-3 stream.
- Fixed an issue where LOADING tasks were not set to IDLE when cache is initialized.
π 5.7.0 (2023/07/26)β
Generalβ
β‘ Improvementsβ
- Optimized the DASH buffering loop for the common case where the player's buffer is still sufficiently filled.
π Issuesβ
- Fixed an issue where an MPEG-DASH
<SegmentList>
element inside a<Representation>
did not correctly inherit<SegmentURL>
elements defined at the<Period>
or<AdaptationSet>
level.
Webβ
β¨ Featuresβ
- Added
source.abr.restrictToPlayerSize
, to control whether the ABR algorithm should only select qualities whose resolution fits within the player's size. - Added support for the
PRECISE
attribute in an HLS#EXT-X-START
tag. This removes the limitation from THEOplayer 4.7.0, so a missingPRECISE
attribute is now treated asPRECISE=NO
to conform with the HLS specification. - Filtered out ac-3 audio on Tizen and WebOS by default as most devices fail playout and the codec support check is not useable.
- Added support for setting a live offset on streams for multiview.
β‘ Improvementsβ
- The player will now only create Google DAI UI elements when the Google DAI library is loaded.
- Improved startup of livestreams. This should be especially noticeable for HLS livestreams with short playlists, where previously the player would sometimes wait for a second playlist update before initiating playback.
π Issuesβ
- Fixed an issue where the player could stall indefinitely when the segment durations mentioned in the HLS playlist were not accurate enough.
- Fixed an issue where TTML styles applied to the
<body>
element were not always respected. - Fixed an issue where
volume
andmuted
were not correctly retained when transitioning between content and ad (or vice versa) on iOS using Google IMA. - Fixed an issue where fetching the first HLS playlist would time out prematurely.
- Fixed an issue where the player would sometimes throw an error if a HLS CMAF stream has a gap at the start of a segment that comes after an
#EXT-X-DISCONTINUITY
tag. - Fixed an issue with Google DAI where the latest version of their SDK could sometimes trigger an internal error with THEOplayer.
Androidβ
β¨ Featuresβ
- Added a
allowBackgroundPlayback
property to theTHEOplayerSettings
API.
π Issuesβ
- Fixed an issue where SourceChangeEvent did not contain the new SourceDescription.
iOSβ
π Issuesβ
- Fixed an issue where paused state would be inaccurate while integrating with IMA.
tvOSβ
π Issuesβ
- Fixed an issue where IMA playlist ads would block the main content.
π 5.6.0 (2023/07/10)β
Generalβ
β¨ Featuresβ
- Added support for
VideoQuality.frameRate
andVideoQuality.firstFrame
in the new HLS pipeline.
β‘ Improvementsβ
- Add support for the ABR strategy API for HESP streams.
- Improved the retry behaviour for DASH streams when using a retry configuration.
Webβ
β¨ Featuresβ
- Added support for DASH streams with WebM segment indexes described by a
Cues
Matroska element. - Exposed the accessibility descriptors for DASH tracks and the characteristics for HLS tracks.
π Issuesβ
- Fixed an issue where the ABR would not switch qualities when the codecs of the variant streams are not known beforehand.
- Fixed an issue where the player stalled indefinitely after playing a mid-roll ad on VIZIO SmartCast TVs.
- Fixed an issue where the player could stall indefinitely after changing qualities when the HLS multivariant playlist incorrectly lists both audio and video codecs for a video-only variant stream.
- Fixed an issue on EOS2 stbs where seeking in a DASH stream would sometimes cause the player to crash.
Androidβ
β¨ Featuresβ
- Added support of using a service so the caching can be done in the background.
- Added
VideoQuality.getFirstFrame()
. - Added
QualityUpdateEvent
toQuality
. - Added metrics API.
- Added a
allowBackgroundPlayback
property to theTHEOplayerSettings
API.
π Issuesβ
- Fixed an issue when the network connection is lost the CachingTasks can not be paused and restarted.
- Fixed an issue that caused playback failure in some cases on TCL 32S5201 Smart TV.
iOSβ
β¨ Featuresβ
- Added server side ad support with Google DAI through the IMA integration.
π Issuesβ
- Fixed an issue where seeking and seeked events were not fired when casting to AirPlay and when in picture in picture mode.
- Fixed an issue where waiting event would trigger multiple times while seeking.
- Fixed an issue that could cause a crash when destroying the player while the DRM flow was in progress.
tvOSβ
β¨ Featuresβ
- Added server side ad support with Google DAI through the IMA integration.
π 5.5.1 (2023/06/27)β
iOSβ
π Issuesβ
- Fixed an issue where no ratechange event was dispatched when the value was reset to the default during a source change.
- Fixed an issue where playback with IMA integration would not start.
π 5.5.0 (2023/06/22)β
Webβ
β¨ Featuresβ
- Added support for native fullscreen playback of Google IMA ads for HESP streams on iOS Safari.
β‘ Improvementsβ
- Improved ABR algorithm for HESP streams on iOS Safari to take the correct screen size into account.
π Issuesβ
- Fixed an issue where the player could not switch back to content after playing a Google IMA ad on iOS Safari.
- Fixed an issue on iOS Safari where switching to native fullscreen could disable active text tracks.
- Fixed an issue where embedded webVTT cues could remain visible.
- Fixed an issue where a DASH stream with representations containing slightly misaligned segments could stall indefinitely on a quality switch.
π Deprecationsβ
- Deprecated
source.hls.useLegacy
. The legacy HLS pipeline is no longer supported and will be removed in a future semver-major release. Please migrate to the new HLS pipeline. - Added
hideDeprecationWarnings
flag to player configuration, to hide all deprecation warnings in the browser's developer console.
Androidβ
β¨ Featuresβ
- Added support for play-out of progressive media assets embedded as raw app resource.
π Issuesβ
- Fixed an issue where setting multiple Google DAI sources after each other would cause a crash.
- Fixed presence of DRM exception in debug logs
- Fixed an issue where querying the
integration
property of a Google DAI ad or adbreak instance would always givegoogle-ima
instead ofgoogle-dai
. - Fixed an issue where playing a source with in-stream DRM would not play from cache.
iOSβ
β‘ Improvementsβ
- Enabled AirPlay support for cached content while connected to a network.
π Issuesβ
- Fixed an issue where after playing a preroll ad playlist on tvOS the main content would not resume playing.
- Fixed an issue where incorrect
TimeUpdateEvent
s were dispatched after skipping an IMA ad.
π 5.4.2 (2023/06/20)β
iOSβ
β‘ Improvementsβ
- Improved handling of network connection change during caching.
π 5.4.1 (2023/06/15)β
iOSβ
β‘ Improvementsβ
- Added support for asynchronous contentID extraction via
ContentProtectionIntegration.onExtractFairplayContentId(skdUrl:callback:)
π 5.4.0 (2023/06/08)β
Webβ
π Issuesβ
- Fixed an issue where sometimes the player would not autoplay.
- Fixed an issue with HESP streams on iOS Safari where the player would not switch to a higher quality in landscape mode.
- Fixed an issue where the player sometimes stalled indefinitely when the sliding window of a DASH livestream moves past its current time. Instead, it will now seek to live when this happens.
iOSβ
β‘ Improvementsβ
- Improved handling of network connection change during caching.
π 5.3.0 (2023/06/01)β
Generalβ
π Issuesβ
- Fixed an issue where CEA-608 captions with a valid but unrecognized language code would have an empty
TextTrack.language
property. - Fixed a regression issue where dash.needsTimescaleShifting would be false by default.
Webβ
β¨ Featuresβ
- Added
MediaTailorSource.adParams
to improve client-side ad reporting. - Exposed the companion ads for Google IMA.
β‘ Improvementsβ
- Improved the Agama integration by upgrading support to EMP Client version 3.9.0.3.