Changelog for version 9.x
๐ 9.12.1 (2025/09/19)โ
Webโ
๐ Issuesโ
- Fixed an issue where the player would sometimes stall about 10 seconds after stream start on devices with slow appends on certain HLS streams.
๐ 9.12.0 (2025/09/09)โ
Webโ
โจ Featuresโ
- Added support for handling backdrop GAM properties for OptiView Ads streams.
- Added Google IMA VAST support to OptiView Ads.
- Added support for ABR strategies and bitrates for OptiView Real-time streams.
๐ Issuesโ
- Fixed the styling of the L-shape layout when playing an OptiView Ads stream.
- Fixed an issue where the
currentTimewasNaNwhen using the MultiViewPlayer and an undefinedoffset. - Fixed an issue on Firefox where sometimes the audio and video are desynced at the start of a live stream.
- Fixed an issue for OptiView Ads where an L-shape content ad break would not stop showing when playing a VOD source.
- Fixed an issue where the player would fail to play an HLS stream containing MPEG-TS segments with a non-trivial scaling list in their H.264 SPS.
- Fixed an issue where the player would play a single layout ad in L-shape layout when it previously played in an L-shape content layout for an OptiView ads stream.
Androidโ
โจ Featuresโ
- Added support for loading background images from GAM properties for OptiView Ads.
โก Improvementsโ
- Updated the Millicast integration's dependency on the Millicast SDK to version 2.5.0.
๐ Issuesโ
- Fixed an issue where cancelling one caching task when multiple are downloading and then stopping the app would leave caching progress notifications that could not be dismissed.
- Fixed an issue where quartile events were missing for alternative ad sources in OptiView Ads.
- Fixed an issue where
setTargetQualitydid not work as intended for OptiView Live Streams. - Fixed an issue where
readyStatewas not updated while playing a Google IMA ad.
iOSโ
โจ Featuresโ
- Added the
DOUBLElayout for OptiView Ads. - Added the OptiView Ads API via
player.theoads. This is API specific to the OptiView Ads feature that exposes information about playing and scheduled interstitials and allows configuration of THEOads specific properties. - Added support for handling backdrop GAM properties for OptiView Ads streams.
โก Improvementsโ
- Exposed more details on an
ErrorEventwhen the underlyingerrorObjectis anAVPlayerError. - Updated the Millicast SDK to v2.5.1 (for iOS & tvOS).
๐ Issuesโ
- Fixed an issue where sideloaded text tracks would not cache correctly.
- Fixed an issue where fatal errors were not properly dispatched.
- Fixed playback rate not being reflected properly when using the GoogleCastIntegration.
- Fixed an issue where an overlay would not show due to incorrect encoding of query parameters for OptiView Ads.
- Fixed an issue where a fatal error would be dispatched when the app does not support background playback and the player is backgrounded while playing an OptiView Live stream.
๐ 9.11.0 (2025/08/26)โ
Webโ
โจ Featuresโ
- Added support for the L-shape content layout for OptiView Ads.
๐ Issuesโ
- Fixed an issue where the player would not be able to play DRM enabled OptiView Live streaming channels that use the V1 API.
- Fixed a regression where
player.durationincorrectly returned+Infinityinstead ofNaNfor an HLS stream that has not yet started loading.
Androidโ
โจ Featuresโ
- Added the possibility to schedule OptiView Ads Overlays through SSE.
- Added L-shape content support for OptiView Ads.
- Added
TextTrackDescription.formatto specify the content type of a sideloaded subtitle track in advance. When set, this allows the player to load the subtitle track only when enabled, instead of needing to load all subtitles at startup to detect their content type.
โก Improvementsโ
- Updated Media3 to version 1.8.0.
๐ Issuesโ
- Fixed an issue where the
playandpauseevents were missing for an OptiView Ads ad break. - Fixed an issue where the player would not wait for subtitles to be loaded before initiating playback, which could result in the first few subtitles not being displayed.
- Fixed an out-of-memory crash when playing a large MP4 file on certain low-end devices.
- Fixed an issue where the player would error when a sideloaded subtitle track fails to load. The player will now disable the track instead and continue playing without it.
- Fixed an issue where the player was unnecessarily trying to download images from a thumbnails track.
iOSโ
โจ Featuresโ
- Added support for the L-shape content layout for OptiView Ads.
๐ Issuesโ
- Fixed an issue where the player configuration was not passed to the chromecast receiver causing image overlays to not work.
- Fixed an issue where an HLS live stream would not recover after a network offline recovery.
tvOSโ
โก Improvementsโ
- Allow the player on Apple TV to choose the higher quality video track with the same resolution when playing OptiView Live streams.
Rokuโ
โจ Featuresโ
- Added sideloading of the HLS master manifest to enable reporting of bitrate, average bitrate, and encoded framerate to Conviva.
- Added support for DPI analytics through the THEOConvivaConnector.
๐ Issuesโ
- Fixed an issue where an invalid license message would flicker on start up.
- Fixed an issue where postroll ads were not being reported to Conviva.
๐ 9.10.2 (2025/08/20)โ
iOSโ
๐ Issuesโ
- Fixed an issue where the player would not switch up to a higher video quality as long as it didn't reach the target latency for OptiView Live streams.
๐ 9.10.1 (2025/08/13)โ
iOSโ
๐ Issuesโ
- Fixed an issue where the player did not throw an ErrorEvent when it could not fetch the playlist.
๐ 9.10.0 (2025/08/08)โ
Webโ
โจ Featuresโ
- Added support for multiple video instances on Sony PlayStationยฎ 5.
โก Improvementsโ
- Improved order of events on stream startup for OptiView Live streams.
- Improved the OptiView Ad to content transition to be more consistent while also requiring less bandwidth.
๐ Issuesโ
- Fixed an issue where WebVTT cue timestamps were not correctly adjusted for 33-bit PES timestamp wraparound when playing an HLS stream with fMP4 audio/video segments.
- Fixed an issue where a short HLS stream containing exactly one segment would stall near the end of the video instead.
- Fixed an issue where a WideVine L1 protected DASH stream would fail to play on Android Fire TV (model AFTMM).
- Fixed an issue where closed captions tracks in an HLS stream were sometimes missing information from their associated
#EXT-X-MEDIA:TYPE=CLOSED-CAPTIONStag. - Fixed playback when using OptiView Live Streaming on Tizen 3.0.
- Fixed an issue where the player fatally errors when going offline during a DASH live stream, instead of playing out the remaining buffer and trying to recover first.
- Fixed an issue where starting or ending AirPlay might trigger an unhandled promise rejection in Safari.
- Fixed an issue where the player did not resume buffering after a temporary network disconnection when playing an MPEG-DASH stream.
- Fixed an issue where a stream using OptiView Ads could get stuck after playing an ad break in PiP.
- Fixed an issue where sometimes multiple ad events were dispatched while playing OptiView Ads in PiP.
- Fixed an issue where ad events could be desynced when using OptiView Ads in Picture-in-Picture.
Androidโ
โจ Featuresโ
- Added
KeySystemConfiguration.forceSoftwareDecryptin order to force the player to always use Widevine L3. Note that this may prevent the player from switching to a high-definition quality, and should only be used to work around issues on specific devices. - Added
KeySystemConfiguration.integrationParametersto allow passing integration-specific parameters to a customContentProtectionIntegrationwhich are also specific to the selected key system. - Added
NetworkConfiguration.useHttpEngineto allow the player to useandroid.net.http.HttpEngineor Cronet for its network requests. These more modern network stacks allow the player to use HTTP/3 instead of HTTP/1.1, which can be more efficient.
โก Improvementsโ
- Improved error messages from the audio/video decoder.
- Improved order of events on stream startup for OptiView Live streams.
๐ Issuesโ
- Fixed an edge case where a
TypedSourcewithout atypewhosesrcends with.m3u8but also contains the substringmpdwould incorrectly be detected as MPEG-DASH instead of HLS. We highly recommend always setting an explicittypeto avoid similar issues with confusing URLs. - Fixed a crash due to a
ConcurrentModificationExceptionwhen playing a DASH livestream containing a thumbnails track. - Fixed an issue where
CachingTask.bytesCachedwould return0for caching tasks that were already fully downloaded before the app was started.
iOSโ
โก Improvementsโ
- Improved the ABR algorithm of our OptiView Live streams for HESP playback.
- Improved playback stability of OptiView Live streams on iOS 17 and below by using the HLS fallback stream.
๐ Issuesโ
- Fixed an issue where when setting a new OptiView Live source the previous one would continue playing until
play()was called. - Fixed an issue where the
seekingproperty would returnfalsewhile the player was seeking in OptiView Live streams.
tvOSโ
๐ Issuesโ
- Fixed an issue where the
maxMobileBitratefrom a distribution was incorrectly being applied on tvOS for OptiView Live streams.
Rokuโ
โจ Featuresโ
- Added support for protected OptiView Live content using the
player.theoLive.authTokenAPI. - Added Conviva reporting of OptiView Live endpoint loading and fallback, along with reporting of the OptiView Live CDN.
- Added the
getHeadermethod on the Network API.
๐ Issuesโ
- Made autofocus behavior reflect the client selected focus so the player doesn't grab focus after the client has removed focus.
- Added session ID to bye call so THEOlive sessions complete properly.
๐ 9.9.0 (2025/07/31)โ
Webโ
โจ Featuresโ
- Added the possibility to schedule OptiView Ads Overlays through SSE.
- Added the
authTokenproperty to thetheoLiveAPI for JWT auth token configuration.
โก Improvementsโ
- Delayed loading of OptiView Live streams until
playis called. - Improved stability of OptiView Live streams on Tizen platforms.
- Improved stability of OptiView Live streams on WebOS devices.
๐ Issuesโ
- Fixed an issue with OptiView Ads where a playback error during an ad break would fully stop playback.
- Fixed an issue where WebVTT default text background colors (e.g.
<c.bg_yellow>) were not working correctly. - Fixed an issue where WebVTT default text colors and default text background colors were not working when using Open Video UI.
- Fixed an issue where the player would not show the OptiView Ads Overlays anymore when it stopped casting to Chromecast.
Androidโ
โจ Featuresโ
- Added support for
ClearkeyKeySystemConfiguration.keysin the Media3 pipeline. - Added
TextTrackStyle.getFont()and.setFont(Typeface). - Added the
authTokenproperty to thetheoLiveAPI for JWT auth token configuration. - Implemented clickthrough URL on OptiView Ads Overlays.
โก Improvementsโ
- Cues from sideloaded subtitles are no longer eagerly added to their
TextTrackin the Media3 pipeline, to avoid stalling the player while loading a large subtitle file. Instead, these subtitle cues are now added in a just-in-time fashion. - Added
SourceType.THEOLIVEto more easily distinguish between THEOlive sources and plain HESP sources. - Fixed an issue where sideloaded chapter and metadata tracks were included when
MediaInfogets loaded into the player on a Cast Receiver. - Delayed loading of OptiView Live streams until
playis called.
๐ Issuesโ
- Fixed
TextTrackStyle.setFont(fontFile, fontStyle)not correctly loading the font file. - Fixed an issue where caching an invalid source crashes the player.
iOSโ
โจ Featuresโ
- Added the
authTokenproperty to thetheoLiveAPI for JWT auth token configuration. - Added support for image Overlays in OptiView Ads.
- Added
MediaPlaylistInterceptorprotocol for HLS playlist interception and manipulation.
โก Improvementsโ
- Added the
reasonproperty toIntentToFallbackEventwhich indicates why the player chose to fall back.
๐ Issuesโ
- Fixed an issue where the
destroyevent would be dispatched twice. - Fixed an issue where incorrect query params were sent with the discovery call of OptiView Live stream.
Rokuโ
โก Improvementsโ
- Delayed loading of OptiView Live streams until
playis called.
๐ Issuesโ
- Fixed an issue where source descriptions without the
liveproperty would fail to play. - Fixed an issue where the Conviva connector could cause a crash when the
isLiveproperty was missing from source metadata.
๐ 9.8.2 (2025/07/17)โ
Webโ
โก Improvementsโ
- Improved support for frame metadata extraction with OptiView RealTime streams on older browsers, all the way back to Chrome v87.
๐ Issuesโ
- Fixed an issue where the player would not do the IMA streamRequest on startup when using SSE for an OptiView Ads stream.
- Fixed an issue where the player would always update the ad tag parameters on the StreamManager on every ad break when playing an OptiView Ads stream.
Androidโ
๐ Issuesโ
- Fixed an issue where a stream request happened on every AdBreak for OptiView Ads.
iOSโ
๐ Issuesโ
- Fixed an issue where loading a THEOad could fail, causing a black screen.
- Fixed an issue where the THEOadDescription would not be used when playing an OptiView live stream with ads enabled.
๐ 9.8.1 (2025/07/15)โ
Androidโ
๐ Issuesโ
- Fixed an issue where OptiView Ads were crashing when the
initializationDelayparameter wasNaN.
iOSโ
๐ Issuesโ
- Fixed an issue where ABR would not switch up to higher qualities for THEOlive sources.
- Fixed an issue where the
ActiveQualityChangedEventwas not dispatched for THEOlive sources.
Rokuโ
๐ Issuesโ
- Fixed an issue where the Conviva connector could cause a crash when the
isLiveproperty was missing from source metadata.
๐ 9.8.0 (2025/07/12)โ
Webโ
โจ Featuresโ
- Added an
initializationDelayproperty toTheoAdDescriptionto delay the initialization of OptiView Ads.
โก Improvementsโ
- Improved stability of OptiView live streams on VIZIO devices.
- Improved the transition from ads to content when playing an HESP stream in combination with OptiView ads.
๐ Issuesโ
- Fixed an issue where the player would become paused when switching tabs while in native picture-in-picture on Chromium based browsers on OptiView live streams.
- Fixed an issue where Millicast streams with
connectOptions.disableVideoset totruewould fail to play.
Androidโ
โจ Featuresโ
- Added an
initializationDelayproperty toTheoAdDescriptionto delay the initialization of OptiView Ads.
โก Improvementsโ
- Fixed an issue where chapter tracks were not marked as
TextTrackKind.CHAPTERSin the Media3 pipeline.
๐ Issuesโ
- Fixed an issue where an
ActiveQualityChangedEventwould either be sent with a wrong value or not sent at all in a multi-period DASH stream. - Fixed an issue where waiting events would not be dispatched on OptiView live streams.
- Fixed an issue where using a View-based UI with THEOplayer and playing Millicast stream will cause a crash.
- Expose actual bandwidth of audio qualities for HESP / OptiView live streams.
iOSโ
โจ Featuresโ
- Added an
initializationDelayproperty toTHEOAdDescriptionto delay the initialization of OptiView Ads.
๐ Issuesโ
- Fix issue where network connectivity errors were not forwarded to the NetworkEventTypes.ERROR event listener
- Fixed an issue where id3 metadata tracks would be notified in advance, causing issues i.e. for Google DAI.
Chromecast CAFโ
โจ Featuresโ
- Added support for VOD assets with THEOads overlay images.
Rokuโ
โก Improvementsโ
- Added discoveryUrl property to THEOlive config and removed need for a trailing slash on discovery URLs.
๐ Issuesโ
- Fixed an issue where source descriptions without the
liveproperty would fail.
๐ 9.7.0 (2025/07/02)โ
Generalโ
โจ Featuresโ
- Added support for OptiView Ads in combination with OptiView Live streaming.
Webโ
โจ Featuresโ
- Added the ability to play two adbreaks seamlessly after each other for THEOads.
- Added new
DistributionLoadStartEvent,EndpointLoadedEventandDistributionOfflineEventevents to thetheoLiveAPI as part of OptiView Live API V2 support. - Added support for MPEG-TS segments with multiple SPS/PPS NALs in the MPEG-TS transmux worker.
โก Improvementsโ
- Changed the default amount of retries for OptiView live streams to 3 so that all the recovery mechanisms work without the need to explicitly set a finite value.
๐ Issuesโ
- Fixed an issue where the player's content is zoomed in when going in fullscreen when playing a THEOads stream.
- Fixed an issue where not all representations are shown for a DASH stream with adaptation set switching.
- Fixed an issue where the player would dispatch events with incorrect
currentTimewhen playing a THEOads stream on smartTVs. - Fixed an issue where the
currentTimeandcurrentProgramDateTimevalues would be incorrect for a short time after a transition from adbreak to content using THEOads. - Fixed an issue where switching OptiView live streams with DRM enabled would sometimes fail on Safari.
- Fixed content protection events not being dispatched for OptiView live streams.
- Fixed an issue where an HLS live stream would not start at the live point on iOS Safari.
- Fixed an issue where an empty VAST/VMAP response would block content if
blockContentIfAdErrorwas enabled in the player source description. - Fixed an issue where quality or track switches with non-identical codecs would cause a fatal error on Edge browsers.
- Fixed an issue where the defined ad parameters for a MediaTailor source are not being passed correctly to MediaTailor.
๐ Deprecationsโ
- Renamed
adParamstoadsParamsin the MediaTailor source definition in the Web SDK. The old name still works, but is now deprecated.
Androidโ
โจ Featuresโ
- Added support for adbreak to adbreak transition with THEOAds.
- Added
THEOplayerGlobal.loggerAPI to enable logs for specific tags and ability to add listeners to receive log messages. - Added a new
EndpointLoadedEventthat fires when an OptiView Live endpoint is successfully loaded. - Improved debug logging for the Media3 playback pipeline.
- Added support for MPEG-TS segments with multiple SPS/PPS NALs in the MPEG-TS transmux worker for the legacy playback pipeline.
- Added support for GAM properties in THEOads overlays.
- Added ClearKey DRM support to the media3 pipeline.
โก Improvementsโ
- Fixed video artifacting on older FireTV devices when playing OptiView live streams.
- Added support for
"maxBitrate"when setting up aSourceDescription. This can be set by defining anabrproperty for the source. - Improved the latency measurement available in the latency API.
- Manifest and segment requests now have the proper
Request.type,.subTypeand.mediaTypein the Media3 pipeline. - Added
LinearAd.durationAsDoubleto retrieve an linear adโs duration with sub-second precision.
๐ Issuesโ
- Fixed an issue where subtitle styles set through the
TextTrackStyleAPI were not being applied to subtitles with embedded styles. - Fixed an issue where subtitles with a background color set by an embedded style were always rendered with the default background color instead.
- Fixed an issue wherein OptiView Live streams were not honouring the set
AbrStrategyConfiguationon the player. - Fixed an issue where the player would crash on ad playback in MediaTailor streams.
- Fixed an issue where
PlayEventandPauseEventweren't fired immediately onplay()andpause()API calls. Also ensuredPlayEventfires when a source is invalid. - Fixed an issue where the
PauseEventdid not fire when the player becomes ended. - Fixed an issue where the defined ad parameters for a MediaTailor source are not being passed correctly to MediaTailor.
๐ Deprecationsโ
- Renamed
adParamstoadsParamsin the MediaTailor source definition in the Android SDK. The old name still works, but is now deprecated.
iOSโ
โจ Featuresโ
- Added a target latency override to THEOlive source description.
- Added
THEOliveConfiguration.discoveryUrlandTHEOliveConfiguration.discoveryUrlsto support custom discovery URLs for OptiView live streams.
โก Improvementsโ
- Update Millicast SDK to v2.4.3
- Added a new improved OptiView live streaming (formerly known as THEOlive) playback pipeline.
- The new pipeline is enabled by default as it brings significant improvements.
- The legacy playback pipeline is still available, and can be activated by setting
THEOliveConfiguration.useLegacyPlaybackEnginetotrue. - The legacy playback pipeline is scheduled to be removed in version 10.
๐ Issuesโ
- Fixed an issue where closed caption text tracks were automatically selected and bypassing accessibility settings.
Chromecast CAFโ
โจ Featuresโ
- Added support for GAM hosted interstitial image overlays.
- Added in the ability to display THEOads interstitial overlays included in HLS manifests.
- Added support for VOD assets with THEOads overlay images.
Rokuโ
โจ Featuresโ
- Added support for OptiView live v2 streams.
- When an OptiView live stream has an error, the player will now attempt to fallback to other sources for the stream.
๐ Issuesโ
- Fixed crash on start up when using an array for
source.sources. - Fixed an issue where a THEOlive source would not work when passed as an element in a sources array in the source description.
๐ 9.6.1 (2025/06/23)โ
Androidโ
๐ Issuesโ
- Fixed an issue where an MPEG-DASH thumbnail adaptation set with a large amount of thumbnails could cause the player to temporarily lock up the main thread on lower end devices. The player now parses these thumbnails in a background thread instead.
- Fixed an issue where MPEG-DASH streams with duplicate service descriptors in their CEA-608
<Accessibility>descriptor would result in scrambled closed captions.
๐ 9.6.0 (2025/06/18)โ
Webโ
โจ Featuresโ
- Added support for using the
"keyids"initialization data format in EME, as defined by W3C. - Added support for ClearKey content protection signaled by the DASH-IF system ID (
e2719d58-a985-b3c9-781a-b030af78d30e) in the context of a DASH stream. (ClearKey signaled by the W3C system ID was already supported.) - Added support for ABR strategies for OptiView live streams.
โก Improvementsโ
- Improved latency control, especially on CPU-restricted devices.
๐ Issuesโ
- Fixed an issue where the player did not recognize a PlayReady PRO object as valid initialization data in an HLS
#EXT-X-KEYtag. - Fixed an issue where seeking to an area of buffer right before a gap on WebOS devices would cause the player to get stuck indefinitely.
- Fixed an issue where video qualities in a Millicast stream did not report their correct width and height.
- Fixed an issue where an incorrect intent to autoplay was sent to Google IMA.
Androidโ
โจ Featuresโ
- Added support for 16 KB page sizes in the Core SDK. This prepares for the upcoming Google Play compatibility requirement where new apps or app updates submitted after November 1st 2025 and targeting Android 15 or higher must support 16 KB page sizes.
๐ Issuesโ
- Fixed a regression where MediaTailor sources failed to play.
- Fixed an issue where video qualities in a Millicast stream did not report their correct width and height.
- Fixed an issue where some caching notifications would be stuck if multiple tasks run in parallel.
- Fixed a crash when casting a source with a
ChromecastMetadataDescriptionwithout areleaseDateorsubtitle. - Fixed an issue where a crash could occur due to an invalid playback rate when stopping Chromecast and then stopping the player.
- Fixed an issue where THEOads showed a black screen instead of an advertisement.
- Fixed an issue where setting
AbrStrategyType.BANDWIDTHwould ignore the historic data of the network conditions. - Fixed an issue where no
TimeUpdateEventwould be dispatched after seeking using the Media3 playback pipeline. - Fixed an issue where a large amount of
AddCueEvents from a thumbnail track would delay other player events.
โ Known Limitationsโ
- The Millicast integration does not yet support 16 KB page sizes. This has been fixed in THEOplayer version 9.12.0.
iOSโ
โจ Featuresโ
- Added
unlocalizedLabelproperty to tracks. Where applicable, this refers to the label before it gets automatically localized by Apple's AVFramework.
โก Improvementsโ
THEOplayer.sourcenow returns the exact sameSourceDescription(without modifications) that was last set on the property.
๐ Issuesโ
- Fixed an issue where accessing the player after the
destroymethod was called would crash the application. - Fixed an issue where entering the background during a THEOad would not let you resume the content.
๐ Deprecationsโ
- Deprecated the
destroymethod. Instead destroy the player by removing its referenceself.player = nil. - Deprecated the
setfrom the subscript of theTextTrackListAPI. TheTextTrackListis a readonly list.
Chromecast CAFโ
โก Improvementsโ
- Fixed playout of streams where the manifest extension was not the protocol default (.m3u8 or .mpd), but the type was correctly given in the source description.
Rokuโ
โจ Featuresโ
- Added tracking of CMCD states for THEOlens.
- Added Common Media Client Data (CMCD) Status header on media requests to track rebuffering.
- Added Network API for adding custom headers to media requests during playback.
๐ Issuesโ
- Stopped ads from playing after a stream has fatally errored.
- Fixed an issue with an event firing after calling
destroythat caused a crash when switching streams.
๐ 9.5.1 (2025/06/11)โ
Androidโ
๐ Issuesโ
- Fixed a crash when casting a source with a
ChromecastMetadataDescriptionwithout areleaseDateorsubtitle. - Fixed an issue where a crash could occur due to an invalid playback rate when stopping Chromecast and stopping the player.
- Fixed an issue where setting
AbrStrategyType.BANDWIDTHwould ignore the historic data of the network conditions.
๐ 9.5.0 (2025/06/03)โ
Generalโ
โจ Featuresโ
- Added support for HLS-only THEOlive channels.
Webโ
โจ Featuresโ
- Added
player.millicastAPI to access Millicast specific diagnostics and stats. See the diagnostics doc page for more information. - Added support for Dolby Digital (
ac-3) codecs in HLS when the platform supports it. - Added a default value for the
ott_placementGAM ad tag parameter for THEOads.
โก Improvementsโ
- Improved the latency of THEOlive streams on iOS Chrome.
๐ Issuesโ
- Fixed an issue where the player would sometimes not end properly when playing an HLS stream that starts with a gap.
- Fixed an issue where the player would crash when playing an HLS stream when all variant streams are offline. Instead, the player will now continue trying to request variant streams until one comes online.
- Fixed an issue where a segment in an HLS stream marked with
EXT-X-GAPwas still being downloaded and buffered.
Androidโ
โจ Featuresโ
- Added
TextTrackStyle.marginRightand.marginBottom. - Added the
CHANGEevent toAudioTrackEventTypesandVideoTrackEventTypes. - Added a default value for the
ott_placementGAM ad tag parameter for THEOads.
โก Improvementsโ
- Improved the subtitle renderer to better handle margins. The relative position of each subtitle is now preserved, and subtitles are shifted only when they would otherwise cross a margin.
- The Google IMA, Google DAI and THEOads integrations now automatically call
ImaSdkFactory.initialize()to begin loading necessary IMA SDK resources before the first ad request, which improves load times. To improve load times even further, we recommend callingImaSdkFactory.initialize()with yourImaSdkSettingsmanually when your app starts, even before creating yourTHEOplayerView. See the Google Ads developer blog and this Google IMA guide for more information. - Added an optional
googleImaConfigurationparameter toTheoAdsIntegrationFactory.createTheoAdsIntegration().
๐ Issuesโ
- Fixed an issue where the
TRACKLISTCHANGEevent was not firing in the Media3 pipeline. - Fixed an issue where text tracks would not be selectable in the sender app when casting to a Chromecast receiver.
- Fixed an issue where setting
MediaTrack.targetQualityon a disabled track (e.g. inside anADDTRACKevent listener) would be silently ignored in the Media3 pipeline. - Fixed an issue where trick play variants (such as
#EXT-X-I-FRAME-STREAM-INFin HLS) were incorrectly added as qualities of a videoMediaTrackin the Media3 pipeline. - Fixed a regression where
GoogleDaiConfiguration.adTagParametersincorrectly required aMutableMapparameter instead of a regularMap. - Fixed an issue where caching a DRM protected stream would pause after starting when using the Media3 pipeline.
iOSโ
โจ Featuresโ
- Added support for adbreak to adbreak transition with THEOAds.
- Added a default value for the
ott_placementGAM ad tag parameter for THEOads.
โก Improvementsโ
- Improved smoothness of startup when playing THEOlive streams.
Rokuโ
โจ Featuresโ
- Added separate text tracks for HLS daterange and ID3 metadata. These will also still appear in the
metadatatext track. - Added the ability to add and remove integrations to the player.
- Added support for EMSG and EMSG metadata tracks, available on the text tracks API.
- Added ID3 tag parsing for EMSG ID3 tags received in DASH.
- Added the ability to signal an embedded text track that is not in the manifest.
- Added the ability to configure midroll ads to replace content when they play.
๐ Issuesโ
- Changed caption suppression logic so it would not get triggered by switching languages.
- Fixed closed captions for HLS so captions don't end up suppressed when a captions track starts as "disabled".
- Fixed an issue where sometimes THEOlive assets would not autoplay.
๐ 9.4.1 (2025/05/23)โ
Webโ
โก Improvementsโ
- When playing a multiperiod DASH stream that has identical adaptation sets and representations across subsequent periods, a previously configured
targetQualitywill now remain active when transitioning to a new period rather than resetting toundefined.
๐ Issuesโ
- Fixed an issue where DASH streams with very small variations in
presentationTimeOffsets across periods with aligned media would encounter stalls on period transitions. - Fixed an issue where
targetQualitywould get overridden with an incorrect configuration for DRM-enabled DASH streams where nodefault_KIDs are present in the manifest.
๐ 9.4.0 (2025/05/20)โ
Generalโ
โก Improvementsโ
- Improved the ABR algorithm for OptiView live streams.
Webโ
โจ Featuresโ
- Added support for subtitles in native fullscreen on iOS Safari for OptiView live streams.
- Exposed VAST
<Extensions>tag contents onLinearAds. - Added
skipAdBreak()method to the Ads API, to allow seeking out of an ad break when using thecsaiintegration.
โก Improvementsโ
- Added CMCD v2 headers for all types of OptiView live HLS streams.
- Improved the recovery speed of OptiView live streams when the network is interrupted for a very short time.
๐ Issuesโ
- Fixed an issue where the
manifestupdateevent was not dispatched for iOS Safari. - Fixed an issue where dispatching of ads using the
csaiintegration was erroneous when preload is enabled. - Fixed an issue where a DASH stream with adaptation set switching enabled and with different codecs between the adaptation sets doesn't play on Chrome, Edge and Safari.
Androidโ
๐ฅ Breaking Changesโ
- The type of
GoogleDaiVodConfiguration.adTagParameterschanged fromMaptoMutableMapas part of the Kotlin update. This was an unintended breaking change that will be reverted in 9.5.
โจ Featuresโ
- Added DASH thumbnail track support for Media3.
โก Improvementsโ
- Added Kotlin constructor for
SourceDescription, as an alternative forSourceDescription.Builder. - Added Kotlin constructors for
DRMConfigurationandKeySystemConfiguration, as an alternative forDRMConfiguration.BuilderandKeySystemConfiguration.Builder. - Media and text tracks are now available on
loadedmetadatawhen using the Media3 playback pipeline.
๐ Issuesโ
- Fixed playback of DRM protected HESP streams.
- Fixed an issue where a source with a
CustomSsaiDescription(e.g. using the Uplynk or Yospace connector) could not be played with the Media3 pipeline. - Fixed an issue where the player would sometimes crash on play-out of an HLS source with
#EXT-X-DATERANGEmetadata. - Fixed an issue where date range cues were not properly removed in the Media3 pipeline once they are entirely before the start of the latest HLS playlist.
- Fixed an issue where cues of text tracks that contain bitmap content would not be rendered.
- Fixed an issue where the player would not free all resources after ad play-out.
iOSโ
๐ Issuesโ
- Fix issue on iOS with Chromecast where when the app goes to background and a Chromecast session is currently active, audio playback starts on the phone.
- Fix issue on iOS with Chromecast where playback rate cannot be set back to
1.0. - Fixed an issue where caching tasks would store multiple files on disk.
Rokuโ
โจ Featuresโ
- Added THEOlive support using backup HLS stream.
- Added in ability to mix VMAP and VAST ads, and to schedule ads.
- Added the ability to set headers on the media requests, and solved the issue of application headers bleeding over into media requests.
โก Improvementsโ
- Handled more unusual cases for scheduling ads during playback.
- Handled more cases for scheduling ads, including scheduling ads when no ads have previously been configured.
๐ Issuesโ
- Solved an issue with multi-ad VMAP postrolls by disabling Inter Pod Stitching for them.
๐ 9.3.4 (2025/09/22)โ
iOSโ
๐ Issuesโ
- Fixed an issue where deinitializing the player during the loading of a THEOlive (OptiView Streaming) stream would cause a crash.
๐ 9.3.3 (2025/09/17)โ
iOSโ
๐ Issuesโ
- Fixed an issue where THEOlive streams would not restart after app backgrounding.
๐ 9.3.2 (2025/05/13)โ
Androidโ
๐ Issuesโ
- Fixed an issue where communication with Google IMA backend was interrupted after an ad break on THEOAds.
๐ 9.3.1 (2025/05/12)โ
iOSโ
โก Improvementsโ
- Improved the algorithm behind our HESP pipeline to reach the targetLatency.
๐ 9.3.0 (2025/05/05)โ
Webโ
โจ Featuresโ
- Added support for DRM protected OptiView Streaming HLS.
โก Improvementsโ
- The VR integration now initializes itself lazily when the first VR-enabled source is set, rather than when the player is created.
- Improved the transition from content to ad for THEOads streams on smart TVs.
- Improved playback stability of HESP streams on Xbox.
๐ Issuesโ
- Fixed an issue where the player would show a blank screen on Tizen 2.4 when playing a non THEOads stream and the
theoadsfeature is enabled in thePlayerConfiguration. - Fixed an issue for THEOads where scheduling an ad break through SSE could cause it to be played twice in a row.
- Fixed an issue for THEOads where the player did not resume the content at the correct time after an ad break.
- Fixed an issue where switching between audio tracks with an incompatible codec in an HLS stream causes the player to crash, even though the codecs are supported by the browser.
- Fixed an issue where the Chromeless player would freeze when switching to an adbreak when playing a THEOads stream unmuted on iOS Safari.
Androidโ
โจ Featuresโ
- Added support for the
MetricsAPI in the Media3 playback pipeline.
๐ Issuesโ
- Fixed an issue where a previously removed caching task would sometimes re-appear after restarting the app.
- Fixed an issue where calling
CachingTask.start()on a task for a DASH stream with persistent DRM would immediately pause the task after the DRM license has been cached. - Fixed an issue where
CachingTask.percentageCachedwas not properly updated to1.0(i.e. 100%) after the caching task becomes done. - Fixed an issue where calling
play()when the player is ended did not correctly seek back to the start using the Media3 pipeline. - Fixed an issue where the THEOads session was not cleaned up properly when setting a new source.
- Fixed an issue where
player.abr.strategydid not work on HLS streams with the Media3 pipeline.
iOSโ
โก Improvementsโ
- Improved the IMA pod stream request for THEOads which is now sent on source change instead of when a THEOad starts preloading.
- Updated Millicast integration dependency on Millicast SDK to v2.4.1.
๐ Issuesโ
- Fixed an issue where the
endedevent would be dispatched twice while playing MPEG format sources. - Fixed an issue where a new source would autoplay when preload is set to auto.
- Fixed an issue where the metadata of a THEOad was not passed to Google IMA.
- Fixed an issue where some events were not being dispatched for THEOads with Google IMA.
- Fixed an issue where the ID3 based ad events were dispatched too early for THEOads.
- Fixed an issue where PiPConfiguration was not respected after setting a source.
tvOSโ
โจ Featuresโ
- Added support for THEOads.
Rokuโ
โจ Featuresโ
- Added
suppressCaptionsfunctionality based ontextTracksmodefield. Captions are automatically suppressed whentextTracksmodeis"disabled". - Added the
mutedAPI to control the video node's mute state. - Added support for Client Side Ad Insertion using the player
AdsAPI. Check out the getting started with ads on Roku docs for more information.
๐ Issuesโ
- Fixed an issue where bitrate changes were not being correctly reported to the Adobe Edge connector.
๐ 9.2.0 (2025/04/22)โ
Webโ
๐ฅ Breaking Changesโ
- Updated the LCEVC integration compatibility to LCEVCdecJS SDK version 1.2.1. This breaks compatibility with prior versions. For more info check our LCEVC doc page.
โจ Featuresโ
- Added a flag
enableNoncetoGoogleDAIConfiguration. - Added a flag
allowSeekingForGoogleDaito enable seeking during an ad break in a Google DAI stream. - Added support for automatically setting the "ott_placement" GAM ad tag parameter for THEOads.
๐ Issuesโ
- Fixed an issue where going to fullscreen when playing an LCEVC stream would result in misaligned player positioning.
- Fixed an issue where the
startTimeproperty of aDateRangeCuewould be wrong when dispatching anEnterCueEventon a quality switch. - Fixed an issue on Tizen 2.4 where playback of a DASH stream stalled due to a usable PlayReady DRM key being ignored.
- Fixed an issue where the player could get stuck in a loop when encountering a gap in the buffer of an HLS stream when playing on Tizen devices.
- Fixed an issue where disabling a
MediaTrackfor a HLS CMAF stream would result in an error.
Androidโ
โจ Featuresโ
- Added support for text tracks of type
TextTrackKind.TimeCodefor THEOlive / HESP streams. - Added support for Multi-Audio THEOlive streams.
- Added support for automatically setting the "ott_placement" GAM ad tag parameter for THEOads.
โก Improvementsโ
- Adhere to the values of
NetworkConfigurationfor retrying network requests for THEOlive / HESP streams.
iOSโ
โจ Featuresโ
- Added support for multiple audio tracks for THEOlive sources.
- Added support for automatically setting the "ott_placement" GAM ad tag parameter for THEOads.
๐ Issuesโ
- Fixed an issue where the ad tag parameters were not passed to Google when playing a THEOad.
- Fixed an issue where calling
player.destroy()did not fully destroy the player. - Fixed an issue where a THEOad would already start playing, only audio, before its start date.
๐ Deprecationsโ
- Deprecated the
setfrom the subscript of theMediaTrackListAPI. TheMediaTrackListis a readonly list.
Rokuโ
โจ Featuresโ
- Added the THEO Adobe Edge Platform Connector, or THEO AEP connector, for providing media analytics through the AEP SDK.
๐ Issuesโ
- Corrected the bitrate change detection so it reports video bitrate rather than audio bitrate.
- Added missing ability to set
isLivefor Conviva content metadata from theupdateContentMetadatamethod.
๐ 9.1.0 (2025/04/10)โ
Webโ
โจ Featuresโ
- Added support for language and label for captions for THEOlive streams.
โก Improvementsโ
- Removed
CCprefix fromTextTrack.labelfor CEA-608/708 captions tracks that have a known label or language.
๐ Issuesโ
- Fixed an issue where the player would dispatch wrong THEOads events when playing a THEOads stream in native picture-in-picture.
- Fixed an issue where chapter indicators on the seek bar were positioned incorrectly when the video is clipped using
player.clip. - Fixed an issue where the player would not play multiple ads when playing a THEOads streams on smartTVs.
Androidโ
โจ Featuresโ
- Added support for
THEOplayerConfig.networkConfigurationin the Media3 playback pipeline.
โก Improvementsโ
- Prefer language over channel number as track label for CEA-608/708 captions.
๐ Issuesโ
- Fixed an issue for THEOAds where the LShape layout crashed.
- Fixed an issue where the player would need to occasionally recover on THEOlive / HESP streams resulting in a short spinner.
- Fixed an issue where the Media3 backend failed to cache HLS streams.
- Fixed an issue where the Media3 backend would error immediately instead of retrying when encountering a network error for an HTTP request.
- Fixed an issue where using a Fire TV license would be rejected.
- Fixed an issue where subtitles from a DASH period after the first period were not presented at the correct time with the Media3 pipeline.
- Fixed an issue where a selected subtitle track would incorrectly be disabled on a period switch, even though the next period contains a matching subtitle track.
iOSโ
๐ Issuesโ
- Fixed an issue where using THEOads would introduce a memory leak.
- Fixed an issue where transitioning into an ad break with THEOads would not preserve the volume and muted state.
- Fixed a memory leak for THEOads where an
Adwould hold a strong reference to itsadBreak. - Fixed an issue for THEOads where moving the player view to another UIViewController would cause an application crash.
- Fixed an issue where the Millicast integration framework also included the THEOplayer framework causing applications to be rejected from the App Store.
Rokuโ
โจ Featuresโ
- Added a
stopAndStartNewSessionmethod to handle cases where a new session should be started on the currently playing media.
๐ 9.0.0 (2025/04/03)โ
Officially announcing THEOplayer 9.0โ
Introducing a major version bump to THEOplayer 9.0. This version officially releases all the improvements and developments THEOplayer has achieved since version 8.0.
THEOplayer 9.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.
-
Starting from THEOplayer 9.0, the new Media3 Playback pipeline is now the default for all Android SDK playback, bringing bug fixes, performance improvements and increased stability across a wider range of devices for the Android SDK! Check out our Getting started with Media3 guide for more information.
-
THEOplayer 9.0 supports playback of Dolby's real time streaming solution Millicast across all of our major SDKs, including React Native! Check out our Getting started with Millicast guides for Web, Android, iOS and React Native for more information.
-
With THEOplayer 9.0 we are also bumping and upgrading our THEOplayer Roku SDK to 9.0, bringing API and stability improvements along with new connectors for Conviva and Comscore, with more new feature development and connectors to follow! Check out our Roku docs for more information.
-
THEOplayer 9.0 now comes with cross platform support for CMCD! We've added CMCD support for our Media3 pipeline as well as for iOS 18+, and made it available cross-platform through React Native too! Check out our CMCD docs for Web, Android, iOS and React Native for more information.
For more info on navigating our breaking changes, take a look at our migration guides for Web, Android, iOS and React Native.
Webโ
๐ฅ Breaking Changesโ
- Virtual reality playback now always uses the WebXR API. The
PlayerConfiguration.vr.useWebXRconfiguration flag is now deprecated and ignored. - Removed
THEOplayer.playerSuiteVersion. UseTHEOplayer.versioninstead. - Removed the Verizon Media integration (
player.verizonMedia). Use the Uplynk integration (player.uplynk) instead. - Removed
MillicastSource.streamName. UseMillicastSource.srcinstead. - Removed
SourceDescription.manifestMetadataTrack. - Removed
player.ads.theoads.replaceAdTagParameters. Useplayer.theoads.replaceAdTagParametersinstead. - Removed discontinued proof-of-concept integration for Imagine SSAI.
- Removed the option to use THEOads with a sideloaded manifest.
๐ Issuesโ
- Fixed an issue for THEOads where the player could error on smart TVs after an adbreak.
- Fixed an issue where sideloaded text tracks would not appear on iOS Safari when using native fullscreen.
Androidโ
๐ฅ Breaking Changesโ
- The Media3 playback pipeline is now enabled by default. This new pipeline is built on top of Jetpack Media3, which aims to provide more stable playback on a wider range of devices.
- The legacy playback pipeline from version 8.x is still available, and can be activated by setting
TypedSource.playbackPipelinetoPlaybackPipeline.LEGACY. - The legacy playback pipeline is scheduled to be removed in version 10.
- The legacy playback pipeline from version 8.x is still available, and can be activated by setting
- Newly created caching tasks now use the Media3 storage backend by default.
- Sources cached with this backend can only be played using the Media3 playback pipeline.
- Sources previously cached with the legacy storage backend are still playable using the Media3 playback pipeline.
- The legacy storage backend from version 8.x is still available, and can be activated by setting
CachingParameters.storageTypetoCacheStorageType.LEGACYwhen callingCache.createTask(). - The legacy storage backend is scheduled to be removed in version 10.
- Removed the Media3 integration package. The Media3 playback pipeline now ships with the THEOplayer Android SDK (
com.theoplayer.theoplayer-sdk-android:core). - The Android SDK and its integrations are now compiled against API 35. Ensure
compileSdkis set to 35 or higher in your app'sbuild.gradlefile. - Removed deprecated
MillicastSource(Credential, Option)constructor. Use the primary constructor instead. - Removed deprecated
MillicastSource.credentialAPI. Usesrc,streamAccountId,apiUrlandsubscriberTokeninstead. - Removed deprecated
MillicastSource.optionAPI. UseconnectOptionsinstead. - Removed deprecated
TypedSource.isHlsDateRangeAPI. UseTypedSource.hlsDateRangeinstead. - Removed deprecated
TypedSource.isLowLatencyAPI. UseTypedSource.lowLatencyinstead. - Removed deprecated
THEOLiveConfig.userIdAPI. - Removed deprecated
THEOLiveConfig.sessionIdAPI. UseTHEOLiveConfig.externalSessionIdinstead. - Removed deprecated
ConaxDRMConfiguration.Builder.fairPlay(FairPlayKeySystemConfiguration)API. UseConaxDRMConfiguration.Builder.fairplay(FairPlayKeySystemConfiguration)instead. - Removed deprecated
THEOplayerConfig.getLiveOffset()API. UseTypedSource.liveOffsetinstead. - Removed deprecated
THEOplayerConfig.isHlsDateRange()API. UseTypedSource.hlsDateRangeinstead. - Changed the default value of
THEOplayerConfig.Builder#autoIntegrations(boolean)totrue. From now on, all available integrations will be automatically added. - Removed deprecated
GoogleImaIntegrationFactory.createGoogleImaIntegration(THEOplayerView, ImaSdkSettings)API. UseGoogleImaIntegrationFactory.createGoogleImaIntegration(THEOplayerView, GoogleImaConfiguration(ImaSdkSettings))instead. - Removed deprecated
GoogleDaiIntegrationFactory.createGoogleDaiIntegration(THEOplayerView, ImaSdkSettings)API. UseGoogleDaiIntegrationFactory.createGoogleDaiIntegration(THEOplayerView, GoogleImaConfiguration(ImaSdkSettings))instead. - Moved the
GoogleImaAdAPI from the packagecom.theoplayer.android.api.ads.GoogleImaAdtocom.theoplayer.android.api.ads.ima.
โ Known Limitationsโ
Availability of media and text tracks has moved from the(Fixed in version 9.4.0.)loadedmetadataevent to theloadeddataevent when using the Media3 playback pipeline.Text track styling embedded in the source take precedence over user text track style configuration.(Fixed in version 9.7.0.)
โจ Featuresโ
- Added the
sseEndpointproperty toTheoAdDescriptionto retrieve server-sent events from the configured endpoint.
โก Improvementsโ
- Updated the Google Chromecast dependency from 21.4.0 to 22.0.0.
- Updated the Gson dependency from 2.10.1 to 2.12.1.
iOSโ
๐ฅ Breaking Changesโ
- Removed Objective-C support for all THEOplayer APIs.
- Removed deprecated
Integration.IntegrationTypeAPI. UseIntegration.IntegrationKindinstead. - Removed deprecated
MillicastSource(streamName:accountID:token:connectOptions:)API. UseMillicastSource(src:streamAccountId:subscriberToken:connectOptions:)instead. - Removed deprecated
MillicastSource(streamName:accountID:token:connectOptions:)API. UseMillicastSource(src:streamAccountId:subscriberToken:connectOptions:)instead. - The
TypedSourceinitializer now takes aStringparameter as a source instead of aURLobject. - The
Ads.daiproperty is now only available when theGoogleIMAIntegrationpackage is included in the project.
๐ Issuesโ
- Fixed an issue where when connected to Airplay and playing live content, it does not automatically seek to the live point, and instead starts playing from the earliest DVR window.
- Fixed an issue where the timeupdate event frequency was too high when playing a Millicast source.
- Fixed an issue where playing multiple Millicast sources after each other would cause the app the become unresponsive.
Chromecast CAFโ
๐ฅ Breaking Changesโ
- Removed
THEOplayer.playerSuiteVersion. UseTHEOplayer.versioninstead.
Rokuโ
๐ฅ Breaking Changesโ
- Removed the
configurationproperty. Player configuration such as the player license should be passed using the newconfiguremethod now instead. - Removed support for verizon's SSAI, ads, and other features. This removes the
skipAdsmethod, ad events and the relevant verizon specific API. A new Uplynk connector will be added in the future to reintroduce this functionality, in the meantime customers relying on this are advised to remain on 1.X and get in contact to notify us of the dependency of Uplynk functionality and desire to upgrade. - The
setDestinationRectanglemethod now only accept separate parameters instead of also an object containing the rectangle properties. - Removed the deprecated
listenerproperty and changed the signature of theremoveEventListenerandaddEventListenermethods. - Removed the
cuesproperty from the metadata text track and enforced only tracking one active cue in theactiveCuesproperty. - Removed the
contentproperty from metadata text track cues. AddedrawContentin its place which exposes the raw metadata object the player received from Roku's video node. - The
activeCuesproperty on the metadata text track now only tracks the single latest timed metadata encountered in the stream. For the time being, tracking more cues should be tackled outside the player by observing the metadata text track and storing the cues oneself. - A metadata text track cue will now have its PTS that the player received from the video node on its
startTime, rather than itsendTime. - Fine-tuned playback control options for live streams. By default seeking into the DVR window will be enabled for live streams and pausing the stream will cause the player to resume from the point where the player was paused. Setting the
enableTrickPlayAPI to false will change this behaviour to disallow seeking back into the DVR window and cause the player to resume from the live point after being paused.
โจ Featuresโ
- Added the
autoplayproperty to control automatic start of playback after setting the source. It defaults tofalse, and when disabled the poster image will now display before playback begins.
โก Improvementsโ
- Updated the Conviva client used in the Conviva connector to 3.5.4 and improved Conviva tracking.
๐ Issuesโ
- Fixed an issue where license checks would not properly display error messages for different issues with licenses.
- Fixed an issue where app crashes could occur due to lingering listeners after destroying the player instance.