THEOplayer 2.x Changelog

2.48.0 (06/11/2018)

Improvements

  • Fix an issue where the player would sometimes stall indefinitely on period switches in DASH streams.

Issues

  • Fix an issue with certain content security policy (CSP) directives.

2.47.0 (23/10/2018)

Features

  • Added support for UTCTiming elements in MediaPresentationDescriptions as defined in DASH IF IOP v4.2, section 4.7.3.
  • Added Xstream DRM pre-integration for Widevine and Playready.
  • Added support for AirPlay with FairPlay protected streams.

Improvements

  • Improved handling of DRM-protected content.
  • Added log level to Agama configuration

Issues

  • Fix an issue where Google DAI's and Google IMA's clickthrough were not clickable.
  • Fix an issue where text tracks were visible on the local player when casting.
  • Fix an issue where the player would sometimes stall indefinitely when some tracks had differing start times.
  • Fix an issue where the clickthrough for an ad was not clickable.

2.46.0 (08/10/2018)

Features

  • Added QoS droppedVideoFrames metrics
  • Added support for availabilityTimeOffset in SegmentTemplate-based DASH streams.
  • Added QoS corruptedVideoFrames metrics
  • Added agama integration

Improvements

  • Improved setting autoplay parameters for Google IMA Ad requests.
  • Improved error handling when worker files are unavailable due to CORS configuration.

Issues

  • Fix an issue where the player was not able to play a source which consisted solely of advertisements.
  • Fix an issue where the player fails to buffer when DASH segments are slightly misaligned.
  • Fix an issue where the StreamOne integration attempted to track an end of stream event, even if the integration was not enabled.
  • Fix an issue where SegmentList initialization segment urls were not always correctly resolved.
  • Fix an issue in the THEOplayer ad integration where specific ads would only play in the lowest quality on Safari.
  • Fix an issue where destroying a player instance caused the Chromecast session of another instance to end.

2.45.0 (10/09/2018)

Features

  • Added retainPresentationModeOnSourceChange flag on the picture-in-picture configuration.
  • Added basic support for chunked CMAF in MPEG-DASH streams.

Improvements

Issues

  • Fix an issue where playback would sometimes stop near a discontinuity for some HLS streams.
  • Fix an issue with DASH streams using SegmentBase.
  • Fix an issue where the Referer header was no longer set on HTTP requests.
  • Fix an issue where subtitles were automatically turned off after switching away from the main content - e.g. for advertisement or casting.
  • Fix an issue where the player sometimes stutters after appending a segment in DASH streams with a large timescale.
  • Fix an issue where segments were sometimes shifted by a frame, causing the player to stall.

2.44.0 (27/08/2018)

Features

Improvements

  • Improved dynamic sizing for thumbnails, e.g. in fullscreen mode.

Issues

  • Fix an issue where native fullscreen was not possible when using muted autoplay on iOS Safari.
  • Fix an issue where the player would seek indefinitely.
  • Fix an issue where the bitrate option in player.abr.strategy.metadata was incorrectly interpreted as bytes per second (instead of bits per second).

2.43.0 (10/08/2018)

Features

  • Added active quality label to UI.
  • Added FreeWheel integration.
  • Added upcoming ad notification feature

Issues

  • Fix an issue where the player would stall indefinitely on some DASH live streams from Microsoft Azure.
  • Fixed an issue where ABR bandwith calculation was affected by network interceptors
  • Fix an issue where the player would not start playback on some DASH live streams.
  • Fix an issue where the Xstream ticket acquisition URL could not be specified through the API
  • Fix an issue where ended state could not always be reached for MPEG-DASH playback

2.42.0 (25/07/2018)

Features

  • Add Xstream DRM pre-integration for FairPlay

Issues

  • Fix an issue where the duration of a DASH stream was not correctly calculated for SegmentBase-based timelines.
  • Fix an issue where playback rate does not update for DASH streams.

2.41.0 (17/07/2018)

Improvements

  • Improved detection of invalid libraryLocation configuration.
  • Improved handling of missing segments: when a segment is missing in one quality, the player will now also attempt downloading in other qualities.

Issues

  • Fix an issue where certain segments would not be downloaded in Firefox.
  • Improved robustness of player concerning dealing with failing to update a live DASH manifest
  • Fixed an issue with setting the targetQuality of a track to automatic.
  • Fixed an issue where manual quality switches in FireFox caused a glitch.

2.40.0 (02/07/2018)

Improvements

  • Improved performance for DASH streams with a large number of Periods.
  • Added support for Titanium PlayReady version 3.
  • Added qualities property to targetqualitychanged event.

Issues

  • Fix an issue where preload of a live-stream would result in playback at the start of live window
  • Fix an issue where the error message is not properly cleared after changing the source.
  • Fix an issue where IMA ads unset picture-in-picture mode.
  • Fix an issue where DASH manifests without initialisation segment specifications were not handled correctly.
  • Fix an issue where some domains can't be whitelisted.
  • Fix an issue where the poster image was overlaying when setting it, now poster-images are reset when you set the source afterwards.

2.39.0 (18/06/2018)

Improvements

  • Improved DASH buffering logic to handle manifest inaccuracies better.

Issues

  • Fix an issue where DASH streams would not play back on IE11.
  • Fix bad performance when playing DASH streams with multiple Widevine DRM keys on Firefox.
  • Fix program date time when segments vary in duration.
  • Fix an issue in Edge where live streams using large timestamps would freeze.
  • Fix a small FairPlay bug on iOS 9.

2.38.0 (04/06/2018)

Features

  • Add clipping support
  • Add looping support
  • Support extra query parameters in SpotX Ads

Issues

  • Fix an issue where the player would sometimes get stuck at the start of a live stream
  • Fix an issue where we do not dispatch a playing event after an Google IMA ad has already started
  • Fix an issue where the player would crash on a native Edge bug
  • Fixed an issue with rendering SMPTE-TT text tracks.

2.37.0 (22/05/2018)

Features

  • Added support for the Titanium DRM token-based authentication flow for Widevine and Fairplay.

Issues

  • Fix an issue where the viewport would jump down when a poster image larger than the viewport was set.
  • Fix an issue where IE11/W7 playback stalls after a discontinuity.
  • Fix an issue where WebVTT font size was too big in portrait fullscreen mode
  • Fix an issue where sometimes the wrong active quality is reported for HLS streams.
  • Fix an issue where player couldn't handle a non-linear ad set as a pre-roll
  • Fix an issue where the last scheduled advertisement was not being requested by IMA
  • Improved handling of different formats for timeOffset/skipOffset for all ad systems

2.36.0 (07/05/2018)

Features

  • Added firstFrame property to quality
  • Added update event to Quality objects, dispatched when any property changes
  • Added support for SMPTE-TT subtitles embedded in ID3 metadata.
  • Provide ability to set target buffer duration.

Issues

  • Fix an issue where a failed segment download during caching logged a warning in the browser console.
  • Fix an issue where the player was not able to seek to the start of a stream due to a bug in Edge.
  • Fix an issue where the player would hang when playing CEA608 subtitles.
  • Fix an issue with multiple concurrent caching tasks.
  • Fix an issue where rounding errors in DASH segments would sometimes confuse the player's download logic.
  • Fix an issue in Chrome where content hangs after changing qualities.

2.35.0 (23/04/2018)

Features

  • Added possibility to configure the time between the live point and the end of the manifest.
  • Added exposing Conviva client and session ID
  • Added Azure Media Services pre-integration for FairPlay DRM.

Issues

  • Fix an issue where seeking in an MPEG-DASH stream sometimes seeks to the wrong time.
  • Fix an issue with setting preload and then changing source to an MPEG-DASH stream.
  • Fix an issue where FairPlay-protected streams would fail to start.
  • Fix an issue where HLS streams would fail to start with an empty contentProtection configuration.
  • Fix an issue where side-loaded WebVTT text tracks with a UTF-8 BOM were not correctly recognized.
  • Fix an issue where seeking to the end of a DASH stream did not always load the last segment.
  • Fix an issue where caching tasks are incorrectly removed when offline
  • Fix an issue with the currentTime of DASH livestreams when chromecasting.

2.34.0 (09/04/2018)

Features

  • Added CastLabs DRMToday pre-integration.
  • Added MediaMelon SmartSight analytics pre-integration.
  • Added V-Nova integration.

Improvements

  • Related Content API: added show and hide events.
  • Google IMA integration: pause advertisement while visiting click through website.
  • Dispatch destroy event when player.destroy() is called.
  • Fall back to alternative sources in SourceDescription when DRM of initial source is not supported.

Issues

  • Fix an issue where an internal polyfill for Array.prototype.includes accidentally leaked to the global scope.
  • Fix an issue where sometimes Chrome would freeze on certain MPEG-DASH streams.
  • Fix an issue where an extraneous seeking event occurs before an HLS stream starts playing.
  • Fix an issue where player-level and source-level analytics configurations were not correctly combined.
  • Fix an issue where an empty captions text track is added on iOS for streams that don't contain captions.
  • Fix an issue with the ExpressPlay integration for Fairplay-protected streams.
  • Fix an issue where a mute toggle is displayed on environments that don't support programmatic muting.
  • Fix an issue with preload for HLS streams.
  • Fix an issue with seeking to live when the manifest reports starts of fragments that are slightly off.
  • Fix an issue where the player would detect too many audio tracks in some HLS streams on iOS.

2.33.0 (26/03/2018)

Features

  • Added Chromecast global session sharing.

Improvements

  • Network API: added subtype property to identify initialization segment requests.
  • ABR API: added bandwidth strategy.

Issues

  • Fix an issue where the VR display is sized incorrectly on iPhone X.
  • Fix an issue with switching audio tracks in DRM-protected MPEG-DASH streams on Firefox.
  • Fix an issue where sometimes the wrong subtitles stay on the screen after seeking.
  • Fix an issue with StreamOne analytics.
  • Fix an issue with unsupported adaptation sets in MPEG-DASH streams.
  • Fix an issue with setting vr.direction before starting playback.
  • Fix an issue with HLS segments with missing audio frames.
  • Fix an issue with VR on Chrome 65 and higher.

2.32.0 (12/03/2018)

Features

  • Added StreamOne analytics pre-integration.
  • Added ExpressPlay FairPlay DRM pre-integration.

Issues

  • Fix an issue where some ad error events were not reported for Google IMA.
  • Fix an issue where malformed MPEG-TS packets may crash the player.
  • Fix an issue where some streams repeatedly stall after every segment in IE11.
  • Fix an issue where segments starting with a B-frame sometimes cause stalls in Safari and Edge.
  • Fix an issue where FairPlay-protected streams would fail to start.

2.31.0 (26/02/2018)

Improvements

  • Improve recovery when a segment in a HLS variant stream cannot be fetched.

Issues

  • Fix an issue where player sometimes crashes when rapidly switching between DRM-protected streams.
  • Fix an issue when seeking in a multi-period DASH live stream.
  • Fix an issue when combining VR content with Google IMA ads.
  • Fix an issue where credentials were not sent when requesting certain DASH segments.
  • Fix an issue where a pinch gesture activates native fullscreen on iOS.
  • Fix various issues with casting to Chromecast.

2.30.1 (14/02/2018)

Features

  • Added Chromecast Receiver SDK.
  • Added adaptive bitrate (ABR) API.
  • Added Castlabs DRMToday pre-integration.
  • Added optimal media file selection for linear advertisements.

Improvements

  • Improve advertisement error messages.
  • Improve automatic picture-in-picture to only activate when playback was previously started.

Issues

  • Fix an issue with 360 degrees videos sometimes glitching on iOS around quality switches.
  • Fix an issue with muted autoplay and Google IMA pre-rolls ads on mobile.
  • Fix an issue with Widevine DRM on Firefox 52 ESR.
  • Fix an issue with Irdeto FairPlay DRM.
  • Fix an issue with replaying an ended video on Internet Explorer 11.
  • Fix an issue with some video-only streams not starting.
  • Fix an issue with HLS streams containing MP3 audio not starting.
  • Fix an issue where scrubber sometimes goes outside of seekbar on some live streams.
  • Fix an issue where subtitles are sometimes displayed twice on iOS.
  • Fix an issue where subtitles are displayed too small.
  • Fix an issue with WebVTT subtitles embedded in MPEG-DASH stream.
  • Fix an issue where CEA-608 captions sometimes stop showing after switching to a different stream.
  • Fix various issues with advertisements.

2.29.0 (15/01/2018)

Features

  • Allow moving the seek bar inside the control bar using the theo-seekbar-inside-controls CSS class.

Issues

  • Fix an issue preventing some HLS livestreams from starting playback.
  • Fix an issue with pre-roll advertisements on iOS 9.
  • Fix an issue with ID3 metadata on iOS.
  • Fix an issue causing the Chromecast button to sometimes disappear when using multiple players.

2.28.0 (03/01/2018)

Features

  • Added support for loading THEOplayer from a cached Google page
  • Added THEOplayer.features property
  • Added CEA-608 text track styling

Improvements

  • Improve DASH gap handling

Issues

  • Fix an issue where ads did not play correctly when using muted autoplay and Google IMA
  • Make sure the ended event is dispatched with empty VAST postroll in Google IMA pre-integration

2.27.0 (15/12/2017)

Features

Improvements

  • Improve CEA608 handling across quality switches
  • Internet explorer: use responseUrl from http response
  • Improve ABR for HLS streams on mobile
  • Improve handling of missing keyframes
  • MPEG-DASH stream dispatch only one error event on a load error

Issues

  • Fix an issue with ID3 on iOS not correctly activating
  • Fix issue with HLS packager
  • Solved an issue where last segment was not always packaged in HLS stream

2.26.0 (4/12/2017)

Features

Improvements

  • Youbora Analytics also track advertisements
  • Improve error messages

Issues

  • Solved an issue with chromeless player and poster image

2.25.0 (20/11/2017)

Features

Improvements

  • Irdeto integration: minor update.
  • Prefill for SpotX device data.
  • Support for HLS current program date time on iOS.
  • Android SDK:
    • Allow putExtra on CustomFullscreen Activity.
    • Allow cross-origin requests.
  • Google IMA: pass in custom IMA settings when scheduling an ad.
  • General UI improvements.

Issues

  • Solved an issue related to rendering of subtitles.
  • Solved an issue where iOS SDK would sometimes crash.
  • Solved an issue where video content started playing in the background when a video ad is playing on Safari.
  • Solved an issue where mute and unmute with video ad didn't work.

2.24.0 (15/11/2017)

Features

Improvements

  • Remove border around player on focus
  • Improve Google IMA ad playback on Safari 11

2.23.0 (07/11/2017)

Features

Improvements

  • Improved handling of text tracks

2.22.0 (23/10/2017)

Features

Improvements

Issues

  • Google IMA: Improvements for non-linear ads and VPAID ads

2.21.0 (28/09/2017)

Features

  • Added the Network API
  • Added allowNativeFullscreen to the player configuration. This allows using fullscreen on the video element directly instead of on the whole player.
  • Added support for Conax FairPlay
  • Added a generic metadata property to SourceDescription to allow for more descriptive sources.
  • Added the adskip event to the Advertisement API to indicate ads that are being skipped
  • Added support for more timeOffset formats for GoogleIMAAdDescriptions (scheduling ads without VMAP): timestamps, "start", "end" and percentages (for VOD)

Improvements

  • Improved the UI for the Up Next feature
  • Improved the handling of ID3 metadata on iOS
  • Improved the adskip button to feature the poster image

Issues

  • Solved an issue where muted autoplay on iOS could not be unmuted
  • Solved an issue where the ended event was not always dispatched when IMA ads were used
  • Solved an issue where tooltip for currentTime was not updating correctly on mobile web when switching to picture-in-picture

2.20.0 (12/09/2017)

Features

  • Allow THEOplayer to be used as an Audio Node within the Web Audio API

Improvements

  • Improved the player's big play button
  • Improved the UI of Picture-in-Picture on the web
  • Improved the UI of the up-next panel
  • Various improvements to the player's internals
  • Improved the UI of the top control bar
  • Improved the player to play content as smoothly as possible

Issues

  • Solved an issue where a wrong play/pause icon would show on mobile platforms after returning from tab inactivity
  • Solved an issue where the player sometimes stalls when the PTS/DTS offset changes on a discontinuity edge
  • Solved a memory leak issue
  • Solved a freezing issue on Chrome/Opera
  • Solved an issue where sideloaded text tracks appear twice in the subtitle menu
  • Solved an issue where the player would not be correctly resized for 4:3 videos
  • Solved an issue with mouse behaviour when using 360/VR

2.19.0 (28/08/2017)

Features

  • Added support for KeyOS Fairplay

Improvements

  • Improved the player's download prioritization
  • Improved handling of offline DASH manifests
  • Improved playback of multiple sequential advertisements
  • Various updates and improvements to the player's codebase

Issues

  • Solved an issue where playing certain DASH manifests could trigger a memory leak
  • Solved an issue where the player would stall playback on certain HLS live streams
  • Solved an issue where including the Google IMA script would cause the player to pause after a single tap on mobile devices
  • Solved an issue where the language selection menu was not always correctly updated
  • Solved an issue where the player's manifest downloads would not be correctly cleared after setting a new source
  • Solved an issue where the 'Up Next' UI did not always show at the end of a video

2.18.0 (18/08/2017)

Features

  • Added support for DASH SegmentTemplate parameter prefix padding
  • Added support for setting a list of qualities as target qualities (documentation)
  • Added a right-click menu to the player's UI
  • Added support for Irdeto Registered User Flows (documentation)

Improvements

  • Improved handling of unsupported DASH tracks
  • Various improvements to the player's internals
  • Improved handling of streams with empty or missing segments

Issues

  • Solved an issue where the player did not correctly recover from an unavailable Google IMA ad
  • Solved various minor issues with advertisement playback
  • Solved an issue where the useCredentials flag was not taken into account correctly
  • Solved an issue where ID3 cuechange events where not correctly fired on iOS
  • Solved an issue where multiple players on the same page would not share a Chromecast session correctly
  • Solved an issue where the player's bandwidth algorithm estimation gave bad results
  • Solved an issue where DASH emsg events were not correctly exposed

API Updates

  • Removed all support for the previously deprecated drmController API

2.17.0 (28/07/2017)

Features

Improvements

  • Improved Conviva integration
  • Added support for a close button to skippable non-linear ads
  • Support passing Widevine certificate in SourceDescription (documentation)
  • Postponed call to ad servers happen until a video play indication

Issues

  • Solved an issue where closing social sharing and recommended menus don't restore the previous playback state

2.16.0 (17/07/2017)

Features

  • Added support for muted autoplay on specific mobile devices

Improvements

  • Improved the player's ABR on mobile devices
  • Improved the player's mobile UI
  • Various improvements to the player's internal buffering architecture
  • Improved support for advertisement scheduling in live streams

Issues

  • Solved an issue where the last segment of certain VOD HLS streams was never fetched
  • Solved an issue where cues for embedded text tracks where not updated correctly
  • Solved an issue where calling player.stop() caused an error in Edge

2.15.0 (05/07/2017)

Features

Improvements

  • Various improvements to the player's internal playback architecture

2.14.0 (09/06/2017)

Issues

  • Solved an issue where track lists did not dispatch change events
  • Solved an issue where an error was thrown when calling stop()
  • Solved various minor issues with advertisements

2.13.0 (26/05/2017)

Features

Improvements

  • Various improvements to the player's internal playback architecture

Issues

  • Solved an issue where hovering the player in VR mode would sometimes trigger an error
  • Solved an issue where the player blocked playback on older versions of Chrome (<52)
  • Solved an issue where an edge case would stall HLS playback
  • Solved an issue where sideloaded text tracks where not displayed in fullscreen mode on iPad

2.12.1 (22/05/2017)

Features

  • Added the trackType, track and quality properties to the segmentnotfound event (documentation)

2.12.0 (11/05/2017)

Features

Improvements

  • Side-loaded text tracks are now lazy-loaded
  • Chromecast: various minor improvements

Issues

  • Solved an issue with autoplay and Fairplay content in Safari on macOS
  • Solved various minor issues

2.11.0 (27/04/2017)

Features

  • Added support for chapters on the seek bar
  • Added support for preview thumbnails on the seek bar
  • Added pre-integration support for KeyOS DRM (documentation)

Improvements

  • UI: the mouse cursor is now hidden while the mouse is resting still above the player
  • UI: the control bar is now hidden immediately when the mouse moves outside of the player

Issues

  • Solved an issue where picture-in-picture mode would not re-activate automatically in some scenarios
  • Solved an issue where subtitles would not appear in some edge cases
  • Solved an issue with Internet Explorer 10 support
  • Solved various minor issues with DRM protected playback on Internet Explorer and Edge
  • Solved various minor issues with advertisements

2.10.0 (12/04/2017)

Issues

  • Solved an issue where changing the audio track on a DASH source would sometimes freeze the player on Edge
  • Solved an issue where Airplay was sometimes marked as available when it really wasn't
  • Solved an issue with preloading while in fullscreen mode on iOS
  • Solved an issue where querying the played property lead to an error when no source was set
  • Solved various minor issues with advertisements

2.9.11 (07/04/2017)

Improvements

  • Improved player behavior for redirected manifests
  • Improved the player's playback behavior on Windows 7

Issues

  • Solved an issue where the Airplay overlay was not hidden correctly

2.9.10 (05/04/2017)

Improvements

  • Added support for SKD protocol for Fairplay license URLs
  • Improved the player to detect broken AAC frames and replace them with silent audio

Issues

  • Â Solved an issue where a DASH live stream with inconsistent segments timelines for audio and video would not start playing

Features

  • Added support for Airplay playback on Mac OS and iOS

2.9.9 (03/04/2017)

Improvements

  • Improved advertisement viewing experience
  • Improved Segment packaging for HLS streams

Issues

  • Solved some issues with the Player UI's menus
  • Solved an issue with setting the player's currentTime before ads were completely loaded
  • Solved an issue with cues not being updated correctly for sideloaded text tracks
  • Solved an issue with handling different Fairplay formats

2.9.8 (28/03/2017)

Improvements

  • Improved the player's behavior when there is a 404 error on segments.

2.9.7 (27/03/2017)

Issues

  • Solved some issues with the Player UI's menus

2.9.6 (27/03/2017)

Issues

  • Solved an issue that made the player pause when seeking.
  • Solved an issue with multiple identical content protection systems.

2.9.5 (23/03/2017)

Features

  • Fallback to track.label as title for audio tracks with no specific language.
  • Improved scrubbing behaviour.

Issues

  • Solved an issue with subtitle selection on Chromecast
  • Solved an issue with quality selection on Chromecast

2.9.4 (17/03/2017)

Features

  • Added compatibility with Chromecast Default Media Receiver.
  • Added support for setting the default selected sideloaded text track.

Issues

  • Solved an issue where text track labels were not shown.

2.9.3 (13/03/2017)

Issues

  • Solved an issue where an empty DRM description prevented DASH streams from being played correctly.
  • Solved an issue with text track cues that were not being dispatched correctly.

2.9.2 (10/03/2017)

Improvements

  • Improved outline behavior in the THEOplayer UI quality selection menu.

2.9.1 (09/03/2017)

Features

  • Added support for the poster property on Chromeless as well as UI players.
  • Added an optional poster property to SourceDescriptions.

Issues

  • Solved an issue where setting the preload property was not always correctly handled.
  • Solved an issue with the currentTime and duration displays in the THEOplayer UI.
  • Solved an issue where the fullscreen button was permanently hidden after casting to Chromecast.

2.9.0 (07/03/2017)

Features

  • Added a crossOrigin property to the player
  • Added support for Picture-in-Picture (PIP)
  • Added support for ad-block detection

Improvements

  • Improved detection and handling of gaps in MPEG-DASH streams

Issues

  • Solved an issue where the loadedmetadata event was not always correctly dispatched
  • Solved multiple issues with the ready- and playback state of the player
  • Solved an issue where it was no longer possible to specify global DRM configurations in a SourceDescription

2.8.6 (02/03/2017)

Issues

  • Solved an issue where the player would often have to resync when it had to rebuffer
  • Solved an issue with Chromecast text tracks

Improvements

  • Improved track synchronization behavior

2.8.5 (24/02/2017)

Issues

  • Solved an issue where content with persistent Playready licenses did not start playback correctly

2.8.4 (24/02/2017)

Issues

  • Solved an issue where the first cue of an SRT file was not parsed correctly

2.8.3 (24/02/2017)

Issues

  • Solved an issue where activequalitychanged event wasn't dispatched for HLS tracks
  • Solved an issue which prevented the progress bar UI from resetting
  • Solved an issue related to post-rolls
  • Solved an issue with the spinner icon on source change
  • Solved an issue with playback of periods that are no longer part of a stream

Improvements

  • Improved id3 support
  • Improved THEOplayer events
  • Improved buffering approach

2.8.2 (14/02/2017)

Issues

  • Solved an issue where the player would sometimes miscalculate the end time of stream
  • Solved an issue on IE/Edge where DRM protected content did not always start playback
  • Solved an issue where the player kept waiting for a seeking event that would never occur

Features

  • Improved mobile UI
  • Improved menu UI

2.8.1 (08/02/2017)

Issues

  • Solved an issue with the seekbar when using Google IMA
  • Solved an issue which didn't correctly dispatch events when using ads
  • Solved an issue with VuDRM

Features

  • Updated menu UI

Improvements

  • Improved error message for missing ContentProtection tag

2.8.0 (31/01/2017)

Issues

  • Solved an issue where the readystate was not always updated correctly when using ads

Features

  • Updated advertisement UI

2.7.2 (25/01/2017)

Issues

  • Solved an issue where DRM protected content did not start playback on Edge
  • Solved an issue where errors from native playback were not dispatched correctly
  • Solved an issue where embedded text track segments were not being downloaded in a live stream

Features

  • Added support for decryption of Clearkey-encrypted content through EME

2.7.1 (16/01/2017)

Features

  • Added support for playback of advertisements via Google-IMA

2.7.0 (16/01/2017)

Issues

  • Solved an issue where the UI was not reset correctly when changing a source
  • Solved an issue where the player stayed in an indefinite seeking state
  • Solved an issue where casting to a Chromecast device occasionally failed on startup

Features

  • Added support for playback of non-DASH media sources (e.g. regular MP4-files)
  • Updated the API to allow for per-source DRM configuration
  • Added support for playback of advertisements without requiring a main source
  • Added a ‘targetqualitychanged’ event to Audio
  • and VideoTrack objects that is triggered when the target Quality of that track is set
  • Added an ‘activequalitychanged’ event to Audio
  • and VideoTrack objects that is triggered when the active quality of that track changes

2.6.1 (16/01/2016)

Issues

  • Solved an issue where text tracks where not switched correctly when changing the playback context e.g. to ChromeCast
  • Solved an issue where license errors were not handled correctly and lead to a nonsense trace in console

2.6.0 (26/12/2016)

Issues

  • Solved an issue where ‘segmentnotfound’ events and errors were thrown multiple times for the same segment
  • Solved an issue where framerate was not exposed correctly

Features

  • Added support for EventStream events
  • Added support for DVB Subs text tracks
  • Added support for casting via ChromeCast
  • Added support for scheduling and playback of VAST and VMAP advertisement files
  • Added support for scheduling and playback of custom advertisements

2.5.10 (22/12/2016)

Issues

  • Solved an issue where the player stopped playback at the end of the shortest track instead of playing all available content
  • Solved an issue where a timeline gap at the end of a stream caused the player to not finish playback of a Period
  • Solved an issue where ‘addtrack’ and ‘removetrack’ events were dispatched twice

Improvements

  • Improved the player to be able to handle broken segments more robustly
  • Various improvements to player’s internal architecture

2.5.9 (20/12/2016)

Issues

  • Solved an issue where dispatching a seeking event too soon caused the player to remain in an eternal seeking state

2.5.8 (19/12/2016)

Issues

  • Solved an issue where default PSSH information was not parsed from manifests correctly
  • Solved an issue where the player did not start playback when detecting a gap in a stream
  • Solved an issue where resetting the player would not always clean up the player’s playing state completely
  • Solved an issue where the player would detect a gap in a stream that wasn’t actually there
  • Solved an issue where seeking the player ahead one frame at a time was not working

Improvements

  • Various improvements to the internal seeking behavior of the player

2.5.7 (09/12/2016)

Features

  • Added support for Advanced DRM Integration

Issues

  • Solved an issue where the last segment in a stream kept being downloaded endlessly
  • Solved an issue where ‘seeked’ events where being dispatched too early
  • Solved an issue where the duration, start
  • and endtimes were being miscalculated for segments of SegmentTemplates with no explicit SegmentTimeline
  • Solved an issue where a SourceBuffer was not initialized with the right codecs

Improvements

  • Various minor improvements to the player codebase
  • Various improvements to the player’s UI stylesheets
  • Various improvements to the player’s API via SourceDescriptions (Section 4)

2.5.6 (01/12/2016)

Features

  • Added support for the new Latens Titanium v2.5 error response format
  • Added a ‘source’ property to the player API which allows users to get and set the current SourceDescription. This deprecates the older player.setSource() method.

Issues

  • Solved an issue where segment timestamps in a multi-period manifest were not always calculated correctly

Improvements

  • Improved the player to handle some errors caused by invalid manifests more gracefully
  • Improved the estimate strategy in timeline searching algorithms
  • Various improvements to the internal DRM structure

2.5.5 (21/11/2016)

Issues

  • Solved an issue where a bug in the transition from dynamic to static behavior caused an endless loop. This is turn caused webpages that contained a malfunctioning player to freeze

2.5.4 (18/11/2016)

Issues

  • Solved an issue where the complexity of algorithms that handle manifest updates put a drain on resources in Chrome, which caused the browser to drop video frames. This in turn caused stuttering playback

Improvements

  • Various improvements to the computational complexity of algorithms in the player
  • Improved player behavior for disabling and re-enabling audio and video tracks

2.5.3 (07/11/2016)

Resolved Issues

  • Solved an issue where a segment timeline for dynamic manifests without explicit timeline information was not constructed correctly

2.5.2 (04/11/2016)

Resolved Issues

  • Solved an issue where the player would not reach the playing state after entering a waiting state twice, but leaving it only once
  • Solved an issue where the player would crash when setting its currentTime before the manifest finished loading
  • Solved an issue where manually switching an audio or video quality would sometimes leak an error to the console
  • Solved an issue where the activeQuality property of an audio or video track would always be undefined
  • Solved an issue where a gap at the start of a stream would sometimes prevent the player from reaching the ‘playing’ state

Improvements

  • Improved the player’s track switching algorithm
  • Improved the player’s manual quality switching algorithm

2.5.1 (26/10/2016)

Improvements

  • Improved the player to optimally handle 64-bit precision timestamps in manifests

2.5.0 (24/10/2016)

Features

  • Added support for inband (‘emsg’) events

2.4.5 (21/10/2016)

Resolved Issues

  • Solved an issue where the player would stall indefinitely when a large gap would occur in audio or video data

Improvements

  • Improved the player’s ability to detect and handle data gaps in audio or video tracks
  • Improved the player’s synchronization algorithm

2.4.4 (06/10/2016)

Resolved issues

  • Solved an issue where resetting the player would cause IE11 on Windows 8.1 to crash
  • Solved an issue where an MPD error would cause an unhandled error to leak to the console

2.4.3 (28/09/2016)

Resolved issues

  • Solved an issue where a video Quality’s framerate was not exposed correctly

Improvements

  • Improved the player to detect and handle overlapping segments in a dynamic stream

2.4.2 (22/09/2016)

Resolved issues

  • Solved an issue with indexes for SegmentList-based VOD content that prevented the content from being played
  • Solved an issue where the enabled state of an audio track was not correctly visualized initially
  • Solved an issue where text tracks that ended before audio or video tracks would prevent seeking beyond the end of that text track
  • Solved an issue where protected content would keep the player from reaching the ‘loadedmetadata’ state on Edge
  • Solved an issue where the player would leak an error to the console when a DRM problem occurred and ongoing license requests were not cancelled
  • Solved an issue where the player’s duration was not reset to NaN after resetting the source

Improvements

  • Improved the player to detect and handle missing frames in audio and video data

2.4.1 (16/09/2016)

Resolved issues

  • Solved an issue where the initialization of persistent DRM failed because two initialization requests were ran in parallel
  • Solved an issue where the active video track would be unnecessarily synced when switching the active audio track

2.4.0 (08/09/2016)

Features

  • Added support for playback of multi-period manifests
  • Added support for the WebVTT text track format
  • Added support for side-loaded text tracks
  • Added support for video tracks
  • Added support for manual quality or rendition switching and inspection of audio and video tracks

Resolved issues

  • Solved an issue with buffering of embedded text tracks that prevented subtitles from being rendered
  • Fixed some typing errors throughout the API documentation
  • Solved an issue where a BaseURL pointing to ‘./’ was not being resolved correctly
  • Solved an issue where multiple occurrences of the same parameter in an URL template were not being resolved

2.3.4 (02/09/2016)

Resolved issues

  • Resolved an issue where a call to stop, followed by a call to play, would cause an unrecoverable DRM error

Improvements

  • Various improvements to the player’s UI
  • Various improvements to the player’s internal structure

2.3.3 (31/08/2016)

Resolved issues

  • Resolved an issue where the player was not able to switch content-protected audio tracks
  • Resolved an issue with the player’s volume
  • Resolved an issue where the player did not use the updated time at which a MPDs was last fetched
  • Resolved an issue where the player stuttered due to decoding delay of DRM streams
  • Resolved an issue where event listeners for external events were not always attached correctly

Improvements

  • Improved the player to ignore unplayable tracks instead of throwing an error
  • Improved various aspects of the player’s internal code
  • Improved the player’s synchronization algorithm
  • Improved the player to handle transit between internal and external events

2.3.2 (17/08/2016)

Resolved issues

  • Resolved an issue where the player misbehaved when its currentTime was set to a value outside of its seekable range
  • Resolved an issue where track events were not being dispatched correctly
  • Resolved an issue where the end of some streams was not detected
  • Resolved an issue where the player stalled indefinitely for auto-updating SegmentTemplate streams
  • Resolved an issue where the currentTime of a HTMLMediaElement wasn’t being updated on Edge
  • Resolved an issue where streams ended too early on FireFox

Improvements

  • Improved the player to detect between which codecs can be switched during Adaptive Bitrate Streaming
  • Improved the player to signal representation changes when they occur visually instead of when they start downloading
  • Improved the player to detect unsupported platforms to prevent bad User Experience on those platforms
  • Improved the player to retry downloading failed manifests
  • on multiple locations
  • when possible
  • Improved the player’s error handling and made license errors more descriptive

Resolved issues

  • Resolved an issue where track lists did not dispatch ‘removetrack’ events when resetting the player
  • Resolved an issue where new segments’ numbers were wrongfully assigned when updating the manifest
  • Resolved an issue where the player’s error property was not set when dispatching an error event
  • Resolved an issue where the player allowed a user to seek outside of its seekable range
  • Resolved an issue where a period’s duration was not correctly detected

2.3.1 (02/08/2016)

Improvements

  • Added support to detect and filter representations that can’t be played by the MediaSource environment
  • Improved the player’s behavior when switching between two tracks
  • Improved the player’s setCurrentTime functionality
  • Improved the player’s use of the presentationTimeOffset attribute

2.3.0 (20/07/2016)

Features

  • Added support for the publishTime attribute in media presentation descriptions
  • Added support for playback on Chrome 52 on Android
  • Added support for saving and restoring state of volume and muted properties over multiple sessions
  • Added support for location elements in manifests
  • Added the currentProgramDateTime property to the player to indicate the player’s date time relative to a manifest’s publish time

Resolved issues

  • Resolved an issue where the player stalled indefinitely upon switching representations
  • Resolved an issue causing the player to go in a waiting state when its ready state is higher than HAVE_CURRENT_DATA
  • Resolved an issue with asynchronous creation of audio tracks
  • Resolved an issue where the player stalled indefinitely after playing 3 segments
  • Resolved an issue for SegmentTimeline segments with a repeat count equal to -1
  • Resolved an issue where the player did not dispatch a waiting event when starting playback of a stream
  • Resolved an issue with BaseURL elements that point to root

Improvements

  • Improved the internal architecture for track-based playback
  • Improved support for default attributes in multiple levels of a manifest’s segment info hierarchy
  • Various small improvements in the player’s seeking behaviour

2.2.1 (16/06/2016)

Features

  • Added support for the MPEG-DASH BaseURL element to the player
  • Reworked the players play() and pause() flow

Resolved issues

  • Resolved an issue with UI display order on Firefox
  • Resolved an issue with UI handling durationchange events and displaying an incorrect duration
  • Resolved an issue with UI not displaying all buffered ranges correctly
  • Resolved an issue where the internal duration was not correctly reset after stopping the player
  • Resolved an issue in correctly resetting of media elements when a new data source is loaded
  • Resolved an issue with playbackRate of the player being reset to 1 when loading a new source
  • Resolved an issue with the player occasionally dispatching a timeupdate event despite being in a waiting state
  • Resolved an issue with the player dispatching a playing event before having a data source loaded
  • Resolved an issue with the player attempting to seek before having a data source loaded
  • Resolved an issue with the player getting in an eternal waiting state while buffering data

Improvements

  • Changed the readyState of the player and all internal components waiting for readyState to being dependent on DRM being complete
  • Further optimized the build pipeline of the player
  • Improved event flow related to subtitle tracks
  • Improved the players support for the MPEG-DASH SegmentTemplate element
  • Various small improvements in the flow and stability of the player

2.2.0 (30/05/2016)

Features

  • The player now supports loading, parsing and rendering of TTML (Timed Text Markup Language) subtitles. More specifically it supports the Core Presentation Profile of the TTML specification
  • The player now has integration with a UI component

Resolved Issues

  • Resolved an issue that caused the player to repeatedly redownload a manifest file
  • Resolved an issue in correctly calculating the segment numbers in some manifest files

Improvements

  • Optimized the build pipeline of the player
  • Added a build target with build in user interface
  • Further optimized the calculation of time related ranges
  • Various small improvements in the flow and stability of the player

2.1.5 (17/05/2016)

Resolved Issues

  • Resolved an issue in correctly determining the end of stream and end of buffer
  • Resolved an issue in sometimes determining the duration of Period elements

Improvements

  • Optimized the build pipeline of the player
  • Added the videoWidth, videoHeight and error properties to the player
  • Improved the calculation of buffered, played, seekable properties
  • Various small improvements in the flow and stability of the player

2.1.4 (02/05/2016)

Resolved Issues

  • Resolved an issue in correctly determining that the end time of a media element had changed
  • Resolved an edge case that caused the player to repeatedly download the same segment
  • Resolved detecting that the player no longer was in sync with the available data in the manifest

Improvements

  • Improved buffer handling of the player
  • Various small improvements in the flow and stability of the player

2.1.3 (16/04/2016)

Resolved Issues

  • Resolved an issue that caused the player to not play when changing the source of the player while autoplay is enabled
  • Resolved an issue in correctly detecting the end of stream of the player
  • Resolved an issue in calculating the correct duration of some streams
  • Optimized the parsing of MPEG-DASH documents and removed blocking code

Improvements

  • Improved the memory usage of the MPEG-DASH document parser
  • Added missing documentation about the date attribute of some events that the player dispatches
  • Various small improvements in the flow and stability of the player

2.1.2 (29/03/2016)

Features

  • A new buffering algorithm has been added to the player
  • Added the ‘played’ TimeRanges attribute to the player to indicate the played range

Resolved Issues

  • Resolved an issue where individual tracks started playback before all tracks are DRM decrypted
  • Resolved an issue in determining the content type of a representation for some manifests
  • Resolved an issue in correctly calculating the duration of time ranges
  • Resolved an issue where the player could go in a stalling state

Improvements

  • Improved the synchronization of the individual tracks
  • Ensured that the player never goes in a playing state before the ‘canplay’ event has been thrown by the player
  • Improved the memory handling of the player
  • Added more detailed documentation about the various events that the player dispatches
  • Various small improvements in the flow and stability of the player

2.1.1 (14/03/2016)

Resolved Issues

  • Resolved a reference error in relation to MSMediaKeys.isTypeSupported on Microsoft Edge
  • Resolved a reference error that occurred when reporting Titanium Widevine error messages

Improvements

  • Removed unnecessary debug messages being outputted to console in release versions
  • Various small improvements in the flow and stability of the player

2.1.0 (04/03/2016)

Resolved Issues

  • Resolved DRM errors not being thrown while the player is in some specific states
  • Resolved an error in ABR calculations while the player is in a waiting state

Improvements

  • Optimized the error handling of specific errors that previously leaked their error message to console
  • Improved the error event being thrown twice for the some errors
  • Improved the MPEG-DASH manifest parser to detect more defects in the manifests
  • Improved the segmentnotfound event to provide information on the number of retries
  • Various small improvements in the flow and stability of the player

2.0.2 (26/02/2016)

Features

  • Content Protection error and success reporting and messages have been improved
  • contentprotectionerror – event thrown when an error occurs during content protection
  • contentprotectionsuccess – event thrown after content protection steps have been finalized and playback should start
  • mediaencryptionlicenseobtained – event has been removed from the player

Resolved Issues

  • Resolved an issue in calculating the edges of the seekable range in closed, static content
  • Throw a durationchange event when the duration of a media asset changes during playback

Improvements

  • Various small improvements in the flow and stability of the player

2.0.1 (12/02/2016)

Resolved Issues

  • Resolved an inaccuracy in the seekable ranges of the player
  • The end time of the seekable range during playback of an open (type = ‘dynamic’) asset is now three target durations away from the loadable range/end of the data in the stream
  • Ensure that when the currentTime of the player is modified, the new value falls inside of the seekable range
  • Resolved an issue in open (type = ‘dynamic’) assets that caused the manifest to no longer to be reloaded

Improvements

  • Various small improvements in the flow and stability of the player
  • Updated the DRM error messages to more clearly represent the cause of the error

2.0.0 (05/02/2016)

Features

  • Support for the Latens Titanium DRM system has been added for the IE11 and Edge browsers for the Windows 8, 8.1 and 10 platforms

Resolved Issues

  • Resolved a TypeError related to the code obfuscation occurring specifically on Edge causing the player not to start playback
  • Resolved an issue in cleaning up assets while unloading the player or changing source

Improvements

  • Various small improvements in the flow and stability of the player

2.0.0-BETA.0 (03/12/2015)

Features

  • Added versioning support in THEOplayer.version
  • Support for the Latens Titanium DRM system has been added for the Chrome web browser
  • Updating the src attribute of the player now unloads the old and loads the new value of the attribute
  • Calling the stop method on the player now stops playback and destroys the player
  • Support for dynamic streams with a continually growing DVR window
  • Support for dynamic streams that transition to a static stream has been added to the player

Resolved Issues

  • When a 404 error occurs during the download of a media segment, the player will now try again after a short delay
  • Resolved a time and rounding issue that caused the player not to start playback of the specified asset
  • The player now recovers from situations where its playback buffer is not overlapping with the timeline of a dynamic stream
  • Resolved an issue on IE11 where media keys got attached to the media element while the media element was in an invalid readyState 0, HAVE_NOTHING
  • Clean up old media keys when stopping the player or when setting a new source on the player

Improvements

  • When present, PSSH headers now get read from the manifest in order to kick start the DRM flow
  • Support for the presentationTimeOffset MPEG-DASH MPD attribute has been added to the player
  • Various small improvements in the flow and stability of the player