Detalhes do pacote

shaka-player

shaka-project757.4kApache-2.04.15.5

DASH/EME video player library

readme (leia-me)

Shaka Player

Shaka Player is an open-source JavaScript library for adaptive media. It plays adaptive media formats (such as DASH, HLS and MSS) in a browser, without using plugins or Flash. Instead, Shaka Player uses the open web standards MediaSource Extensions and Encrypted Media Extensions.

Shaka Player also supports offline storage and playback of media using IndexedDB. Content can be stored on any browser. Storage of licenses depends on browser support.

Our main goal is to make it as easy as possible to stream adaptive bitrate video and audio using modern browser technologies. We try to keep the library light, simple, and free from third-party dependencies. Everything you need to build and deploy is in the sources.

For details on what's coming next, see our development roadmap.

Maintained branches

See maintained-branches.md for the up-to-date list of maintained branches of Shaka Player.

Platform and browser support matrix

Browser Windows Mac Linux Android iOS >= 9 iOS >= 17.1 iPadOS >= 13 ChromeOS Other
Chrome Y Y Y Y Native Native Native Y -
Firefox Y Y Y untested⁵ Native Native Native - -
Edge Y - - - - - - - -
Edge Chromium Y Y Y untested⁵ Native Native Native - -
IE N - - - - - - - -
Safari - Y - - Native Y Y - -
Opera Y Y Y untested⁵ Native - - - -
Chromecast² - - - - - - - - Y
Tizen TV³ - - - - - - - - Y
WebOS⁶ - - - - - - - - Y
Hisense⁷ - - - - - - - - Y
Vizio⁷ - - - - - - - - Y
Xbox One - - - - - - - - Y
Playstation 4⁷ - - - - - - - - Y
Playstation 5⁷ - - - - - - - - Y

NOTES:

  • ²: The latest stable Chromecast firmware is tested. Both sender and receiver can be implemented with Shaka Player.
  • ³: Tizen 2017 model is actively tested and supported by the Shaka Player team. Tizen 2016 model is community-supported and untested by us.
  • ⁵: These are expected to work, but are not actively tested by the Shaka Player team.
  • ⁶: These are expected to work, but are community-supported and untested by us.
  • ⁷: These are expected to work, but are community-supported and untested by us.

NOTES for iOS and iPadOS:

  • We support iOS 9+ through Apple's native HLS player. We provide the same top-level API, but we just set the video's src element to the manifest/media. So we are dependent on the browser supporting the manifests.
  • Since iPadOS 13 MediaSource Extensions is supported
  • Since iPadOS 17 and iOS 17.1 ManagedMediaSource Extensions is supported

Manifest format support matrix

Format Video On-Demand Live Event In-Progress Recording
DASH Y Y - Y
HLS Y Y Y -
MSS Y - - -

You can also create a manifest parser plugin to support custom manifest formats.

DASH features

DASH features supported:

  • VOD, Live, and In-Progress Recordings (dynamic VOD content)
  • MPD@timeShiftBufferDepth for seeking backward in Live streams
  • Multi-period content (static and dynamic)
  • Xlink elements (actuate=onLoad only, resolve-to-zero, fallback content)
  • All forms of segment index info: SegmentBase@indexRange, SegmentTimeline, SegmentTemplate@duration, SegmentTemplate@index, SegmentList
  • Multi-codec/multi-container manifests (we will negotiate support with the browser and choose the best ones)
  • Encrypted content (including custom ContentProtection schemas, PSSH in the manifest)
  • Key rotation
  • Trick mode tracks
  • WebVTT and TTML
  • CEA-608/708 captions
  • Multi-codec variants (on platforms with changeType support)
  • MPD chaining
  • MPD Patch updates for SegmentTemplate with $Number$, SegmentTimeline with $Number$ and SegmentTimeline with $Time$

DASH features not supported:

HLS features

HLS features supported:

  • VOD, Live, and Event types
  • Low-latency streaming with partial segments, preload hints, delta updates and blocking playlist reload
  • Discontinuity
  • ISO-BMFF / MP4 / CMAF support
  • MPEG-2 TS support
  • WebVTT and TTML
  • CEA-608/708 captions
  • Encrypted content with PlayReady, Widevine and WisePlay
  • Encrypted content with FairPlay (Safari on macOS and iOS only)
  • AES-128, AES-256 and AES-256-CTR support on browsers with Web Crypto API support
  • SAMPLE-AES and SAMPLE-AES-CTR (identity) support on browsers with ClearKey support
  • Key rotation
  • Raw AAC, MP3, AC-3 and EC-3 (without an MP4 container)
  • I-frame-only playlists (for trick play and thumbnails)
  • EXT-X-IMAGE-STREAM-INF for thumbnails

  • Interstitials
  • Container change during the playback (eg: MP4 to TS, or AAC to TS)

HLS features not supported:

  • X-SNAP attribute in interstitials
<summary>

Supported HLS tags

</summary> For details on the HLS format and these tags' meanings, see https://datatracker.ietf.org/doc/html/draft-pantos-hls-rfc8216bis

Multivariant Playlist tags

- #EXT-X-STREAM-INF:<attribute-list> <URI> - #EXT-X-MEDIA:<attribute-list> - #EXT-X-IMAGE-STREAM-INF:<attribute-list> - #EXT-X-I-FRAME-STREAM-INF:<attribute-list> - #EXT-X-SESSION-DATA:<attribute-list> - #EXT-X-SESSION-KEY:<attribute-list> EME Key-System selection and preloading - #EXT-X-START:TIME-OFFSET=<n> - #EXT-X-CONTENT-STEERING:<attribute-list> Content Steering - #EXT-X-DEFINE:<attribute-list> Variable Substitution (NAME,VALUE,QUERYPARAM attributes)

Media Playlist tags

- #EXTM3U - #EXTINF:<duration>,[<title>] - #EXT-X-PLAYLIST-TYPE:<type - #EXT-X-ENDLIST - #EXT-X-MEDIA-SEQUENCE=<n> - #EXT-X-TARGETDURATION=<n> - #EXT-X-DISCONTINUITY - #EXT-X-DISCONTINUITY-SEQUENCE=<n> - #EXT-X-BYTERANGE=<n>[@<o>] - #EXT-X-MAP:<attribute-list> - #EXT-X-KEY:<attribute-list> (KEYFORMAT="identity",METHOD=SAMPLE-AES is only supports with MP4 segments) - #EXT-X-PROGRAM-DATE-TIME:<attribute-list> - #EXT-X-START:TIME-OFFSET=<n> - #EXT-X-SERVER-CONTROL:<attribute-list> - #EXT-X-PART-INF:PART-TARGET=<n> - #EXT-X-PART:<attribute-list> - #EXT-X-SKIP:<attribute-list> Delta Playlists - #EXT-X-DATERANGE:<attribute-list> Metadata - #EXT-X-DEFINE:<attribute-list> Variable Import and Substitution (NAME,VALUE,IMPORT,QUERYPARAM attributes) - #EXT-X-GAP - #EXT-X-PRELOAD-HINT:<attribute-list> - #EXT-X-BITRATE

MPEG-5 Part2 LCEVC Support

Only supported on browsers with Media Source Extensions SourceBuffer support

MSS features

MSS features supported:

  • VOD
  • AAC and H.264
  • Encrypted content (PlayReady)
  • TTML/DFXP
  • Only supported with codem-isoboxer

MSS features not supported:

  • Live

DRM support matrix

Browser Widevine PlayReady FairPlay WisePlay ClearKey⁶
Chrome¹ Y - - - Y
Firefox² Y - - - Y
Edge³ - Y - - -
Edge Chromium Y Y - - Y
Safari - - Y - -
Opera Y - - - Y
Chromecast Y Y - - Y
Tizen TV Y Y - - Y
WebOS⁷ untested⁷ untested⁷ - - untested⁷
Hisense⁷ untested⁷ untested⁷ - - untested⁷
Vizio⁷ untested⁷ untested⁷ - - untested⁷
Xbox One - Y - - -
Playstation 4⁷ - untested⁷ - - untested⁷
Playstation 5⁷ - untested⁷ - - untested⁷
Huawei⁷ - - - untested⁷ untested⁷

Other DRM systems should work out of the box if they are interoperable and compliant to the EME spec.

NOTES:

  • ¹: Only official Chrome builds contain the Widevine CDM. Chromium built from source does not support DRM.
  • ²: DRM must be enabled by the user. The first time a Firefox user visits a site with encrypted media, the user will be prompted to enable DRM.
  • ³: PlayReady in Edge does not seem to work on a VM or over Remote Desktop.
  • ⁶: ClearKey is a useful tool for debugging, and does not provide actual content security.
  • ⁷: These are expected to work, but are community-supported and untested by us.
Manifest Widevine PlayReady FairPlay WisePlay ClearKey
DASH Y Y Y Y Y
HLS Y Y Y ¹ Y Y
MSS - Y - - -

NOTES:

  • ¹: By default, FairPlay is handled using Apple's native HLS player, when on Safari. We do support FairPlay through MSE/EME, however. See the streaming.useNativeHlsForFairPlay configuration value.

Media container and subtitle support

Shaka Player supports:

  • ISO-BMFF / CMAF / MP4
    • Depends on browser support for the container via MediaSource
    • Can parse "sidx" box for DASH's SegmentBase@indexRange and SegmentTemplate@index
    • Can find and parse "tfdt" box to find segment start time in HLS
    • For MSS, codem-isoboxer v0.3.7+ is required
  • WebM
    • Depends on browser support for the container via MediaSource
    • Can parse cueing data elements for DASH's SegmentBase@indexRange and SegmentTemplate@index
    • Not supported in HLS
  • MPEG-2 TS
    • Can be played on any browser which supports MP4
    • Can find and parse timestamps to find segment start time in HLS
  • WebVTT
    • Supported in both text form and embedded in MP4
  • TTML
    • Supported in both XML form and embedded in MP4
  • CEA-608
    • Supported embedded in MP4 and TS
  • CEA-708
    • Supported embedded in MP4 and TS
  • Raw AAC
    • Supported in raw AAC container and transmuxing to AAC in MP4 container (depends on browser support via MediaSource).
  • Raw MP3
    • Supported in raw MP3 container and transmuxing to MP3 in MP4 container (depends on browser support via MediaSource).
  • Raw AC-3
    • Supported in raw AC-3 container and transmuxing to AC-3 in MP4 container (depends on browser support via MediaSource).
  • Raw EC-3
    • Supported in raw EC-3 container and transmuxing to EC-3 in MP4 container (depends on browser support via MediaSource).
  • SubRip (SRT)
    • UTF-8 encoding only
  • LyRiCs (LRC)
    • UTF-8 encoding only
  • SubStation Alpha (SSA, ASS)
    • UTF-8 encoding only
  • SubViewer (SBV)
    • UTF-8 encoding only

Subtitles are rendered by the browser by default. Applications can create a text display plugin for customer rendering to go beyond browser-supported attributes.

Transmuxer support

Shaka Player supports:

  • Raw AAC to AAC in MP4
  • Raw MP3 to MP3 in MP4
  • Raw AC-3 to AC-3 in MP4
  • Raw EC-3 to EC-3 in MP4
  • AAC in MPEG-2 TS to AAC in MP4
  • AC-3 in MPEG-2 TS to AC-3 in MP4
  • EC-3 in MPEG-2 TS to EC-3 in MP4
  • MP3 in MPEG-2 TS to MP3 in MP4
  • MP3 in MPEG-2 TS to raw MP3
  • Opus in MPEG-2 TS to MP3 in MP4
  • H.264 in MPEG-2 TS to H.264 in MP4
  • H.265 in MPEG-2 TS to H.265 in MP4
  • Muxed content in MPEG-2 TS with the previous codecs

Thumbnails support

Shaka Player supports:

  • Internal DASH thumbnails. Using DASH-IF IOP Image Adaptation Set
  • Internal HLS thumbnails. Using HLS Image Media Playlist
  • Internal HLS thumbnails. Using I-frame-only playlists with mjpg codec
  • External WebVTT with images/sprites (only for VoD)

Monetization with Ads

Shaka Player supports:

  • IMA SDK for Client-Side Ad Insertion
  • IMA DAI SDK for Server-Side Ad Insertion
  • AWS MediaTailor for Client-Side
  • AWS MediaTailor for Server-Side
  • AWS MediaTailor overlays
  • HLS interstitials
  • DASH Media Presentation Insertion (MPD alternate)
  • Custom Interstitials
  • Basic support of VAST and VMAP without IMA (playback without tracking)

Content Steering support

Shaka Player supports Content Steering (v1) in DASH and HLS.

Content Steering features supported:

  • TTL, if missing, the default value is 300 seconds.
  • RELOAD-URI, if missing we use the url provided in the manifest as fallback.
  • PATHWAY-PRIORITY only HOST replacement

Content Steering features not supported:

  • PATHWAY-CLONES other replacements than HOST.

VR support

Shaka Player supports VR when:

  • Content is automatically treated as VR if it fits the following criteria:
    • HLS or DASH manifest
    • fMP4 segments
    • Init segment contains prji and hfov boxes
  • Or, if it is manually enabled via the UI config.

VR modes supported:

  • Equirectangular projection with 360 degrees of horizontal field of view.
  • Half equirectangular projection with 180 degrees of horizontal field of view.
  • Cubemap projection with 360 degrees of horizontal field of view.

NOTES:

  • VR is only supported for clear streams or HLS-AES stream. DRM prevents access to the video pixels for transformation.

Builds

Shaka currently provides the following versions:

  • Complete build with UI (shaka-player.ui.js)
  • Complete build without UI (shaka-player.compiled.js)
  • DASH build without UI, Cast and Offline (shaka-player.dash.js)
  • HLS build without UI, Cast and Offline (shaka-player.hls.js)

Documentation & Important Links

FAQ

For general help and before filing any bugs, please read the FAQ.

Contributing

If you have improvements or fixes, we would love to have your contributions. Please read CONTRIBUTING.md for more information on the process we would like contributors to follow.

Framework Integrations

The Shaka team doesn't have the bandwidth and experience to provide guidance and support for integrating Shaka Player with specific frameworks, but some of our users have successfully done so and created tutorials to help other beginners.

Shaka + ReactJS Library

Shaka + ReactJS integrations:

Shaka + Next.js integration:

Shaka + Vue.js integrations:

Shaka + Nuxt.js integration:

Shaka + video.js integration:

Shaka + Angular integration:

If you have published Shaka Integration code/tutorials, please feel free to submit PRs to add them to this list, we will gladly approve!

changelog (log de mudanças)

Changelog

4.15.5 (2025-06-27)

Bug Fixes

  • Another Sony Bravia TV Playready Failure (#8791) (3f6aaa3)
  • Demo: Assign valid regex to asset name input (#8815) (075ee5d)
  • Fix Apple Vision Pro (Vision OS) detection and other VR devices detection (#8805) (c9e878e)
  • Fix end-of-stream detection for VOD (#8813) (f376d91)
  • Fix reloadTextStream function when using text with init segments (#8811) (a71277a)
  • HLS: Fix presentation delay when there are not enough segments (#8793) (2f1c0ce)
  • HLS: Fix resync issues on Safari (#8808) (d27fc6c)
  • HLS: Reset PTS/DTS reference at discontinuities when using TS (#8794) (bc087d3)
  • UI: Fix volume slider control is not accessible by keyboard (#8809) (d92b954)
  • UI: Not show thumbnails over ad periods (#8800) (e010290)
  • UI: Prevent override box-sizing style on range elements (#8810) (9b6491c)

4.15.4 (2025-06-23)

Bug Fixes

  • Avoid throw BUFFER_READ_OUT_OF_BOUNDS when not necessary (#8753) (9931bea)
  • Close segment index when calling to unloadTextStream (#8754) (72fd217)
  • DASH: Fix L3D streams (with k parameter) without $SubNumber$ (#8770) (105c800)
  • DASH: Use the correct Representation ID for Uri substitution of media segments (#8760) (6e8f434)
  • Demo: Fix keep custom config on page reload (#8776) (5c5efb5)
  • Demo: Fix keep custom config on page reload (#8777) (7d67366)
  • Don't cancel trick play near to live edge if rate is less than 1 (#8772) (5d65576)
  • Fix 4k stream support within browser env on Tizen (#8764) (3eecf28)
  • HLS: mediaSequenceToStartTime isn't maintained correctly for AUDIO manifest (#8784) (f8712a4)
  • Reset text visibility on unload (#8775) (5e0c0e8)
  • UI: Disable keyboard controls when there is not asset loaded (#8766) (64bbde5)
  • UI: Fix fullscreen doesn’t work on iPad (Edge/Chrome) (#8757) (5dbac62)
  • UI: Fix PageDown and PageUp shortcuts (#8769) (49b86ff)
  • UI: Fix unhandled rejection on remote button (#8778) (bf2f22c)
  • UI: Make the overflow menu visually smoother (#8773) (14f93ba)
  • UI: The playback time displayed in the seek bar is different from currentTime when click (#8758) (11f0b1f)

4.15.3 (2025-06-16)

Bug Fixes

  • Allow change NativeTextDisplayer on runtime (#8735) (51cc07d)
  • Avoid reset or changeType in MSE when not necessary (#8744) (a5c5135)
  • CEA: INVALID_MP4_CEA error being thrown when shouldn't be (#8748) (4a231ff)
  • Fix Apple Vision Pro detection (#8732) (d7a1293)
  • HLS: Fix APAC detection (#8724) (7708fb2)
  • HLS: Fix reset media source when using muxed content (#8738) (d024e30)
  • HLS: Fix switching between muxed and alternate audios (#8741) (381505c)
  • UI: Fix 3D detection (#8725) (a693fb3)
  • UI: Fix detection of some VR formats (#8727) (26ff3e2)
  • UI: Only show replay button when there is a duration in the media element (#8740) (ae61481)
  • UI: Resize overflow and settings menus when necessary (#8742) (052ce48)
  • UI: Update play button state when the player is loaded (#8739) (ba73b80)

Performance Improvements

  • Only parse spatialVideoInfo for video segments (#8726) (0fba2b6)

4.15.2 (2025-06-09)

Bug Fixes

  • Don't sort TS samples (#8708) (656195b)
  • Fix bad assert on DeviceFactory (#8705) (b5246dc)
  • Fix chopped playback in some DASH multiperiod streams (#8717) (23830dd)
  • NativeTextDisplayer.remove() not following the spec (#8714) (0d3a1c8)
  • Only change appendWindowStart and appendWindowEnd when necessary (#8716) (82ce1c9)
  • UI: Don't show loop button for live streams (#8700) (202dc3d)
  • UI: Only enable enableFullscreenOnRotation and forceLandscapeOnFullscreen on mobile (#8701) (d2af28c)

Performance Improvements

  • net: Do not parse headers twice in XHR plugin (#8710) (af085dd)
  • Simplify getAudioTracks internally when using src= (#8703) (1181ce5)

4.15.1 (2025-06-05)

Bug Fixes

  • Ads: Fix interstitials when not using multiple media elements (#8681) (eb957e1)
  • Fix PlayReady support on Chromium Windows (#8683) (1fdf939)
  • Fix ts parser when using B-frames (#8696) (ef6300a)
  • UI: Fix missing style for shaka-tooltip-status (#8699) (1573a73)
  • UI: Handle video duration greater than 24 hours (#8692) (92338c5)
  • UI: Hide player labels when More Settings menu is open (#8694) (3d70461)
  • UI: Hide settings menus when the user changes the current time (#8693) (2ed405f)

Performance Improvements

4.15.0 (2025-06-03)

Features

  • ABR: Add abr.removeLatencyFromFirstPacketTime config (#8446) (a8bc7e2)
  • Add additional codec & channel count configs to Adaptation Set Criteria (#8597) (ce830d7)
  • Add backToLiveWhenOutsideOfLiveWindow config (#8575) (9406905)
  • Add Device API (#8210) (970d775)
  • Add getChaptersAsync method (#8541) (ba56bae)
  • Add isVideoOnly method (#8641) (f86245c)
  • Add more info on src= tracks when the browser support it (#8299) (9021bd8)
  • Add more info on src= tracks when the browser support it (#8302) (77a3f56)
  • Add oldEncrypted and newEncrypted to boundarycrossed event (#8421) (fe332bd)
  • Add queue manager (#8649) (3daeac6)
  • Add useTrickPlayTrackIfAvailable method (#8594) (ed69267)
  • Added MetadataAdded event (#8282) (f3a8113)
  • Ads: Add allowStartInMiddleOfInterstitial config (#8289) (c012b9c)
  • Ads: Support latest spec of background in DASH overlays (#8556) (91034c4)
  • Ads: Update DASH overlay implementation (#8503) (3fab47c)
  • Cast: Transfer side-loaded text/thumbnail/chapter tracks (#8553) (1cf5cad)
  • Create a new simple API for Video (#8454) (99a6f25)
  • DASH: Add support for "Spoken Subtitles" in tva:metadata:cs:AudioPurpose (#8364) (ab01bb7)
  • DASH: Parse ProducerReferenceTime nodes (#8439) (ce08da5)
  • Demo: Modernize cast receiver demo (#8484) (22bc6aa)
  • Expose Vast ad ID (#8477) (0a651cc)
  • Handle audio focus events (#8427) (8dd330f)
  • Improve stats when using src= in Safari (#8304) (251ff28)
  • LCEVC: Add buffering support to dual track implementation (#8516) (39ae0e6)
  • net: Add networking config (#8306) (36db472)
  • new TextDisplayer implementation to allow selecting subtitles via native API and controls (#8520) (724b0b2)
  • Offline: Allow no timeout when opening IndexedDB database (#8372) (8cd2c01)
  • Offline: Make timeout for opening IndexedDB configurable (#8366) (5752a21)
  • Preload: Allow use custom config when creating a PreloadManager (#8647) (6efaf53)
  • provide option to disable usage of source elements in MSE (#8386) (b0cd08b)
  • Provide Segment Reference to ABR Manager (via the request context) (#8316) (d9b0e85)
  • Shrink the size of language-mapping-list.js (#8526) (7331e01)
  • Simplicate Image/Thumbnails API (#8266) (d2f3657)
  • Simplicate Text and Chapters APIs (#8264) (c0455d7)
  • Simplify getStats to support MSE-AirPlay (#8309) (2d8ad94)
  • Stats: Add current codecs to stats (#8418) (cbcba99)
  • UI: Add scrollbar if necessary to statistics container (#8424) (eecf58f)
  • UI: Allow config cast sender URL (#8485) (aa502ce)
  • UI: Allow forceDisconnect when destroy the UI (#8472) (7c3df3b)
  • UI: Allow hide/show controls on tap (#8398) (06a8785)
  • UI: Customize scrollbar style (#8419) (a08d464)
  • UI: Disable add a cast button automatically on new UI (#8449) (b0b556e)
  • UI: Fix style of cast button on modern UI (#8451) (a2475e8)
  • UI: Hide volume slider when not hovering over the mute button (#8426) (74fda8b)
  • UI: Modernization of the UI (#8409) (1c85396)
  • UI: Optimize default UI for small screens (#8436) (f760dbd)
  • UI: Optimize the buttons that appear when using a Smart TV (#8429) (a8fc3bd)
  • UI: Resolution selector should display width for vertical videos (#8502) (94bdb7c)
  • UI: Show current playback rate and quality without hover (#8437) (9992d67)
  • UI: Show the quality mark when using src= (#8511) (0aa886d)
  • UI: Update some selectors after loading content always (#8465) (20659db)
  • Use Date for playback start time (#8415) (fc59408)

Bug Fixes

  • Add a small fudge to prefetch eviction (#8470) (9d3b586)
  • Add new crossBoundaryStrategy for Apple browsers (#8345) (3c60254)
  • Add new parameters to thumbnails in order to work with cast proxy (#8554) (023d06a)
  • Add optional content workaround to force ENCA.ChannelCount to 2 for EAC-3 Audio init segments (#8517) (bd97fb1)
  • Add support to crossBoundaryStrategy when using HLS (#8343) (6d5cdb6)
  • Add vp9 to normalized codec list (#8416) (c6459d5)
  • Ads: Destroy preloadManagers on stop interstitials (#8268) (ace6cb7)
  • Ads: Fix overlay interstitial when the seeked is outside of the current window (#8288) (9fd5900)
  • Allow use Chapter API on browsers without track element support (#8515) (6271282)
  • Allow use isLive, seekRange and isAudioOnly when using remote playback (#8629) (dabb562)
  • Avoid installing/uninstalling PatchedMediaKeysApple polyfill twice (#8593) (fb120f8)
  • Avoid reset MSE engine when using remote playback (#8626) (ce9db86)
  • Cancel trick play when current time catch the seek range (#8410) (e0770ff)
  • Cast: Add response to async calls on cast proxy (#8549) (c6bfc34)
  • Cast: Fix getChaptersTracks method while casting (#8552) (586051d)
  • CEA: cache and restore cea decoders based on the period continuity for dash content that uses SegmentTemplate (#8378) (6e029d1)
  • changelog: Add missing ref to PR #8156 in v4.14.0 (#8259) (b5a261a)
  • Check addTextTrack in video (#8388) (70a8317)
  • Closure compiler removes call to modifyCueCallback in src= mode (#8261) (b7865b4)
  • Count line break characters as ASCII (#8376) (b809646), closes #8336
  • DASH: Fix infinite buffering on end of content (#8677) (6b976db), closes #8672
  • DASH: Fix live playback with Period duration (#8493) (a7abb29), closes #8481
  • DASH: Inconsistent DRM across periods when using clearkeys (#8602) (3c32f7a), closes #8559
  • Demo: Fix bad tooltip position of last control panel element (#8658) (8065cf9), closes #8655
  • Detect and skip stall correctly (#8390) (fdd9652)
  • Detect screen change to update ABR according HDR vs SDR (#8606) (5413b5f)
  • Disable translate of cues when using UITextDisplayer (#8636) (b987662)
  • Do not fire metadataadded event for duplicated cues (#8617) (ffd048c)
  • Don't allow MSE reset in middle of a reset (#8338) (1c2c8c3)
  • Don't return video tracks when using remote playback (#8627) (79e62bc)
  • External text tracks in src mode related issues (#8527) (f9c8028)
  • Fix audio selection by channel count (#8286) (b9625c7)
  • Fix buffering event on native playback (#8310) (a18b37f)
  • Fix cast proxy args for side-loaded tracks (#8560) (d7f056a)
  • Fix config failures with multiple references to an input array (#8585) (5c94164), closes #8478
  • Fix cross boundary when playing at higher playbackRates (#8392) (05f3318)
  • Fix destroy CastProxy on browser without Cast support (#8294) (b2a1d35)
  • Fix dispatch complete event when the percentage is greater than 100 (#8643) (81b2ff5)
  • Fix exception updating partial config with deprecated fields (#8512) (9f18e9f)
  • Fix Firefox PlayReady support (#8497) (f6df1f0)
  • Fix garbage-collection issue in safari on mediaCapabilities polyfill (#8613) (394ed7b)
  • Fix getAudioTracks when audioId is null but exists originalAudioId (#8462) (82b9541)
  • Fix getAudioTracks when using remote playback (#8630) (952590e)
  • Fix getVideoTracks when videoId is null but exists originalVideoId (#8463) (5627153)
  • Fix initial buffering state when we load a stream (#8500) (ed48de9)
  • Fix MediaCapabilities polyfill on Vizio (#8542) (d15e21c)
  • Fix memory leak on Metadata and EMSG timelines (#8570) (59a1254), closes #8535
  • Fix metadata timestamp when using raw segments (#8654) (602515c)
  • Fix MSE recovery on Apple platform (#8341) (82da6b1)
  • Fix NTP conversion on Tizen 3 (#8444) (89584bf)
  • Fix onUpdateEnd when the MSE engine has been destroyed (#8591) (f5ea7ad)
  • Fix race condition stoping timers (#8530) (45e7c39)
  • Fix side-loaded track when resuming local and cast again (#8564) (9a17243)
  • Fix text visibility when switching between stream with text and without text (#8572) (e1b96d3)
  • Fixes eme-encryption-scheme-polyfill, null encryptionScheme is valid (#8599) (e3a438b), closes #8596
  • FRMA generation (#8367) (9c517a9)
  • Handle missing window.matchMedia API (#8385) (4d8f855)
  • Handle null response body for fetch responses (#8384) (8e0d45f)
  • Handle updateend event on duration reduction (#8403) (20bcfdd)
  • HLS: Add key ids to Fairplay DRM parser (#8371) (25021bb)
  • HLS: Avoid duplicate init segment request when using SAMPLE-AES (#8361) (4517999)
  • HLS: Do not skip DateRanges based on ID (#8638) (c6b53b3)
  • HLS: Fix disableAudio and disableVideo when loading a media playlist (#8642) (ccd31aa)
  • HLS: Fix HLS live playback on older Webkit STBs (#8325) (02a29a0), closes #8324
  • HLS: Fix MP4 data segment being parsed as MPEG2-TS (#8612) (a53f82b)
  • HLS: Fix mp4 detection when the mimetype is application/octet-stream (#8459) (b4d9b43)
  • HLS: Fix queryData to prevent url params percent encoding (#8346) (3b3c95a)
  • HLS: Fix text tracks disappear after seek (#8494) (995da46)
  • HLS: Fix variable substitution when using relative paths (#8350) (922dfee)
  • HLS: Handle redirect URLs correctly (#8331) (8d4087e)
  • HLS: Supports SUPPLEMENTAL-CODECS with muxed audio (#8323) (e7d1734)
  • Improve boundary gap mitigation at DASH period transitions (#8344) (c46963f)
  • Improve maxResolution detection on Tizen (#8365) (ee1926e)
  • Keep unique references in getAudioTracks (#8460) (34b5b4a)
  • LCEVC: Ensure unique originalVideoId for LCEVC dual-track (#8562) (4ef126b)
  • Make shaka.util.Lazy work with null (#8267) (e0a57bb)
  • Make sure we are calling setLiveSeekableRange and clearLiveSeekableRange at the correct time (#8523) (ddd97f0)
  • Make sure we are calling setLiveSeekableRange and clearLiveSeekableRange at the correct time (#8569) (6a9ee08)
  • Mixed clear/encrypted playback on Safari MSE (#8354) (5f18231)
  • net: Fix "Payload length does not match range requested bytes" when using open end (#8651) (c19cbaf)
  • Offline: Fix HLS-AES download (#8374) (60c6b19)
  • Offline: Handle missing window.matchMedia API (#8442) (3dbf4c4)
  • Only check key status changes when drm engine is available (#8589) (892be53)
  • Only create shaka-text-container when necessary (#8581) (3618d4f)
  • Only expand robustness on each stream once (#8458) (9ba8ceb), closes #8408
  • Only schedule an update on reset when we are not clearing the buffer (#8340) (d1be137)
  • Persist selected audio track role after variant update in selectVariantTrack (#8249) (b30e0ce), closes #8248
  • preload: Fix preload segments in some cases (#8401) (da271ac)
  • Prevent unhandled rejections on segment fetch failures (#8313) (8ba2722)
  • Read TRUN data_offset as signed int (#8383) (7e827ac)
  • Remove active audio channel count from default pref based criteria (#8674) (b8ff4e9)
  • Reset external tracks when unloading in cast proxy (#8573) (5ec05ca)
  • Reset lastMediaSourceReset when seeking to unbuffered part (#8339) (deb53fc)
  • Sony Bravia TV Playready DRM Failure (#8577) (f987f45)
  • Subtitles appearing twice when switching to Fullscreen on iOS (#8476) (9042872)
  • Support more Dolby codec notations (#8387) (933a4f2)
  • Text tracks with src= on Safari & UITextDisplayer are sometimes rendered natively (#8256) (306b682)
  • Try to reset MSE on STREAMING_NOT_ALLOWED error (#8625) (e1673cd)
  • UI: Add missing replay icon to big play button (#8648) (f2cb927)
  • UI: Avoid hide controls when seeking (#8303) (6cc035a)
  • UI: Avoid show resolution bandwidth when it's not necessary (#8440) (bb1fdb4)
  • UI: Avoid show resolution selector when using remote playback (#8628) (d60dbf3)
  • UI: Check remote availability on remote button (#8453) (03fd784)
  • UI: Create watermark element only when necessary (#8551) (95e6d01)
  • UI: Disable doubleClickForFullscreen while casting (#8488) (12feb3f)
  • UI: Disable save video frame button while casting (#8258) (e71d94c)
  • UI: Display max segment duration in seconds (#8305) (1c42190)
  • UI: Don't allow click on the buttons when the UI is not visible (#8396) (ea07907)
  • UI: Don't cover useless space with the position in the thumbnail image (#8322) (30af37e)
  • UI: Don't hide the UI when using the wheel over the UI (#8425) (d761dae)
  • UI: Filter audio qualities when bandwidth is missing (#8650) (370b042)
  • UI: Fix a11y issue with shaka.ui.AdInfo (#8420) (46c998d)
  • UI: Fix display language when showing the codec name (#8455) (48f217e)
  • UI: Fix duplicate visibility events (#8665) (b6ab228), closes #8656
  • UI: Fix erroneous current time when dragging (#8558) (eb83157)
  • UI: Fix get thumbnails while casting (#8509) (43389b2)
  • UI: Fix position of menus and tooltips when the seekbar is missing (#8639) (9d4e4d0)
  • UI: Fix seek on the seekbar at the init (#8555) (5d27b56)
  • UI: Fix seekbar allows seeking even when hidden (#8540) (1a82e27)
  • UI: Fix some bugs when joining an existing cast session (#8452) (9112ca1)
  • UI: Fix thumbnail exception when the thumbnails doesn't exist (#8318) (9010483)
  • UI: Fix transition from FullScreen to PiP in Safari (#8566) (42c08f6)
  • UI: Fix UI behaviour when switching between PiP and fullscreen and vice versa (#8544) (d274d38)
  • UI: Fix visibility events on the UI (#8619) (95cf682)
  • UI: Fix visibility events while casting (#8574) (2693bc7)
  • UI: honors singleClickForPlayAndPause when made a single tap with seekOnTaps = true (#8393) (0d7838e)
  • UI: Improve layout of current time container above hovered seek bar (#8412) (a27434b), closes #8411
  • UI: Keep the current position gradient when seeked (#8571) (7b98c10), closes #8548
  • UI: Make UI display 4096x2160 (DCI 4k) video as also being "4k" (#8359) (00ae291)
  • UI: Only create VR canvas when necessary (#8580) (6c3f71b)
  • UI: Only show the volume bar on hover (#8433) (1faa11e)
  • UI: Optimize portrait thumbnail display (#8274) (1f336dd)
  • UI: Reset quality mark when switching from video stream to audio only stream (#8605) (1d04801)
  • UI: Save track preferences for casting purposes (#8489) (e13e125)
  • UI: Show the remote button when we already connected (#8461) (09d2041)
  • UI: Show the video codec only when there are two codecs for the same resolution (#8407) (b93303c)
  • UI: Show time when the thumbnail is not available (#8510) (fefe61f)
  • UI: Sync volume and mute values when loading a new content or casting (#8487) (8555da7)
  • Update eme-encryption-scheme-polyfill (#8546) (e54d2dc)
  • Update region observer with new rules for small regions (#8275) (2f18b47)
  • Use proper method for checking is object an array (#8644) (769ced5)
  • WebOS: Do not throw error during parsing ID3 (#8623) (b2595ce)

Performance Improvements

  • AdaptationSetCriteria improvements (#8287) (78a16d9)
  • Ads: Improve presentation time of pre-roll interstitials (#8284) (fad638e)
  • Ads: Preload images on interstitials (#8269) (c49102c)
  • ContentWorkarounds: Do not override codec twice (#8358) (b9c5571)
  • DASH: Release period combiner after parsing a VOD (#8443) (396bdf6)
  • Do not process stream DRM info several times (#8505) (9678b1c)
  • HLS: Make initial segment requests in parallel (#8337) (5f4d351)
  • HLS: Reduce load time when loading in the player a media playlist (#8333) (aed6471)
  • Init source buffers synchronously (#8646) (34827b4)
  • net: Avoid parsing headers twice (#8618) (cd9c850)
  • Optimize DRM compatibility check across streams (#8652) (784246b)
  • Optimize getAllThumbnails() (#8525) (f15d627)
  • Remove extendedType when checking isTypeSupported on Tizen (#8507) (e3d8140)
  • Remove redundant collection in Streaming Engine (#8645) (c81e9a8)
  • Stop parsing the mp4 when the init segment is encrypted on ContentWorkarounds (#8353) (fd61961)

4.14.0 (2025-03-12)

Features

  • Add avoidEvictionOnQuotaExceededError config (#8031) (6d30f61)
  • Add config to allow reset MSE on cross boundary (#8156) (3699164)
  • Add LCEVC dual track rendering (#8168) (389f45c)
  • Add new error code when the streaming is not allowed (#7994) (455163f)
  • Add Vizio as community support (#8049) (16ca489)
  • Ads: Add double box format ad experience for Custom Overlay Interstitials (#8074) (e344f5d)
  • Ads: Add overlayAds to AdsStats (#8068) (ace9d4a)
  • Ads: Add support for L-Shape ad experience (#8051) (6bd0afe)
  • Ads: Update DASH Media Presentation Insertion according to the latest draft (#8065) (171bdb3)
  • Allow acquire thumbnails without track ID (#8129) (c312bd6)
  • Allow preload text tracks and expose the preloaded variant and text tracks (#8187) (4e05551)
  • Change the way to handle the STREAMING_NOT_ALLOWED error (#8033) (c2ff501)
  • Create a new simple API for Audio (#8005) (f778713)
  • DASH: Add dependencyVideo to video streams (#8057) (4936b0c)
  • Deprecate selectVariantsByLabel because the same can be done with the new Audio API (#8095) (e9b1a6c)
  • Do not make corrective seeks when setLiveSeekableRange is used (#8053) (dbdfa49)
  • FairPlay: Add support for Mux (#8201) (31b32d3)
  • HLS: Add allowRangeRequestsToGuessMimeType config (#7979) (195fd2b)
  • HLS: Add an option to ignore DRM info (#7986) (9461bc2)
  • LCEVC: Detect as supported dual track content with LCEVC (#8134) (8f0b0e3)
  • Make the filters provided for FairPlay more error-resistant (#7974) (6ba871b)
  • Move caption scaling from css to new textDisplayer.fontScaleFactor config (#8242) (c8747ab)
  • Move shaka.util.FairPlayUtils to shaka.drm.FairPlay (#8217) (c2ce68f)
  • Retain segment in memory on QuotaExceededError (#7954) (4c6c576)
  • Simplify ignoreSupplementalCodecs config (#7967) (abaf82f)
  • Simplify updatePeriod config (#7980) (7fa6cde)
  • Text font scaling customisation ability (#8215) (18695c6)
  • Time ID3, emsg, and metadata events to the presentation timeline (#8012) (cd32556)
  • UI: Add halfequirectangular (180) VR support (#8238) (6e9e5a0)
  • UI: Close submenu or context menu on option click (#8193) (5fc0fec)

Bug Fixes

  • Add more info in getVariantTracks for muxed streams (#8002) (8e17bad)
  • Ads: Fix default background color on interstitial (#8091) (a614786)
  • Ads: Only set ad-active in the controls-container when the ad has custom clicks (#8075) (16d4e29)
  • Ads: Remove default background color on interstitial overlay (#8085) (64a1076)
  • Ads: Reset playRangeEnd value between interstitials (#8082) (2f3a868)
  • Ads: Support urn:scte:dash:scte214-events schemeIdUri for overlays (#8086) (1071f40)
  • Allow change the native playbackRate with the same functionality as trickPlay (#7993) (410d2e6)
  • audio label when selecting variants by label (#8038) (56a920a)
  • Avoid DRM setup for VOD that does not need it (#8154) (2573af7)
  • Avoid launch RESTRICTIONS_CANNOT_BE_MET when it's not necessary (#8014) (ece88d6)
  • Avoid rebuffering when using big trick play rates (#7988) (213b2b7)
  • Call modifyCueCallback in src= mode (#8254) (bd9784a)
  • Check bandwidth when filtering streams (#8125) (ccbbb01)
  • Clear some caches when install/uninstall PatchedMediaKeysApple (#8198) (61d44c9)
  • CMCD: Do not call play() if CMCD is not enabled (#8149) (3338ea7)
  • CMCD: Only report ltc if playing; round to int (#8011) (6ce3c73), closes #8010
  • DASH: ContentSteering promise is resolved too late for fetching of init segment (#8126) (65da004)
  • DASH: Fix DASH_DUPLICATE_REPRESENTATION_ID error when using supplemental codec (#7961) (66ca230)
  • DASH: Fix Dolby Atmos detection (#7966) (56c5f52)
  • DASH: Fix playback of ClearKey when only part of keys are defined (#8055) (9a618d4)
  • DASH: Revert Dolby Atmos detection when there is not SupplementalProperty (#8132) (5c3e1a0)
  • Do not autoplay if autoplay is not set (#8024) (0efdd2b), closes #8022
  • Do not recognize MultiChoice & Ziggo as Apple (#7996) (e0f3f5a)
  • DRM: Fix drm choice when the user provide a server in the manifest (#8067) (bdce076)
  • Duplicate timelineregion* events fired for the same event id (#8013) (e270b28)
  • Evict the buffer against seekRangeStart (#8026) (44748b4)
  • FairPlay: Install by default shaka.polyfill.PatchedMediaKeysApple on older Safari versions (#8106) (324b121)
  • Fit template check template info (#8162) (b26dd1f)
  • Fix AC-3 playback on Tizen 3.0 devices (#7969) (4eb2cea)
  • Fix AC-3 playback on Tizen 3.0 devices when transmuxing (#7972) (dc62c8b)
  • Fix codec selection (#8197) (2d0995f)
  • Fix displaying subtitles in UITextDisplayer at high playback rates (#7991) (3be3b14)
  • Fix DRM workaround with fLaC and Opus boxes (#8070) (186b2b6)
  • Fix Hisense 4K detection (#8133) (ec37591)
  • Fix playback with Apple Media Keys polyfill detection (#7958) (1825266)
  • Fix seek to initial live position on slow devices (#8181) (6c01f18)
  • Fix segmentappended event when using muxed streams (#7987) (10b1f63)
  • Fix select label audio when using selectAudioLanguage (#7970) (20ed3b0)
  • HLS: Better detect mimetype when server returns application/octet-stream (#8077) (d4ecdad)
  • HLS: Detect spatial audio when using Dolby AC-4 (#8223) (88fa167)
  • HLS: Fix duplicate segments on some inaccurate live streams (#8084) (be27a9d)
  • HLS: Fix redirect management at media playlist level (#7944) (a38a810)
  • HLS: Fix support for SUPPLEMENTAL-CODECS on EXT-X-I-FRAME-STREAM-INF (#7992) (307e3d8)
  • HLS: Fix switching between muxed MP4 and muxed TS (#8061) (af4eb84)
  • HLS: Only apply compensation if the difference is greater than 150ms (#8207) (04658d1)
  • HLS: Populate encrypted info correctly on updates (#8153) (433a32a)
  • HLS: Populate originalVideoId in HLS with the URI (#8003) (6c9b634)
  • hls: Removing Possible encoding problem detected (#8253) (3c99d37)
  • Install Safari workarounds on WPE STBs (#8103) (09b3333)
  • net: Add 304 as successful request (#7963) (a0ed8da)
  • net: Allow preventDefault() on retry event (#8058) (a30f1da)
  • Only dispatch spatialvideoinfo and nospatialvideoinfo for video streams (#8236) (13a1340)
  • Prevent race condition when seeking backwards during load (#8188) (bcf159d)
  • PS5: Disable sequence mode in PS5 (#8004) (bb7ab3c)
  • Remove isSafari and always use isApple (#8104) (7570935)
  • Remove timeout for decodingInfo in some platforms and increase the timeout (#8172) (6ffc302)
  • Subtitles: Prevent rounding errors when filtering duplicated cues (#8018) (24283e6)
  • Throw preload destroyed error when re-using same preloadManager (#8046) (6583f96)
  • TTML: Correctly handle multiple samples in a segment (#8088) (2562384)
  • tXml: Allow case insensitive in parseDuration (#8064) (0400d1e)
  • UI: Allow configure close menu delay time (#8235) (de4bb9e)
  • UI: Allow play/pause when seekOnTaps is enabled (#8206) (db43a18)
  • UI: Allow use hideUI on mobile devices (#8233) (4be4dbd)
  • UI: Close context menu when hide the UI (#8234) (8739820)
  • UI: Don't sort playback rates (#8230) (78ea4ee)
  • UI: Fix bad behavior when we are on muted status and we turn volume up (#8231) (79ad771)
  • UI: Fix scrolling with player in iframe (#8180) (97f2255)
  • UI: Fix show AdStatisticsButton when it's not necessary (#7989) (e7d428a)
  • UI: Fix thumbnail sometimes not disappearing due to mouse hover (#8089) (a3ccf83)
  • UI: Fix weird behaviour when volume was 0, and we unmute (#8186) (3ff0e28)
  • UI: Improve performance and compatibility with MediaSession (#8100) (3277f04)
  • UI: Improve seekOnTaps behavior on tap and scroll (#8225) (c8d93a6)
  • UI: Show GB unit in StatisticsButton (#7990) (8816086)
  • UI: Update UI in order to support AC-4 (#8205) (051da08)
  • Use audio label on ExampleBasedCriteria (#7971) (b491e4a)
  • WebOS: Do not preload DRM on legacy EME (#8083) (477bbbf)
  • When standard load, do not wait for pending license requests to finish. (#8219) (b8519f1)

Performance Improvements

  • Ads: Only create the listeners/timers when there are interstitials (#8113) (cbcb1d8)
  • Close segmentIndex after getAllThumbnails (#8128) (31373b3)
  • Only set the timers on UITextDisplayer when there are cues (#8114) (f310833)
  • Pause PlayheadObserverManager operations on pause event (#8183) (870a3f0)
  • Prevent CastSender initialization on CastProxy on unsupported browsers (#7995) (b4ab526)
  • Region timeline improvements (#8203) (235fbea)
  • Remove promises from getAllThumbnails loop (#8118) (49706b9)
  • UI: Avoid unnecessary calls to controls configure (#8116) (356de09)
  • UI: Improve VR performance (#8237) (e672216)
  • UI: Reduce configure calls to use shakaPlayerCastReceiverId (#8115) (b3c9722)
  • Use navigator.userAgentData.platform to detect Android and Fuchsia (#8102) (7704a31)

4.13.0 (2025-01-23)

Features

  • ABR: Use PiP window size when using documentPictureInPicture (#7880) (c232867)
  • ABR: Use PiP window size when using requestPictureInPicture (#7882) (a583c4a)
  • Add 'downloadcompleted' event (#7609) (13186bd), closes #7608
  • Add adaptation set criteria factory configuration (#7886) (6e4bfdf), closes #7768
  • Add basic support for the Common Access Token (#7651) (c10b796)
  • Add configuration to ignore SCTE214 supplemental codecs (#7717) (e1d1d19)
  • Add downloadcompleted event description (#7615) (0db5813)
  • Add new error code for missing EME support (#7596) (3a83e76)
  • Add streaming.preferNativeDash config (#7737) (27976f1)
  • add support for multiple robustness levels in drm (#7753) (88472b3)
  • Add support for WisePlay DRM (#7854) (7ef0f92)
  • Add Watermark Support to Shaka Player UI (#7877) (56523e4)
  • Add watermark to uncompiled mode (#7895) (14c4fe1)
  • Ads: Add basic support to DASH OverlayEvent (#7701) (b704af0)
  • Ads: Add support for images and iframes in interstitials (#7712) (8db876f)
  • Ads: Add support for overlay interstitials (or non-linear ads) (#7657) (70257ff)
  • Ads: Allow OverlayEvents without viewport (#7734) (426090d)
  • Ads: Expose the interstitial player (#7793) (6783ce0)
  • Ads: Parse non-linear VAST ads (#7702) (0c7d204)
  • Ads: Populate getAdId and getMediaUrl for interstitials (#7922) (1a6a0db)
  • Ads: Support HTMLResource on non-linear VAST ads (#7710) (6f4d2d2)
  • Check minHdcpVersion in probeSupport (#7809) (fab3faf)
  • CMCD v2 LTC and MSD keys (#7412) (b2673fd)
  • Create segmentIndex when there is only one variant (#7868) (3a85217)
  • DASH: Extract PlayReady licenseServerUri from PSSH (#7898) (8fda5d8)
  • Demo: Allow storage of MSS-PlayReady in demo (#7801) (8764169)
  • Demo: Display unhandled rejections in demo (#7638) (d7e78f6)
  • HLS: Add support for getting license server url for PlayReady (#7790) (effa244)
  • net: Add originalRequest to shaka.extern.Response (#7857) (59c9989)
  • Offline: Allow downloading some clearkey content without persistent license support (#7811) (50a1851)
  • Save CEA708 caption cues on all windows when deleting/clearing windows (#7909) (19bd472)
  • Simplify the use of low latency (#7748) (6616ff2)
  • Stop setting playbackRate to 0 to control buffering state when streaming.rebufferingGoal = 0 (#7617) (84b64af)
  • UI: Add config to show the audio codec in the audio selector (#7644) (ee72b89)
  • UI: Add option to show the video codec name (#7747) (075c3fd)
  • Update usage of minBufferTime according to the DASH spec (#7616) (2260aa9)
  • Use MSE clearLiveSeekableRange and setLiveSeekableRange when available (#7905) (87d9392)

Bug Fixes

  • Abort operations only once (#7624) (d407d15)
  • Ads: Always fire CUEPOINTS_CHANGED when not using multi video elements (#7584) (a4d0fc8)
  • Ads: Always set endTime for MPD Alternate (#7583) (16580ea)
  • Ads: Apply X-PLAYOUT-LIMIT to entire interstitial (#7804) (e40341c)
  • Ads: Avoid adding custom interstitials without URI (#7696) (743b451)
  • Ads: Avoid skip interstitial when is not allowed (#7686) (7be22db)
  • Ads: Calculate the mimeType in an earlier step so that there is no impact on the ad playback (#7742) (c113738)
  • Ads: Disable interstitials when playing an interstitials (#7621) (7401adf)
  • Ads: Don't allow play an overlay video ad using the base video (#7740) (172e713)
  • Ads: Don't dispatch cue points changed if it is an overlay (#7695) (eb4a45e)
  • Ads: Don't try to play Image and HTML overlay interstitials (#7697) (87cbf4d)
  • Ads: Fix ad position by default (#7659) (ef2c7eb)
  • Ads: Fix bad static overlay ad position (#7735) (e4825c3)
  • Ads: Fix behavior when user JUMPS across more than one interstitial (#7667) (4aa9306)
  • Ads: Fix id of X-ASSET-LIST (#7662) (79b1536)
  • Ads: Fix post-roll playback (#7663) (9fd349a)
  • Ads: Fix unnecessary request when using VAST (#7660) (d09cd7e)
  • Ads: Fix usage of ENABLE-SKIP-AFTER and ENABLE-SKIP-FOR (#7677) (8048d02)
  • Ads: Fix usage of ENABLE-SKIP-FOR in Interstitals (#7652) (46ab1cb)
  • Ads: Fix VAST_INVALID_XML error code (#7593) (c1e26ea)
  • Ads: Limit static overlay playback to the timeline (#7741) (eff0aef)
  • Ads: Only display the secondary video if necessary (#7709) (072acf0)
  • Ads: Prevent playing the same ad twice (#7585) (10659c5)
  • Ads: Remove iframe border in overlays (#7738) (60c88eb)
  • Ads: Stop properly interstitial ads (#7708) (f186185)
  • Ads: Update Alternative MPD to match the latest spec (#7706) (cd78811)
  • Ads: Use region.id as id for Alternative MPD interstitial (#7671) (18ed02c)
  • Allow set maxLatency and minLatency to 0 (#7704) (4744d1e)
  • Allow the user to disable subtitles while paused (#7578) (f41c65d)
  • Avoid setAppendWindow when the window is Infinity (#7923) (c75ebd7)
  • Avoid stack overflow when stringifying objects (#7721) (90e47eb), closes #7435
  • Avoid useless MSE reset when transmuxing muxed content (#7818) (cc930a8)
  • Calculate timeToFirstByte before fire the event 'downloadheadersreceived' (#7605) (0fc5316), closes #7604
  • Cast: Incorrect detection of MediaCapabilities on Linux Chromecast (#7628) (bc0b9f2)
  • CEA: Fix multi byte language support in CEA-708 (#7837) (5b13332)
  • CEA: Fix multi byte language support in CEA-708 (#7929) (3856c58)
  • Codec switch reload - apply boundaries correctly (#7700) (8dd9d20), closes #7595
  • DASH: Change fallback presentation delay (#7918) (b9eabe5)
  • DASH: Error due to deleted stream (#7723) (0ca6ff7)
  • dash: Fix $Time$ usage with SegmentTemplate (#7849) (abd6d8b)
  • DASH: Fix Dolby Atmos detection when there is not SupplementalProperty (#7847) (cf581cd)
  • DASH: Fix playback after DASH period eviction (#7603) (d8a14b0)
  • DASH: Ignore early segments in a period (#7910) (c7a93d7)
  • DASH: Notify time range with the fitted timeline (#7911) (a89ee1a)
  • Detect mov extension as video/quicktime (#7884) (b0be779)
  • Detect smooth codec switch support on Apple devices (#7678) (f765e05)
  • Disable live sync when the stream is paused (#7579) (89267cc)
  • Disable smooth codec switch on Tizen 8 (#7614) (cd6aae7)
  • Disable smooth codec switch on webOS 6 (#7636) (93e6921)
  • Docs: Remove info about small/large gaps from manual (#7762) (9234e44)
  • Don't ignore the license server in manifest when another key-system has license server in configuration (#7797) (ae34b68)
  • Fix cast support for HLG HDR (#7632) (f964708)
  • Fix CBCS support in recent WebOS (#7647) (137f256)
  • Fix change timestampOffset on discontinuities when not necessary (#7823) (d3238dd)
  • Fix ClearKey license on old CDMs (#7816) (fe1f35b)
  • Fix gaps produced by the transmuxer (#7822) (934bdff)
  • Fix isEnded for live streams (#7866) (5e5e5a8)
  • Fix isEnded when is not fullyLoaded (#7883) (7e6116f)
  • Fix missing EMSG events (#7839) (e6ca059)
  • Fix normalized codec for VP9 (#7645) (f2061e4)
  • Fix parameters lost during codec switch (#7630) (7837b60)
  • Fix playback on Apple devices without ManagedMediaSource (#7669) (ff7c465), closes #7666
  • Fix SEGMENT HEAD requests, compatibility with Cast SDK (#7851) (b153a9c), closes #7600
  • Fix select spatial audio when using selectAudioLanguage (#7846) (c5dc5f4)
  • Fix setLiveSeekableRange when the seekable range is too short (#7916) (30be525)
  • Fix support for supplemental codecs (Dolby Vision) (#7720) (279e6cd)
  • Fix unload call after destroy (#7690) (18652b6)
  • Fix usage of keySystemsMapping (#7736) (79a481e)
  • Fix video progress events accuracy (#7654) (5f8e958)
  • Follow the configured playRange for src= (#7825) (b22e546)
  • Forbid usage of instanceof ArrayBuffer (#7653) (55b7bd0), closes #6279
  • HLS: Assign EXT-X-TILES to segment tags (#7864) (851308c)
  • HLS: Correctly identify webvtt subtitles with cmft extension (#7791) (7ef5e62)
  • HLS: Disable audio/video correctly when loading a TS media playlist (#7815) (626591e)
  • HLS: Disable text correctly when loading a media playlist (#7840) (0fa17f6)
  • HLS: Do not use EXT-X-PROGRAM-DATE-TIME on vod when there is only video or audio (#7802) (fe94b6b)
  • HLS: Fix audio detection when there is no audio data but it appears in PMT (#7838) (34b69fa)
  • HLS: Fix playback of raw AAC (#7641) (1d9ac65)
  • HLS: Fix subtitle timing (#7625) (9e2b15e)
  • HLS: Fix subtitle timing when no discontinuity but there is X-TIMESTAMP-MAP (#7681) (7afe08e)
  • HLS: Fix timestamp offset for raw formats when using segments mode (#7819) (bd29645)
  • HLS: Ignore errors when try to detect CC (#7668) (5be0fc4)
  • HLS: Omit daterange without START-DATE in order to avoid errors (#7841) (bc0e1c6)
  • Offline: Allow downloading AES content (#7827) (21bbd93)
  • Offline: Allow storage of MSS streams (#7799) (bc41643)
  • Offline: Fix download HLG tracks when using AUTO hdr level (#7865) (0eedbc9)
  • Offline: Fix some aborted downloads continue to download (#7842) (fb8086b)
  • Only create TextTrack of SimpleTextDisplayer when necessary (#7913) (9e71a01)
  • Prefer Dolby Vision p5 over Dolby Vision p8 (#7745) (60429e9)
  • Prefer SimpleTextDisplayer on iOS (#7569) (bd2c9a7)
  • preload: Wait for drm keys when preloading (#7698) (a1e2f0a), closes #7520
  • PS5: Prevent uncaught promise rejections when requests are aborted (#7637) (09cfac2)
  • re-open the MediaSource if readyState is not open when the init() method is called. (#7783) (6610fa3)
  • Remove useless calls to isTypeSupported (#7817) (bd99632)
  • Remove useless deprecation in UITextDisplayer and add some guards in SimpleTextDisplayer (#7805) (fd78ec4)
  • Silence aborted errors from PreloadManager. (#7619) (f277f2c), closes #7618
  • Silence uncaught rejection errors when closing EME sessions (#7881) (bc6a79f)
  • Timeout unfulfilled request to decodingInfo and requestMediaKeySystemAccess (#7682) (07894ec), closes #7680
  • Transmuxer: Fix transmuxer with overflow data (video nalus and aac samples) between PES (#7813) (77c4251)
  • tXml: Fix findChildrenNS when the namespace is in the element (#7896) (bcff34c)
  • UI: Allow 1x playback rate when default playback rate is not x1 (#7787) (724166e)
  • UI: Allow pause non-linear video ads (#7699) (2953b6f)
  • UI: Change to use legacy css format to support old TVs (#7658) (e03dfc6)
  • UI: Do not show codec name when the same codec is used for the same language (#7643) (87f6aa6)
  • UI: Fix exception while casting to mismatched player version (#7631) (c9534a0)
  • UI: Fix handle of seek on MediaSession (#7879) (57992b2)
  • UI: Fix playback rate resets when pausing or playing the video (#7728) (6e382ce)
  • UI: Hide ad counter when the ad is non-linear (#7718) (effaf95)
  • UI: Hide ad position when the ad is non-linear (#7711) (8566836)
  • UI: Show Dolby Atmos name in the UI (#7848) (a0848f7)
  • UI: Show presentation time when playing non-linear ads (#7707) (d00ea51)
  • UI: Use trickPlay method to control the playback rate (#7580) (70c2fda)
  • UI: Video starts playing automatically when selecting a playback rate (#7786) (ac568a4)
  • Use getSegmentAvailabilityStart instead of getSeekRangeStart to evict segments (#7867) (11afdc8)
  • Use infiniteLiveStreamDuration equal to true in Safari 17 or above (#7901) (5005fac)
  • Widevine: Add default audio/video robustness for Widevine (#7808) (a018f53)
  • Xbox: Simplify the use of WebView2 (#7743) (775bc4e)

Performance Improvements

4.12.0 (2024-11-13)

Features

  • Add config to ignore hardware resolution (#7572) (11a7b92)
  • Add manifest.disableIFrames config (#7255) (7b07614)
  • Add preferredTextFormats config (#7523) (597e129)
  • Add safeSeekEndOffset feature for live reposition (#7532) (73524d0)
  • Ads: Add config to allow disable interstitials (#7271) (64e45c9)
  • Ads: New HLS interstitial DATERANGE attributes for Skip Button (#7467) (3107de3)
  • Cast: Enable storage in Android Cast devices (#7292) (1434426)
  • DASH: Disable xlink processing by default (#7264) (d5ed8ed)
  • Demo: Add new asset with DASH-FairPlay (#7487) (fbc6179)
  • Enable AirPlay in MSE (#7431) (a6cf9cb)
  • Enable audio groups by default (#7549) (5024184)
  • HLS: Add the update period for HLS manifest (#7498) (7b38ca8)
  • HLS: Make dummy streams for tags representing muxed audio (#7343) (e2413ed)
  • i18n: Add Belarusian translation (#7409) (51d00b8)
  • Offline: Allow store external text (#7328) (346cf48)
  • Offline: Allow store external thumbnails (#7322) (013b3c7)
  • preload: Wait for prefetches when preloading (#7533) (2ad1eff), closes #7520
  • Remove streaming.parsePrftBox config (#7358) (fc4893d)
  • Support Fairplay DRM in DASH manifest. (#7454) (c9f7723)
  • UI: Add close button to statistics panel (#7482) (4e6e37c)
  • UI: Added Mute button to context menu and overflow menu (#7439) (e883fed)
  • UI: Allow configure the fullscreen mode in VisionOS (#7540) (3bd0978)
  • UI: Use the lang= attribute to help screen-readers recognize localized labels (#7267) (3590aee)
  • Use source tags instead of src attribute (#7406) (445b0ce)

Bug Fixes

  • Active track state on variantchanged and adaptation events (#7350) (c15ca1d)
  • Ads: Allow play interstitials on iOS fullscreen (#7538) (84ae806)
  • Ads: Allow play interstitials using single video element when use native HLS (#7550) (fd6c322)
  • Ads: Allow preload and remove old interstitials when playing a interstitial (#7465) (25e7620)
  • Ads: Disable interstitials when using AirPlay (#7479) (2394ec2)
  • Ads: Don't load useless segments when using playoutLimit on interstitial ads (#7469) (7d8510b)
  • Ads: Fix duplicate Ads when playing interstitials through native HLS player (#7527) (075713f)
  • Ads: Fix JUMP implementation to avoid loop the same ad group in Interstitials (#7329) (524014e)
  • Ads: fix pre-roll identification when using src= (#7493) (576e4a5)
  • Ads: Limit interstitial duration to actual duration if available (#7480) (ad9f2ac)
  • Ads: Limit interstitial duration to actual duration if available when using src= (#7488) (334a00e)
  • Ads: Release interstitials timer correctly (#7373) (53b704f)
  • AirPlay: Don't show subtitles on the player when using AirPlay (#7514) (7c6dac5)
  • AirPlay: Prefer Playback Remote API for closeOpenSessions (#7500) (30068a1)
  • AirPlay: Show AirPlay button when starting the playback with AirPlay (#7515) (edb9e53)
  • Allow show subtitles using webkit Fullscreen API when playing native HLS (#7539) (6ab6a8f)
  • Allow streaming again when we reset MSE (#7495) (bc90c87)
  • Avoid make HEAD request for image mime type (#7332) (6716ff0)
  • Avoid notify buffered changes when segment appended is text (#7353) (43314a1)
  • calculations of channel count for DASH AudioChannelConfiguration elements. (#7421) (669b7b3)
  • DASH: Allow mixing SegmentTemplate-SegmentTimeline with SegmentTemplate-numbering (#7286) (e7229fb)
  • DASH: Avoid adding originalId when it is not necessary (#7281) (a88be00)
  • DASH: Clear streamMap when period is removed from the manifest (#7297) (da71e6d)
  • DASH: Clear usedPeriodIds when period is removed from the manifest (#7305) (f8e3aa4)
  • DASH: Clone closedCaptions map in PeriodCombiner output stream (#7309) (873bb24), closes #7303
  • DASH: Clone EventStream nodes to reduce memory consumption (#7285) (0023acc), closes #7148
  • DASH: Evict (by time) indexes in MetaSegmentIndex (#7296) (69b317f)
  • DASH: Evict empty indexes in MetaSegmentIndex (#7272) (c9998f9)
  • DASH: Exclude text segments when calculating max segment size (#7564) (3f9dec2)
  • DASH: Fix HTTP redirect during manifest update (#7339) (6532a7c)
  • DASH: Live DASH allows segment overlap in the updated manifest for first new segments (#7405) (051a8c5)
  • DASH: Live to vod transition (#7404) (2d14dd5)
  • dash: live to vod transition seek start (#7347) (e02367c)
  • DASH: Release period combiner info correctly (#7364) (fe2ea80)
  • DASH: Use presentationTimeOffset in EventStream (#7282) (c541b1c), closes #7277
  • Disable Encryption Scheme Polyfil On Some Devices (#7355) (58f666b)
  • Disable smooth codec switch if changeType is unavailable (#7414) (c90d5ff)
  • Do not allow MSE operations when using Remote Playback (#7503) (b04caa3)
  • Do not recognize Sky Q as Apple device (#7357) (e5fadab)
  • Do not reuse the same tsParser for different contentType (#7563) (a020b19)
  • Do not seek to first subtitle (#7312) (0980ba3), closes #7310
  • docs: Add mising description of PRFT event (#7403) (072f46c)
  • Don't use info from MSE mode when using Remote Playback (#7504) (e14a8eb)
  • DRM: Fix persistent licenses not working for online playback (#7457) (6088c1d)
  • Evict buffer on QUOTA_EXCEEDED_ERROR error (#7361) (0048e9d)
  • Evict text buffer when unload the text stream (#7360) (5b6652f)
  • Exclude TIMEOUT errors when disabling streams (#7369) (67826ac), closes #7368
  • Export getFetchedPlaybackInfo (#7418) (ce38dd9), closes #7416
  • Fire PRFT event every time (#7408) (e7f7825)
  • Fix disable stream when no manifest (#7497) (5e1fc5a)
  • Fix external image track mime type (#7333) (3a146c2)
  • Fix metadata timing when using TS (#7478) (2b56dcd)
  • Fix rendering of image subs when using SimpleTextDisplayer (#7258) (3d0b817)
  • Fix reset MSE to last independent segment (#7494) (8c62370)
  • Fix select HLG tracks when using AUTO hdr level (#7470) (322ea6b)
  • Fix support of getAllThumbnails when using shaka.dash.TimelineSegmentIndex (#7508) (0ff61a5)
  • Fix Windows detection (#7476) (fac9d84)
  • HLS: Allow sync live streams without PROGRAM-DATE-TIME (#7340) (db27227)
  • HLS: Avoid disabling muxed audio streams (#7351) (53cea44)
  • HLS: Fix uncaught error in slow network scenario (#7321) (68e579b)
  • HLS: Ignore DATERANGE with errors instead of fire an error (#7499) (b2b4238)
  • Install polyfills for Comcast X1 devices (#7529) (2b2df4b)
  • MSS: Don't allow prefetch segments with self-generated data (#7485) (d502e9b)
  • MSS: Fix playback of some MSS streams (#7517) (6d0ee51)
  • MSS: Fix timeline repetitions (#7484) (b1d3a3a)
  • offline: Text segments are downloaded before audio&video (#7336) (e28a07e)
  • only use lastSegmentReference for knowing if variant changed (#7537) (abfc0b2)
  • preload: Resolve manifest promise sooner (#7380) (c548315)
  • preload: Set manifest before initializing DRM (#7359) (b9ba66f)
  • PS4/5: Disable smooth codec switch on PS4/5 (#7413) (7268a2b)
  • Reduce calls to EME by ignoring MIME type in MediaKeySystemAccess cache (#7374) (6a4e95b), closes #7325
  • Reset MSE when we disconnect from Remote Playback (#7506) (cf22042)
  • Seek delay for Cast Nest hub (#7423) (d454514)
  • Tizen: Adding gapPadding to gap manager to solve Tizen issue (#7331) (330e487)
  • TTML: Fix absence of conversion of alpha (transparency) from 0-255 -> 0-1 (#7280) (fdf68d1), closes #7279
  • TTML: Fix subtitles not rendered due to complaint about xml:id (#7270) (257de7f)
  • UI: Disable fullscreen button conditionally when playing ads (#7534) (1497148)
  • UI: Disable save frame when using remote playback (#7433) (263c6a6)
  • UI: Display the font-family correctly in some cases (#7266) (96f8914)
  • UI: Don't enable StatisticsButton when create overflow menu (#7481) (ba36958)
  • UI: Don't try to add MediaSessionHandler for PiP when it's not available (#7376) (e71dca2)
  • UI: Fix "Live" label in some languages (#7560) (8dae6e4)
  • UI: Fix auto-load with source tags (#7430) (0f2ee89)
  • UI: Fix mediaSession metadata update on Firefox (#7375) (6884721)
  • UI: Fix missing tracks in resolution selector (#7352) (1314377)
  • UI: Fix name for Dolby Digital Plus (#7541) (a01b5fd)
  • UI: Fix remote button availability and icon (#7513) (c8bcfdb)
  • UI: Fix set MediaSession info when no previous Metadata (#7521) (b00a2c3)
  • UI: Fix the position of save video frame in the overflow menu (#7438) (85282ce)
  • UI: Hidden cursor correctly (#7464) (3338579)
  • UI: Hidden cursor correctly when no touch screen (#7458) (6e62cfa)
  • UI: Remove buffering spinner when playing a client side ad (#7507) (b980f67)
  • UI: Remove spinner and client side ad container elements when calling destroy (#7320) (3d51cb3)
  • UI: Restore missing AirPlay button (#7389) (96da45a)
  • WebVTT: Fix display italic subtitles with end align (#7559) (781a27d)
  • WebVTT: Fix mapNativeCueToShakaCue in Chromium browsers (#7273) (76376e9)

Performance Improvements

  • Ads: Reduce latency for interstitial to start playing (#7525) (5ee6a4d)
  • Ads: Reduce latency for interstitial to start playing (#7528) (6303924)
  • DASH: Create segment indexes only on new periods (#7294) (173a814)
  • DASH: Delete old matchedStreams (#7301) (d559366)
  • DASH: Delete old matchedStreams when using trickmodeVideo (#7306) (4ab3dea)
  • Improve performance when parsing EMSG (#7557) (cb66f47)
  • Only use tXml parent when necessary (#7304) (7ceffc0)

4.11.0 (2024-09-04)

Features

Bug Fixes

  • ABR: Do not adapt between spatial & non spatial audio (#7067) (1dc5c87)
  • ABR: Fix restrictToElementSize running while abr disabled (#7153) (aea85b0)
  • ABR: Not change to another quality without respecting a min time (#6979) (a5095a8)
  • Add more info in getVariantTracks for muxed streams (#7181) (d63c44a)
  • Add null check for current reference (#7184) (f5aceed)
  • Adjust timing of mediaqualitychanged event when safe margin is set (#7114) (f6ac236)
  • Ads: Detect correctly interstitial preroll when using native HLS playback in Safari (#7093) (9912798)
  • Ads: Don't show duplicate SKIP UI in IMA CS (#7084) (9337143)
  • Ads: Fix back to live for native HLS when interstitial endTime is Infinity (#7095) (18aea54)
  • Ads: Fix mangled properties when using X-ASSET-LIST (#7002) (ade19cb)
  • Ads: Fix playback of preroll interstitial when the currentTime is 0 (#7092) (0cdeb65)
  • Ads: Fix timelineRange detection in HLS interstitials (#7091) (d79f8e2)
  • Ads: Only allow play the preroll once (#7096) (0248268)
  • Allow dispatch metadata event with cueTime equal to 0 (#7098) (dcdecf9)
  • Allow recover normal stream when trick play stream fails (#7234) (2638ada)
  • Allow reference mimeType change in StreamingEngine (#7061) (bf6632e)
  • Apply playRange config to src= (#7168) (7cf332e)
  • Avoid clear buffer when select the same audio track (#6959) (b953a75)
  • Avoid reset iterator when seek into the buffer (#7004) (dc34ec4)
  • CEA: Always init CEA parser with new init segment (#7102) (61e570e)
  • CEA: Offset text CEA-608 that are out of viewport (#7024) (230f6e0)
  • Compare normalized codecs in codec switching checks (#7143) (01545f4)
  • Correct the behavior to defer closeSegmentIndex() calls during updates (#7217) (7ba7e61)
  • DASH: Allow play all time fastSwitching tracks (#7180) (4abfc5a)
  • DASH: Clear streamMap when period is removed from the manifest (#7202) (c5df88b)
  • DASH: Fix allPartialSegments signal when using L3D (#7179) (a1d3927)
  • DASH: Fix codec/mimeType for single text file (#7075) (4728d08)
  • DASH: Fix creation of multiperiod trickmode streams (#7229) (ebab340)
  • DASH: Fix EventStream Elements creation (#7194) (bd06fe7)
  • DASH: Fix MPD Patch when SegmentTemplate is shared between Representations (#7218) (b2502fd), closes #7214
  • DASH: Fix period combining when roles are equal (#7065) (38c691b)
  • DASH: Fix transitions from 'dynamic' to 'static' (#7029) (3ba94b8)
  • DASH: Improve memory usage with live streams (#7039) (d1435c7)
  • DASH: Patch manifest Adaptationset indexing, @n=<Numbering> and @t=<time> (#7131) (0f2cea4)
  • DASH: Prioritize highest bandwidth in PeriodCombiner (#7045) (29ed0a8)
  • DASH: Use proper namespace when mapping TXml node to Element (#7240) (cd2fc71)
  • Defer closeSegmentIndex() for old streams during ABR switches when segment fetches are ongoing (#7157) (4cff18d)
  • Destroy correctly unused transmuxer (#7059) (f161a1c)
  • Disable CC with disableText config (#7078) (f9040ce)
  • Disable seek retry cooldown on most platforms (#7010) (dcc60f9)
  • Do not minify CodecSwitchingStrategy enum keys (#7200) (f718139)
  • Don't throw an error when trying to disable a trick mode stream (#7235) (92f70ee)
  • Dont use inaccurateManifestTolerance for sequenceMode (#7207) (b119c03)
  • Dont use trick play track for liveSync feature (#7219) (b7481f2)
  • Exclude future segments in notifyTimeRange calculations (#6970) (62881f6)
  • Filter duplicate cues on text displayer append (#6949) (fa9feb3)
  • Fire the correct error code in src= mode in some situations (#7167) (a7a307c)
  • Fix bad warning when use selectAudioLanguage (#6999) (fbf1ad0)
  • Fix ended state in stateHistory (#7189) (f6be619)
  • Fix error thrown after catching null error (#7177) (b4dc2ad)
  • Fix horizontal alignment of WebVTT in UITextDisplayer (#7169) (efac129)
  • Fix ID3 timing when included in EMSG (#7099) (eb36c0d)
  • Fix iteration of document.fonts (#6976) (c70586c)
  • Fix MSE polyfill for iOS (#7049) (fcd87aa)
  • Fix NaN and empty objects in getNonDefaultConfiguration (#6956) (52e3864)
  • Fix normalized codec for VVC (#7201) (8ca1b74)
  • Fix skip interstitials with another ID but same URL (#7050) (8b70bb6)
  • Fix support for Dolby Vision based in VVC (#7212) (cdbbe23)
  • Fix type passed to isTypeSupported in some cases (#7233) (3e3953d)
  • Fix UITextDisplayer desync & null pointer exception (#7199) (247753d)
  • HLS: A/V sync regression for HLS live (#6987) (da6c605)
  • HLS: A/V sync regression for HLS with different segment sizes (#7015) (83955ee)
  • HLS: Add HLS_EMPTY_MEDIA_PLAYLIST error (#6951) (b3df270)
  • HLS: Calculate the delay based on the sum of the segment lengths (#7209) (abdabb0)
  • HLS: Check that segment 0 exists (#7208) (d744ef8)
  • HLS: Expose tilesLayout properly for live (#7123) (388050c)
  • HLS: Fix filtering video/audio streams without bandwidth (#7008) (64430ed)
  • HLS: Fix load AES media playlist (#7012) (3bd032c)
  • HLS: Fix parsing of width and height when using media playlist (#6989) (cec6166)
  • HLS: Fix use of EXT-X-MEDIA when not using Content Steering (#7166) (fcacb95)
  • HLS: Propagate bandwidth to stream in audio-only and video-only (#7006) (1f5badf)
  • HLS: Remove init segment on formats without init segment (#7060) (c576bc3)
  • honor autoShowText on non-audio streams (#6977) (ef15d13)
  • net: Remove AbortController polyfill (#7149) (65e6681)
  • Offset text regions that are out of viewport (#6986) (ca7fd6e)
  • Only check encryptionScheme when is not null and not empty string (#7079) (c62c5b5)
  • Pass correct adaptation value to MediaSourceEngine (#7111) (0ff0578)
  • PeriodCombiner: Use normalized codec to remove duplicates (#7032) (0669d24)
  • Prefetch: Use the same references time for evict and prefetchSegmentsByTime (#7003) (9fcaf4d)
  • properly map region height/width when applying anchors (#7105) (ac9a6ca)
  • Repeated initial segment load & cancellations (#7147) (3f3bbc6)
  • Revert change that caused a lot of warning with "cannot find endTime" and hls playback errors (#7239) (e522921)
  • Revert change that caused stalls with "cannot find endTime" (#7213) (2d2bddd)
  • SimpleTextDisplayer: Do not disable metadata & chapters tracks (#6948) (c6d834e)
  • SSA: Support files with line breaks that are not necessary (#6947) (88431b6)
  • Stats: Fix bytesDownloaded when using src= (#7223) (1faada6)
  • Stats: Fix completionPercent for Live (#6957) (d719328)
  • Transmuxer: Fix init segment between discontinuities (#7042) (6850f68)
  • TTML: Fix font styles parsing (#6969) (f56f7ba)
  • ttml: Handle escaped special characters. (#7047) (90668c2), closes #7044
  • TTML: Show background color with image subtitles (#6967) (e68fd55)
  • UI: Don't display NaN stats (#6958) (7c33192)
  • UI: Fix ad markers set before full initialization (#7089) (1d5c7d2)
  • UI: Fix display seekbar and time when the seekrange is infinite (#7182) (867f8b2)
  • UI: Fix font-family override in UITextDisplayer (#7249) (3d33277)
  • UI: Fix resolution label when the stream has not resolution (#7043) (089518c)
  • UI: Fix seek preview time in VoD (#7027) (226c740)
  • UI: fix wrong french in translation (#6982) (2d6c2af)
  • UI: Only show frame rate if there are several frame rates (#7190) (d4249b1)
  • UI: Remove not loaded font (#7242) (47f686f)
  • UI: Show all resolutions when there are only one audio. (#7017) (2a2c9cd)
  • UI: Show the ad marker in the seek bar when there are some intersections (#6990) (247037e)
  • Unify maxDisabledTime behaviour (#7077) (8e13e91)
  • WebVTT: Fix rendering of WebVTT in UITextDisplayer (#7023) (22a7c49)
  • WebVTT: Re-add rollover logic (#7104) (0708379)
  • Xbox: Fix screen resolution detection (#6988) (4d2aa24)
  • Xbox: Override Dolby Vision codecs (#7115) (2c399e0)
  • Xbox: Support screen resolution detection on Xbox when using WebView2 (#7144) (d93a019), closes #7141

Performance Improvements

  • DRM: compare init data only when config flag is set (#6952) (be22e5b)
  • HLS: do not loop twice when processing nalus (#6954) (a779d31)

4.10.0 (2024-07-01)

Features

  • add an audiotrackchanged event for when label, language, or roles of an audio track change (#6913) (8825af7)
  • Add audio codec to selectAudioLanguage() (#6723) (48bdf17)
  • Add dontChooseCodecs config (#6759) (5067d5c)
  • Add isLowLatency to shaka.extern.Manifest (#6842) (e020814)
  • add liveSyncTargetLatency option and deprecate liveSyncMinLatency and liveSyncMaxLatency options (#6822) (277afbf)
  • Add option to disable continue loading live stream manifest when paused (#6916) (0ea31b4)
  • Add segment URIs to segment-related errors (#6714) (8d680e5), closes #6712
  • Ads: Add averageLoadTime and errors to ad stats (#6828) (037d4cb)
  • Ads: Add content resume/pause requested events (#6738) (9b47b8f)
  • Ads: Add CUE ONCE support in Interstitials (#6785) (c72493a)
  • Ads: Add CUE PRE and POST support in Interstitials (#6799) (4ea9a44)
  • Ads: Add CUEPOINTS_CHANGED event to interstitials (#6791) (9b25ff5)
  • Ads: Add support for interstitials when using src= (#6777) (59304b8)
  • Ads: Add support for X-TIMELINE-OCCUPIES (#6806) (7844fed)
  • Ads: Fill loadTime stats in interstitials (#6817) (28d3c98)
  • Ads: Fix playback of interstitials in iOS (#6776) (363989c)
  • Ads: Improve preload timing on interstitials (#6792) (4638775)
  • Ads: Improve resume times when the interstial uses two video elements (#6774) (5bfe37f)
  • Ads: Remove circular dependency (#6868) (e39defb)
  • CEA: Add CEA support for VVC/H.266 (#6912) (a3d09a9)
  • DASH: add MPD_PATCH advanced request type (#6787) (2f3a1eb)
  • Dynamic target latency (#6858) (68b4777)
  • Export getMaxSegmentEndTime and getAvailabilityTimeOffset in PresentationTimeline (#6839) (680c0f1)
  • Fix processing EXT-X-DATERANGE on live streams (#6740) (4820565)
  • Fix useNativeHlsOnSafari deprecation (#6935) (b71d0a1)
  • HLS: Add HLS interstitial support (#6761) (60e6847)
  • HLS: Add support for EXT-X-DATERANGE (#6718) (2ec6444)
  • HLS: Add support for MediaQualityInfo events (#6927) (0895e2e)
  • HLS: Add support to variable substitution in EXT-X-DATERANGE (#6751) (3b2477f)
  • HLS: Allow disable streams when the media playlist fails (#6807) (c866d7b)
  • hls: expose manifest skd uri on drmInfo (#6857) (644677c)
  • HLS: Ignore EXT-X-DATERANGE in the past (#6757) (8d7dd37)
  • HLS: Only process DATE-RANGE in AUDIO and VIDEO playlists (#6793) (a1c91ae)
  • HLS: Use PLANNED-DURATION to determine the end time (#6800) (bf5a103)
  • move live sync options into their own object (#6845) (da0bc4d)
  • MSS: Add support for MediaQualityInfo events (#6923) (767cbed)
  • Parse dvvC box for Dolby Vision support (#6866) (69fe20f)
  • preload: Add new method destroyAllPreloads (#6756) (b500799)
  • Stats: Add manifestGapCount to stats (#6804) (8a678f3), closes #6789
  • Stats: Add manifestPeriodCount to stats (#6798) (65b0b8d), closes #6788
  • Stats: add size of the manifest to player stats (#6783) (d0d5843)
  • Stats: count non fatal errors (#6781) (081afde)
  • UI: Add ad statistics button (#6827) (ea82028)
  • UI: Add new stats to context menu (#6814) (8395b91)
  • UI: Add save video frame button (#6926) (19cfbf9)
  • UI: Highlight current time when hovered on seek bar (#6870) (f46dbdc)
  • UI: Initialize interstitials by default when using UI (#6797) (31d0445)

Bug Fixes

  • getPresentationStartTimeAsDate() should return time unaffected by clock drift (#6790) (0820491)
  • selectAudioLanguage() should ignore unplayable variants (#6805) (95590ad)
  • ABR: Add a guard when variant is null (#6928) (3be95a8)
  • ABR: Fix variant choose when two variants have the same bandwidth but different resolution (#6760) (a053dd2)
  • Ads: Fix duplicate interstitials when using src= (#6784) (3949686)
  • Ads: Fix interstitial ad values when the ad is loading (#6782) (08e8111)
  • Ads: Fix skip functionality in MediaTailor (#6910) (339bab4)
  • Allow use startTime equal to 0 in HLS live streams using src= (#6843) (224c1b9)
  • Avoid filter manifest when the DRM is not initialized (#6737) (80139b0)
  • Avoid firing SEGMENT_MISSING when there is an alternative (#6881) (aed859b)
  • CEA: CEA-608 is not rendered in some cases (multiples TRAF boxes) (#6878) (a3e1fdd)
  • CMCD: Fix reset CMCD on unload (#6821) (7bea10c)
  • CS: Fix IMA integration (#6907) (9b1ef04)
  • DASH: Allow play when SegmentTimeline has a duration 0 "S" element (#6896) (3e45e66)
  • Do not export functions in getNonDefaultConfiguration (#6739) (93c6123)
  • Don't clear the buffer when disable a stream (#6931) (5dac2c0)
  • DRM: close properly webkit media key sessions (#6775) (309bd72)
  • DRM: Probe robustness only for modern PlayReady keysystem (#6851) (96f248c)
  • ensure all timelineregionenter events are fired (#6713) (76863f2), closes #6711
  • Exclude fetch polyfill from fetch plugin (#6838) (8bb2d6e)
  • Fix AC-4 codec string in MediaSourceEngine (#6780) (8fb31c1)
  • Fix audio properties detection (#6867) (e204bf6)
  • Fix continues to play a few seconds after reaching playRangeEnd (#6861) (9f5b5a5)
  • Fix green screen issue on Edge with mixed content (#6719) (d5b1863)
  • Fix initial track selection in src= when using HLS (#6803) (a65a6f8)
  • Fix normalized codec for Dolby Vision (#6865) (465a69a)
  • Fix timestampOffset when is greater than baseMediaDecodeTime (#6849) (3eb85f9)
  • Generate the correct codec for AV1 HDR (#6879) (1c863c8)
  • HLS: Allow detect mimeType from non-gap segments (#6892) (14ce038)
  • HLS: Allow disable initial variant if necessary (#6940) (3416054)
  • HLS: Avoid get basic info when the first segment is a gap (#6882) (f217344)
  • HLS: Avoid make a HEAD request of gap segments (#6880) (c90bc5f)
  • HLS: Disable stream when the media live playlist is stuck (#6900) (c555b38)
  • HLS: Fix AC-4 codec selection in HLS (#6818) (bf15b24)
  • HLS: Fix get basic info from segments (#6898) (02331e1)
  • HLS: Fix getAvailableSegment_ function (#6915) (7bbf612)
  • HLS: Fix MPEG-H codec selection in HLS (#6901) (3db66b3)
  • HLS: Fix seekRange when using delta playlist (#6758) (7bcb86e)
  • HLS: Identify EXT-X-GAP with segment tags (#6884) (4ff0859)
  • HLS: Ignore query params in the uri of EXT-X-SESSION-KEY tags (#6755) (c3e6450)
  • ignore buffered content less than 1e-4s (#6802) (d6fcf66)
  • Only request initialization segment when it's necessary (#6929) (2f762ec)
  • Prefetch: cache iterator to avoid precision issues (#6899) (b5f1ee9)
  • Prefetch: Ensure prefetched segments are continuous (#6908) (db679e0)
  • preload: Fix error handling (#6753) (9d1fe4a)
  • preload: Fix memory leak with preload feature (#6894) (88d2a02), closes #6883
  • preload: Fix preload error reporting (#6746) (95422b1)
  • preload: Fix preload load latency logic. (#6890) (878bf62), closes #6871
  • PS4: Fix serverCertificate defaulted to null (#6716) (6f84e41)
  • Support for Zenterio (#6717) (97910dc)
  • TTML: Extended subtitle codec support (#6832) (601098b), closes #6831
  • TTML: Fix timing parsing when using 1dp (#6830) (3783ffd), closes #6829
  • UI: Don't show presentation time in ads (#6752) (2e4ace5)
  • UI: Fix resolution sorting (#6742) (aaf4b63)
  • UI: UI does not update after loading a new stream (#6721) (d9242cd)
  • UI: update French translations (#6873) (620756b)
  • UI: update Polish translations (#6846) (2c610a4)
  • UI: update Portuguese translations (#6874) (1fed8b7)
  • UI: update Spanish translations (#6875) (34cc33c)

4.9.0 (2024-05-30)

Features

  • ABR: Add cacheLoadThreshold config (#6657) (f374173)
  • Add a new setting to allow remove based on channels count (#6600) (0206e5a)
  • Add config for add headers to license requests (#6650) (e7b893b)
  • add config to clear decodingInfo cache on unload (#6678) (e0eeb5b)
  • Add getNonDefaultConfiguration (#6620) (907e6ba)
  • Add response URI to BAD_HTTP_STATUS error (#6561) (ed93987)
  • Add support for probing encryption scheme support (#6506) (2dea350)
  • Ads: Implement skip ad functionality in Media Tailor (#6598) (1429763)
  • Ads: Support CS on devices that don't support multiple media elements (#6575) (520930c)
  • Check encryptionScheme against MCap (#6484) (ec29f82)
  • DASH: Add manifest.dash.enableFastSwitching config (#6500) (2fc0c93)
  • DASH: Add MPD Chaining support (#6641) (82c5149)
  • DASH: Add MPD Patch support (#5247) (d38aabf)
  • DASH: Parse and use target latency (#6683) (9060ab0)
  • DASH: Support Dolby Vision profile 8.x (HEVC) and 10.x (AV1) (#6590) (e480bf0)
  • Expose the maximum hardware resolution through probeSupport() (#6569) (5da5de2)
  • HLS: Build closed captions metadata on-the-fly (#6700) (082f897)
  • Improve default retry delay for Low Latency (#6514) (5f8e7fd)
  • Optionally force HTTP content URIs (#6649) (dda713a)
  • Parse colorGamut and use it in MCap (#6663) (329d42a)
  • Preload AES key when the key is available in EXT-X-SESSION-KEY (#6495) (57cb6ad)
  • Preload: Add detachAndSavePreload method (#6630) (0a68e93)
  • Set autoCorrectDrift to false by default for low latency streaming (#6549) (3d1c546)
  • Set maxDisabledTime to 1 by default for low latency streaming (#6617) (1cdbbe0)
  • UI: List bandwidth for duplicate resolutions (#6548) (a9d5dc3), closes #6494

Bug Fixes

  • Add timeout to fullyLoaded in src= (#6676) (64e4fd8)
  • Ads: Fix CS destroy (#6624) (0e9c2d8)
  • Ban smooth codec switching on Tizen 5 & 6 (#6686) (c541515)
  • Cast: Incorrect detection of MediaCapabilities on Chromecast (#6656) (00c5c1d)
  • CEA: Fix stream detection when the stream has not control codes (#6703) (dd5658b)
  • CEA: Ignore XDS control codes (#6702) (f69694a)
  • CEA: reset PTS on new init segment (#6606) (024cb9b)
  • CEA: reset PTS on new init segment (#6671) (bcc6791)
  • Clear preload array before awaiting destroy (#6584) (be60f40)
  • DASH: decrease memory preasure on manifest with SegmentReference by updating old initSegmentReference (#6499) (2dd85e4)
  • DASH: Firefox multi-period/multi-codec bug (#6691) (b3cacad), closes #6690
  • DASH: Fix get partial current position for LL when using SegmentTemplate@duration (#6516) (6c47f8b)
  • DASH: Fix unescape UTCTiming uris (#6501) (27109fe)
  • DASH: Fix update of SegmentTemplate with $number$ for LL (#6687) (c574be4)
  • Destroy preload managers on player destroy (#6576) (265784e)
  • Disallow Object.fromEntries in Tizen (#6634) (11272a3)
  • Do not assume 1080p Cast devices, some are 720p (#6562) (4498dcd)
  • Enable SMOOTH codec switching on Fuchsia cast devices (#6609) (f1d620c)
  • Fix COLR box parsing (#6699) (2b358c5)
  • Fix default value of liveSyncMinPlaybackRate (#6685) (a219e2f)
  • Fix deprecation warning for manifestPreprocessor that is always logged (#6496) (0873d1e)
  • Fix flac detection in Safari (#6497) (0e00d65)
  • Fix inefficient buffering behavior with negative trick play rate (#6489) (a57002b)
  • Fix init segment equality in Segment Prefetch (#6537) (ce7cef4)
  • Fix internal network filter for HEAD requests (#6660) (d816e7c)
  • Fix MCap checking when using src= (#6675) (54234f1)
  • Fix multi-codec filtering on DASH live (#6647) (9071002)
  • Fix numBytesRemaining when the request is done (#6653) (812163a)
  • Fix Opus support in Safari (#6607) (0a4c9d1)
  • Fix progress events for VOD when using vodDynamicPlaybackRate (#6688) (95d3c4a)
  • Fix seeking timeouts (#6539) (fda3c8f), closes #5202
  • Fix tXml conversion to DOMElement (#6538) (d494068)
  • Handle non existing navigator.platform string (#6517) (#6518) (f337e06)
  • HLS: Fix bad detection in some MediaPlaylist (#6608) (c5af5c7)
  • HLS: Fix HLS load when using #EXT-X-I-FRAME-STREAM-INF without resolution (#6680) (e51cd3b)
  • HLS: Fix mimetype checking when using SUPPLEMENTAL-CODECS (#6597) (5a90547), closes #6586
  • HLS: Support request byterange on media playlist detection (#6629) (d66446f)
  • Issue with compiler minifying webOS device properties (#6558) (61ce88b)
  • Make UITextDisplayer constructor backward compatible (#6532) (d564be8)
  • patch setServerCertificate() on older Tizens & webOS (#6696) (9e26166)
  • preload: Copy net filters to preload manager (#6709) (1cfb53e), closes #6698
  • Re-add setting playbackRate to 0 to control buffering state (#6546) (8232c60)
  • Remove preloaded segment when segment has network error (#6515) (2f5062a)
  • UI: Allow show same resolution with different video bandwidth (#6536) (9fb9b26)
  • UI: Fix dragging the seek bar seeks and pans the view in VR mode (#6677) (e3f85eb)
  • UI: Fix unhandled error when playing VR (#6679) (35cd411)
  • Xbox - round gap jumping values (#6695) (5b6e340)

4.8.0 (2024-04-26)

Features

  • ABR: Additional request information for ABR Managers (#6313) (6c4333c)
  • add mediaSource.addExtraFeaturesToSourceBuffer (#6362) (d0aa697), closes #6358
  • add a live sync panic mode (#6149) (65981e2)
  • add an option specifying when source buffer removals happen (#6242) (93d616e)
  • Add bytesDownloaded to stats (#6469) (d532bf4)
  • Add config to set live stream duration to Infinity (#6207) (de2957e)
  • Add disableTextPrefetch config (#6197) (202f308)
  • Add encryptionScheme support on MCap polyfill (#6482) (5a0e60a)
  • Add encryptionScheme to shaka.extern.DrmInfo (#6480) (c6c39df)
  • add includeKeys to CMCD config to allow filtering of CMCD data (#6248) (5a025fb)
  • Add Opus TS transmuxer (#6387) (3b5a71c)
  • Add preload system to player (#5897) (489b11a), closes #880
  • Add segmentData info to SegmentReference (#6370) (2bb6dbc)
  • Add support for Dolby Vision based on AVC and AV1 (#6154) (c100053)
  • Add TextDisplayer config (#6477) (de2a2d8)
  • Add unloadAndSavePreload (#6214) (0d929ca)
  • Ads: Add ability to set tracking URL for Media Tailor (#6365) (b51e661)
  • Ads: Skip play detection in some devices (#6443) (91f74e7)
  • Change default preferredKeySystems for Xbox and PS4 (#6471) (cff3d84)
  • CMCD: Add support to dl, nrr and nor parameters (#6171) (8a9f17d)
  • CMCD: Add support to rtp parameter (#6184) (038e894)
  • DASH: Add signalling the last segment number in Period (#6416) (07a3241)
  • DASH: Allow PeriodCombiner for using streams once (#6097) (5e3db78)
  • DASH: update period as part of configuration (#6419) (bdabddc)
  • demo: Add new demo asset for multi-mimeType/codec feature (#6349) (067d9ce), closes #6010
  • Demo: Show APIC(ID3) as poster for audio only streams (#6122) (291b497)
  • Detect maximum HW resolution automatically on some platforms (#6180) (278c7bc)
  • Escape html codes when getting node contents (#6198) (a1c1620)
  • Evict instead delete on prefetch (#6404) (0fc5814)
  • Expose PresentationTimeline segment availability duration through Player (#6075) (8ff5b59)
  • HLS: Add AES-256 and AES-256-CTR support (#6002) (c3380ce)
  • HLS: Add automatically keyId-key for identity format (#6308) (d251649)
  • HLS: Add ignoreManifestProgramDateTimeForTypes (#6372) (03bb463)
  • HLS: Add support for SUPPLEMENTAL-CODECS (#6155) (8d6ad7e)
  • HLS: Create segmentIndex when there is only one variant (#6383) (3ba7492)
  • Make getPlayheadTimeAsDate and getPresentationStartTimeAsDate available for VOD (#6417) (986071b)
  • Parse avcC, hvcC and dvcC boxes (#6146) (b8520ed)
  • Parse colr box (#6438) (b8b1aa6)
  • Parse vpcC and av1C boxes (#6157) (151b29c)
  • Parse XPath (#6470) (0883c32)
  • Prefer MSE HLS over native HLS in Apple platform when not encrypted (#6188) (fc38aee)
  • prefetch audio languages. (#6139) (a8ab0c8), closes #6128
  • Remove com.adobe.primetime keysystem (#6189) (47602c6)
  • Rename aes128Key to aesKey to allow aes256 in the future (#5990) (31c06ca)
  • Replace native DOM Parser with a more performant one (#6063) (7116a34)
  • SegmentIndex minimal interface (#6095) (f064811)
  • Set updateIntervalSeconds to 0.1 by default for low latency streaming (#6403) (9838622)
  • text: Add MediaSource.modifyCueCallback (#6167) (bd944d1)
  • text: Add time context to modifyCueCallback (#6252) (03633e4)
  • Trigger an event with spatial video info (#6437) (d8d96c8)
  • UI: Add config for refreshTickInSeconds (#6386) (dbdef5d)
  • UI: Allow show/hide ui programmatically (#6117) (4e599cb)
  • UI: Disable forward and rewind with arrows while seekbar not active (#6049) (c189922)
  • UI: Hide resolution overflow menu button if there's only one choice (#6004) (8649e7e)
  • UI: Separate trackLabelFormat settings for text tracks and audio tracks (#6052) (a94a602)
  • UI: UI support for VR content (#6450) (95c6a7d)
  • UI: Use the same logic to group variants into audio and quality selectors (#6069) (eabfc47)
  • UI: Use the same logic to group variants into audio and quality selectors (#6096) (c596677)
  • Update for LCEVC Integration with new features added. (#6263) (7b717e5)
  • vod dynamic playback rate buffer control (#6172) (8fc292b)
  • WebVTT: Handle badly formed VTT (#6147) (335eab0)
  • WebVTT: Remove un-needed VTT payload normalisation (#6145) (ee600c4)

Bug Fixes

  • AC-3 audio codec support on Tizen (#6166) (08cc34a)
  • Add LOAS-AAC detection in TS (#6390) (535d386)
  • Add ManagedMediaSource support in MediaSource polyfill (#6361) (12bf642)
  • add missing properties to PlayButton type (#6130) (8f0db8e)
  • Add Opus and AV1 detection in TS (#6385) (bc23fff)
  • Ads: Fix ad pausing when using customPlayheadTracker (#6444) (2d42933)
  • Ads: Fix initial ads configuration (#6176) (5b141eb)
  • Ads: Fix muting/unmuting ads won't affect video and vice versa (#6073) (01a217f)
  • Ads: Fix VMAP won't play in muted autoplay (#6046) (a8bbbce)
  • Allow by default variants without pssh in the manifest (#6144) (e1cd031)
  • APL set-top box wrongly identifies as an Apple device. (#6026) (7f5005d)
  • auto cancel trickPlay on live as specified (#6100) (45505b0)
  • avoid uiTextDisplayer.destroy crashing if called more than once (#6022) (42c235d)
  • call to load in MediaElement using src= in HLS Safari (#6478) (064c3b7)
  • Cast: Don't pause local video until the cast connection is established (#6359) (ac833da)
  • Cast: Force TS content to be transmuxed on Chromecast (#6262) (b8905bd), closes #5278
  • Change quality only when adding the last partial segment and it is fast switching (#6114) (48626f2)
  • clear listeners when resetting media source (#6449) (ab36ce7)
  • CMCD: Allow reconfigure session ID (#6177) (3537dc0)
  • CMCD: allow session id to be configured (#6192) (78c12a6)
  • CMCD: Fix CMCD for some mimetypes in src= (#6178) (33b40cf)
  • Correct playhead when seek beyond seekRange (#6304) (a6d27a9)
  • DASH: Check if periodCombiner_ exists before configuring (#5998) (bb64cb1)
  • DASH: Fix bad error on DASH DAI (#6047) (a371f43)
  • DASH: Fix PERIOD_FLATTENING_FAILED on fastswitching streams (#6113) (af12b0b)
  • DASH: Fix precision issue on some platforms (#6258) (4a0d1ca)
  • DASH: Fix support for multi-mimeType variants (#6348) (1da5da9)
  • DASH: Set delay to 0 for LL streams (#6406) (b7b2fc9)
  • DASH: Update dash manifest when minimumUpdatePeriod = 0 (#6187) (a332070)
  • DASH: Use labels to stitch streams across periods (#6121) (0de7af9)
  • Demo: Allow play MP4 and TS in legacy iOS devices (#6051) (f0751cd)
  • Demo: Fix MSS assets (#6194) (844c208)
  • demo: Remove max height of demo config tabs (#6324) (4655271)
  • Disable smooth codec switching in Edge Windows (#6384) (fdc7c6c)
  • do not append blank codec strings (#6093) (ed0aa22), closes #6092
  • Do not make LICENSE_REQUEST_FAILED fatal if other keys are successful (#6457) (a6c748a)
  • Do not use replaceAll in XPath parsing (#6473) (bf17a34)
  • don't double wrap URIs for HLS key requests (#6246) (948660b)
  • Don't retry MSE errors on startup (#6112) (de7d8d3)
  • Don't update captions when video is paused (#6474) (2f653f1)
  • ENCRYPTED CONTENT WITHOUT DRM INFO on comcast X1 due to safari blocklist (#6034) (3bf0664)
  • Fix cea608 whitespace rendering (#6329) (8cf9d59), closes #6328
  • Fix compiler issue in Mp4BoxParsers (#6312) (5badb6a)
  • Fix detection of flac support on Safari (#6250) (bb712c0), closes #6249
  • Fix detection of spatial rendering support in Cast (#6138) (4e47acd)
  • Fix DRM workaround for Xbox with Dolby Vision boxes (#6201) (d938837)
  • Fix duplicate init segment download when using startAtSegmentBoundary (#6479) (da7863d)
  • Fix ENCA box parsing (#6298) (bca9f25)
  • Fix encryptionScheme for FairPlay (#6483) (bf9787a)
  • Fix exceptions in StreamingEngine when reloading (#6466) (d570ae1), closes #6458
  • Fix gitpkg.now.sh dependencies (#6211) (62ab048)
  • fix handling of multiple CC tracks (#6076) (44cb8a2)
  • Fix HLS segment index errors and x-program-date-time errors since v4.7.4 (fd6b3d0)
  • Fix liveLatency in stats (#5982) (00c918f)
  • Fix nalu parsing in TS (#6137) (df8dbb9)
  • Fix PES rollover in TS (#6363) (e8f37f0)
  • Fix playback stuck on initial gap (#6340) (292ef20), closes #6339
  • Fix reusing region elements in UITextDisplayer (#6476) (4302a6b)
  • Fix SAR when transmuxing (#6309) (b5d69f0)
  • Fix SegmentPrefetch in some cases (#6199) (b508d48)
  • Fix support of getAllThumbnails when using DASH multi-period (#6464) (6905c74)
  • Fix transmuxer when some PES has the same pts and dts value (#5985) (165feac)
  • Fix uncaught global OBJECT_DESTROYED errors (#6460) (32d7054)
  • Fix untrusted types in MediaTailorAdManager (#5996) (2f06039)
  • Fix waiting for empty init datas (#6292) (118f47f), closes #6228
  • Fix webOS 4 & 5 utility methods (#6463) (8c549f3)
  • Fix wrong aspect ratio in transmuxed videos (#6170) (eb1fef8)
  • HLS: Avoid duplicate AES request when using the same info (#6118) (1671a3e)
  • HLS: Avoid duplicate AES requests (#6399) (ea740ba)
  • HLS: Ban unsupported combinations of SAMPLE-AES encryption (#6295) (edbac36)
  • HLS: Fix bad init segment request with byterange when using media playlist (#6297) (6a8f972)
  • HLS: Fix bad warning when playing HLS-AES128 (#6434) (17df192)
  • HLS: Fix clear init segment mapping (#6000) (8a44111)
  • HLS: Fix IAMF codec selection in HLS (#6389) (c59a3b8)
  • HLS: Fix labelling of captions in Safari (#6426) (35dd543)
  • HLS: Fix playback of muxed TS content in Safari (#6045) (1b675cb)
  • HLS: Fix SAMPLE-AES playback (#6402) (af88a32)
  • HLS: Fix variant synchronization in HLS after selectVariantTrack (#5984) (8da033f)
  • HLS: Fix VVC codec selection in HLS (#6156) (701ec9b)
  • HLS: getPlayheadTimeAsDate() differs from X-EXT-PROGRAM-DATE-TIME (#6059) (776b69d)
  • HLS: getPlayheadTimeAsDate() differs from X-EXT-PROGRAM-DATE-TIME (#6371) (c615cf4)
  • HLS: Live recovery after disconnects (#6048) (8476631)
  • HLS: Only offset segment ref times when needed w/ EXT-X-MEDIA-SEQUENCE (#6378) (bca6252)
  • HLS: Reset textSequenceModeOffset on discontinuity (#6388) (966302d)
  • HLS: Set the bandwidth correctly for audio/video-only variants (#6165) (658386b)
  • Improved HEAD request fail test when fallback-ing to GET request (#6044) (b45877d)
  • Include text bandwidth in stats (#6109) (4823dfe)
  • Install by default shaka.polyfill.PatchedMediaKeysApple when there is no unprefixed EME support (#6053) (5b5b2ce)
  • log prefetch miss for missing segments (#6012) (a70136d)
  • Looser tolerance for ending trick play at edge of seek range. (#6422) (9f603ad), closes #6421
  • offline: Fix server certificate error when trying to delete stored content (#6080) (e1eb003)
  • offline: Fix store persistent licenses with drm info in the pssh (#6143) (5acc773)
  • player Dropping Variant (better codec available) when it should not (#6163) (07ebdb1)
  • preload: Fix load interruption (#6271) (d795a00), closes #6225
  • preload: Fix timing of call to stopQueuingLatePhaseQueuedOperations (#6238) (fd57e7f), closes #6225
  • preload: Only start preload if manager exists (#6222) (36b7367)
  • Prevent license requests for unplayable variants (#6204) (cac1fd0)
  • Provide a fallback to GET request when HEAD request fails (#5986) (1af93e6)
  • Reject Opus encrypted on Firefox Android (#6115) (e692d68)
  • Reject TS content on all platforms and transmux always (#6382) (7e32636)
  • Reset to default playback rate on release playback rate controller (#6089) (23fb2f5)
  • stay paused after codec switch (#6108) (e48438f)
  • text roles being combined incorrectly in some multiperiod cases (#6055) (b463e39), closes #6054
  • transmuxer: Support raw AAC with TS extension (#6360) (7c6e846)
  • TTML: Clip to video when extent is not present (#6086) (2862228)
  • TTML: Fix trim surrounding spaces with xml:space="default" (#6395) (bcedec3)
  • tXml: html unescape node attributes with urls (#6267) (67cd2dd)
  • UI: Disable PiP on casting (#6110) (6312fa3)
  • UI: Fix disable PiP when using documentPictureInPicture (#5992) (6229284)
  • UI: Fix keyboard navigation of volume bar on Firefox (#5981) (90f1d61)
  • UI: Fix replay button when the post-roll is running using CS (#6072) (6b7a02a)
  • UI: Fix the scrolling when scrolling from the laterals when seekOnTaps is enabled (#6050) (df05692)
  • UI: Update the playbackrate on loaded event (#6090) (9b9ff16)
  • VTT: fix setting textShadow when multiple CSS classes provided (#6287) (d0e64d7)
  • WebVTT: Fix multiline colored VTT subtitles (#6394) (25427c7)
  • WebVTT: Remove rollover logic because we always transmux TS (#6397) (286126e)
  • When disconnecting from chromecast, subtitles are turned off (#6103) (d4cd66d)

Performance Improvements

  • Cast: memoize/cache canDisplayType results to reduce startup latency (#6367) (30285b2)
  • DRM: pass preferredKeySystems to filterManifest() (#6468) (c9b61fe)
  • HLS: do not filter all tags to get the first tag (#6088) (9802f65)
  • Improve performance of addThumbnailsTrack (#6067) (3a14047)
  • mp4generator: stop nesting concat in methods (#6041) (f52dd2b)
  • Optimize init segment reference comparison for common case (#6014) (58d946e)
  • PeriodCombiner improvements (#6005) (4022788)
  • transmuxer: Improve performance on video transmuxing (#6364) (d0c3d9a)
  • transmuxer: various performance improvements (#6003) (cd326e2)
  • ts parser O(n^2) performance bug. (#6035) (dd50028)
  • WebVTT: Improve parsing time for unstyled payloads (#6066) (9462e12)

Reverts

  • Add chapter titles and dividers on the seek bar (#6208) (32f8dc5)
  • Fix potential AV sync issues after seek or adaptation (#6435) (73117f0), closes #5785 #4589
  • Install by default shaka.polyfill.PatchedMediaKeysApple when there is no unprefixed EME support (#6068) (3ce4399)

4.7.0 (2023-12-04)

Features

  • Add config to allow Media Source recoveries (#5938) (0deb25b)
  • Add config to prefer spatial audio (#5963) (90bc6a7)
  • add preferred video label (#5948) (503327a)
  • Add support for Common Media Server Data (CMSD) (#5900) (966b910)
  • Avoid streams which cannot fit into the browser's MediaSource quota (#5937) (c496aaf)
  • DASH: Add support for location in Content Steering (#5914) (8f453c2)
  • DASH: Handle mixed-codec variants. (#5950) (24e3255), closes #5961
  • Demo: Add field for chapters URL when adding custom content (#5934) (d1bc83d)
  • Demo: Add field for text URL when adding custom content (#5953) (5c4a3a2)
  • Demo: Use MediaSession action handler in the demo (#5927) (078ab36)
  • expose CEA708 window position in the cue's region (#5924) (2a524bf)
  • Fix Media Source recoveries in some cases (#5966) (b2a880b)
  • Improve npm package size (#5955) (ca28063)
  • Set baseDelay to 100 by default for low latency streaming (#5926) (515a4ab)
  • UI: Add double tap to forward/rewind in the video (#5943) (918c30b)
  • UI: Add more keyboard shortcuts (#5942) (2fcc2f8)
  • UI: Hide language and resolution overflow menu button if there's only one choice (#5928) (628bb63)

Bug Fixes

  • CEA: Fix positioning in CEA-608 (#5925) (83f6f53)
  • DASH: Fix bad url when specify using a full WebVTT with BaseURL (#5954) (ba85ece)
  • DASH: Fix false redirect detection (#5910) (3a68623)
  • DASH: SegmentTemplate@media not updated after change in manifest (#5899) (30de177)
  • Demo: Allow configure some missing configs (#5918) (c62e38c)
  • Demo: Pressing "Edit" button unstores custom asset, but does not update "stored" button (#5936) (82b958f)
  • Fix color detection in text utils (#5970) (68903e1)
  • Fix ESDS box parser (#5952) (7683892)
  • Fix init segment comparison (#5920) (82ab893)
  • Fix language comparison in addTextTrackAsync (#5904) (f708318)
  • Fix reset Media Source when using mixed codecs in different containers (#5949) (419b1c3)
  • Fix trackschanged event not fired after a license request is denied for some tracks (#5962) (4eba182)
  • Fix transmuxer when sample has no video data (#5933) (6102060)
  • HLS: Fix m4s extension detection (#5951) (d89945f)
  • HLS: Provide a fallback to GET request when HEAD request fails (#5964) (fb5a833)
  • HLS: Recognize CEA subtitles when CLOSED-CAPTIONS attribute is missing (#5916) (58d4597)
  • Only append to the buffer init segments when the segment is independent (#5921) (09f2a2e)
  • Properly size region anchor from LINE units (#5941) (8b6602e)
  • UI: Correctly display video time and duration for VOD (#5929) (00ff864)
  • Unmask errors on LL (#5908) (c898364)
  • WebVTT: Fix support for line vertical alignment (#5945) (9f5e461)

4.6.0 (2023-11-16)

Features

  • Add a stub text display class (#5804) (#5806) (700d181)
  • Add config to ignore duplicate init data (#5853) (acf23f8)
  • Add partial info to shaka.media.SegmentReference (#5822) (766b0a1)
  • Add support for WPE based browsers in RDK set-top boxes (#5852) (2eedb12)
  • Add thumbnails support in src= (#5802) (88e4cd4)
  • Add video progress events (#5850) (c3beee6)
  • Allow prefetch init segments (#5825) (3f392c0)
  • DASH: Add initial support for "urn:mpeg:dash:ssr:2023" (#5762) (508e5cf)
  • DASH: Add support for Content Steering (#5710) (42f491f)
  • DASH: Add support for Content Steering in AdaptationSet BaseURL (#5884) (1c6f1fa)
  • DASH: Add support for minimum values in service descriptions (#5844) (5f94a62)
  • Demo: Add CBCS content to demo (#5862) (9777c52)
  • Demo: Add Content Steering assets (#5888) (8e0ee8a)
  • demo: Add icon for new demo asset (#5866) (f7448b7)
  • Demo: Add new 3D movie stream from Apple (#5872) (a5adf31)
  • HLS: Add new config for allow LL-HLS byterange optimization (#5877) (3e91e8e)
  • HLS: Add new config to get codecs from media segment for playlists without CODECS attribute (#5772) (80630bb), closes #5769
  • HLS: Add support for Content Steering (#5881) (b75ca1d)
  • HLS: Add support for mjpg I-Frames playlist (#5856) (801131f)
  • HLS: Add support for QUERYPARAM variable type in #EXT-X-DEFINE (#5801) (fda3189)
  • HLS: Add support for REQ-VIDEO-LAYOUT (#5809) (81fc82b)
  • HLS: Build closed captions metadata for media playlist on-the-fly. (#5811) (754bfac)
  • HLS: Improve the stream info when EXT-X-MEDIA has not uri (#5886) (b5b6a0f)
  • ID3: decode APIC frames (#5857) (6a862d2)
  • Improve latency in LL DASH streams (#5820) (20b4abf)
  • net: Add shaka.net.NetworkingUtils (#5756) (be96fd0)
  • Stop setting playbackRate to 0 to control buffering state (#5696) (6156dce)
  • thumbnails: Add Player.getAllThumbnails (#5783) (9f7576b), closes #5781
  • UI: Add chapter titles and dividers on the seek bar (#5863) (c1198df)
  • UI: Bucketize resolution names in the UI (#5816) (b56b9df)
  • UI: Display frame rates in the quality selector (#5753) (3096378)
  • UI: Show the channel count in the audio selector (#5868) (1681acd)
  • Use ManagedMediaSource when available (#5683) (01da5fa)

Bug Fixes

  • ABR: Fix HLS playback after internet connection is restored (#5879) (f5777e5)
  • AD_STARTED fires before ad started with AWS Media Tailor (#5855) (b39f334)
  • Add Orange platform to requiresEncryptionInfoInAllInitSegments (#5895) (9d23a87)
  • Allow get seekRange on manifestparsed event in some cases (#5892) (606d693)
  • Allow parseXmlString when createNodeIterator is not available (#5805) (ea7764d)
  • ban new Uint16Array(buffer) (#5838) (155befb)
  • CEA decoder should return early if packet is not large enough (#5893) (9a694b5)
  • DASH: Fix bad url when specify MPD BaseURL and AdaptationSet BaseURL (#5883) (5f891d9)
  • DASH: Fix manifest update time for Live manifests (#5763) (65449d1)
  • DASH: Fix manifest update time for LL-DASH (#5736) (8b7141f)
  • dash: fix race condition in segment template (#5842) (8d2b657)
  • DASH: Handle minimumUpdatePeriod=0 with urn:mpeg:dash:event:2012 (EMSG) (#5823) (f8438df)
  • DASH: Segments being fetched out of the range of the timeline (#5889) (d8aa24f)
  • Dispatch streamDataCallback correctly in SegmentPrefetchOperation (#5764) (bab8153)
  • Fix bug with live start time (#5835) (577d141)
  • Fix chooseCodecsAndFilterManifest for similar frameRate (#5817) (8ff204d)
  • Fix chooseCodecsAndFilterManifest for some HLS manifest (#5800) (51870e9)
  • Fix converts legacy avc1 codec strings on transmuxer (#5790) (8944ca9)
  • Fix crash while playing HLS AES 128 streams (#5830) (64b12c1)
  • Fix DRM workaround for Tizen and Xbox with ac-4 boxes (#5812) (72a5de3)
  • Fix incompatible codec is selected in Windows Edge for Widevine (#5831) (5aa3597)
  • Fix mangled property in compiled mode in Content Steering (#5887) (0e62b8e)
  • Fix missing audio streams (#5869) (d6aab6b)
  • Fix nalu parsing and improve performance in the transmuxer (#5846) (ae423b4)
  • Fix selectAudioLanguage using channelsCount param (#5875) (c830a99)
  • Fix variant filtering by preferredAudioChannelCount (#5859) (51edeae)
  • For text content is not necessary codec switching (#5731) (bdbaae5)
  • hisense: set stallSkip to 0 for HiSense devices (#5833) (c457db8)
  • HLS: Fix accessibilityPurpose detection (#5840) (ceaa9fa)
  • HLS: Fix bad detection in some MediaPlaylist (#5878) (5e797bd)
  • HLS: Fix decryption of AES-128 (#5871) (da38b36)
  • HLS: Fix init segment when EXT-X-MAP is preceded by EXT-X-BYTERANGE (#5732) (24e5de3)
  • HLS: Fix kind detection for 'captions' text tracks (#5819) (8e442b3)
  • HLS: Fix LL-HLS with byterange optimization using segments mode (#5876) (c79e5a5)
  • HLS: Fix url management in HLS (#5722) (8deab71)
  • Offline: Fix download of some HLS manifests (#5861) (c2c8320)
  • offline: Fix server certificate error when trying to store content (#5848) (f4a35f2)
  • TTML: Fix support of urls in smpte:backgroundImage (#5851) (fa93d53)
  • UI: Console error on remote.cancelwatchavailability() method in remote playback feature (#5793) (b66a8e8)
  • UI: Fix text selector when the trackLabelFormat is set to LABEL (#5751) (bba0651)
  • UITextDisplayer font-family is overridden by UI's Roboto font (#5829) (cb8a5ed)
  • WebVTT: Fix wrong writing-mode in nested cues (#5807) (ea7d83e)

Performance Improvements

  • dash: improve readability and reduce number of loops in dash parser (#5768) (17a4363)
  • DASH: PeriodCombiner optimisations (#5837) (ade93b0)
  • DASH: reduce looping and remove chaining awaits in period (#5774) (be755e8)
  • HLS: Improve detection of all partial segments (#5761) (2a35579)
  • Improve transmuxer performance (#5789) (aa41e87)
  • manifest: avoid unnecessary looping in uri resolver (#5773) (4d5caee)
  • simplify and improve performance of parsing initData when deduping (#5775) (041a08f)
  • utils: use WeakSet to track object references (#5791) (daa9d1f)
  • Xbox: drop incompatible variants for XBOX early (#5777) (170a40c)

4.5.0 (2023-10-04)

Features

  • ABR: Allow some downscale when use restrictToElementSize or restrictToScreenSize (#5631) (cad1ac8)
  • Add getBandwidthEstimate to the player interface for custom manifest parser (#5714) (1271a18)
  • Add H.265 TS transmuxer (#5611) (3c2c095)
  • Add KeyStatusChanged and UpdateState events (#5695) (2f97fa7)
  • Add manifestupdated event (#5602) (b16d2f0)
  • Add TS transmuxer for muxed content (#5571) (7df3321)
  • Ads: Add support for AWS Elemental MediaTailor (#5679) (cf5a72b)
  • CEA: Parse CEA from TS with H.265 (#5610) (54eaf63)
  • DASH: Add new config to prevent mixing of audio representations from different adaptation sets (#5620) (0bbb470)
  • DASH: Add support for AES-128 (#5656) (96ae7f2)
  • DASH: Allow the playback of DASH with $time$ and large timescale value (#5621) (4a1c96e)
  • demo: Added icons for new demo assets (#5691) (12400b1)
  • Enable codec switching (#5470) (0078137)
  • HLS: Get the correct video info for TS segments with H.265 (#5616) (e191c75)
  • HLS: Take into account the parsing time for manifest schedule update (#5678) (f7e33a3)
  • Migration of LCEVC DIL (Decoder Integration Layer) to LCEVC Dec (Decoder) (#5459) (c1e18d3)
  • TTML: Add support to tts:ruby (#5645) (9fd220e)
  • TTML: Add support to tts:textCombine (#5644) (73a3bd9)
  • UI: Add config to preferDocumentPictureInPicture (#5690) (025502a)
  • UI: Add PiP function to controls (#5629) (b422847)
  • UI: Add remote button with RemotePlayback API (#5650) (1ef5ae0)
  • WebVTT: Add support to ruby, rt, rp html tags (#5642) (76ffd38)
  • WebVTT: Add support to text-combine-upright (#5633) (a2f253f)

Bug Fixes

  • Allow PID change in TsParser (#5681) (d9b49d9)
  • CMCD: Fix CMCD for some mimetypes in src= (#5699) (e2c32c5)
  • com.apple.fps should work with the default initDataTransform when using legacy Apple Media Keys (#5603) (76fdda6)
  • Compute correctly the positionAlign in UITextDisplayer (#5630) (3a2dbc3)
  • DASH: Fix bigint implementation (#5707) (45009d2)
  • DASH: Fix race condition error while switching audio tracks (#5619) (29d9a10)
  • Demo: Allow com.apple.fps.1_0 in the custom DRM System field (#5600) (ab86000)
  • Demo: Fix url of "Low Latency HLS Live" asset (#5708) (146d3ec)
  • Fix compiled-mode error formatting (#5623) (a19912e)
  • Fix creation of new Stream object for each manifest request in DASH Live when using CEA (#5674) (0a8b519)
  • Fix MediaSourceEngine reset operation (#5576) (9f5e91f)
  • Fix Mp4Generator (#5566) (effafbc)
  • Fix NALU parsing in some HLS muxed live streams (#5688) (756a576)
  • Fix PES parsing (#5559) (5c6ab9e)
  • fix preferred track selection on Safari (#5601) (d021d6f)
  • Fix some properties on the shaka.text.Cue that are mangled (#5673) (d2b7cb2)
  • Fix transmuxed audio timestamps (#5595) (0260aef)
  • Fix transmuxing of muxed content (#5686) (f20d50a)
  • Fix TS transmuxer when the main content is muxed (#5575) (65b3037)
  • Fix unreleased stack overflow on statechanged (#5712) (ebacf32)
  • HLS: Allow audio groups on audio-only content (#5578) (3cbc444)
  • HLS: Fix audio and video out of sync (#5658) (4cc4143)
  • HLS: Fix display CEA-708 in HLS (#5694) (2097193)
  • HLS: Fix presentation delay for small live playlists (eg: 3-4 segments) (#5687) (caef5a4)
  • HLS: Get the correct video codec for TS segments (#5598) (1135115)
  • HLS: Show WebVTT subtitles with X-TIMESTAMP-MAP in segments mode (#5643) (bd636d4)
  • HLS: Skip segments without duration and without partial segments (#5705) (f53d50d)
  • HLS: Support AES-128 in init segment according the RFC (#5677) (806d91a)
  • Improve TsParse to avoid parsing errors (#5615) (5fa8b42)
  • Prevent codecs override in the transmuxer (#5568) (66c625f)
  • Remove debugging code on Simple Text (#5582) (991130a)
  • seeking in segment timeline returns incorrect index (#5716) (c02ccee), closes #5664
  • TTML: Fix wrong writing-mode in nested cues (#5646) (3a4f108)
  • UI: Fix broken language names on Google TV (#5613) (fc93292)
  • WebVTT: Fix support for line:0 vertical alignment (#5632) (eed393f)
  • WebVTT: Fix text displayed out of picture and with overlapping lines (#5662) (6975be9), closes #5661
  • WebVTT: Fix wrong writing-mode in nested cues (#5641) (56a4cea)

Performance Improvements

4.4.0 (2023-08-30)

Features

  • ABR: Abr improvement config (#5400) (b51ee6e)
  • Add a Mp4Generator (#5127) (d475a73)
  • Add AAC silent frame getter (#5557) (933f039)
  • Add AAC transmuxer (#5240) (00d3a45)
  • Add AC-3 and EC-3 support in Mp4Generator (#5235) (28d18ad)
  • Add AC-3 detection in TS (#4931) (48c30bc)
  • Add AC3 transmuxer (#5297) (6f83997)
  • Add EC-3 detection in TS (#5144) (24a3b7d)
  • Add EC3 transmuxer (#5352) (7d24e14)
  • Add ExpressPlay FairPlay util (#4926) (7fa40fd)
  • add feature-flag to insert fake encryption in init segments on broken platforms (#5561) (f14f295)
  • Add getManifestType method (#5021) (c7c5e94)
  • Add liveSync configuration to catch up on live streams (#5304) (db44dc8)
  • Add missing export in TsParser (#5145) (412a7e8)
  • Add MP3 transmuxer (#5208) (82e905b)
  • add Occitan locale (#4900) (68486a3)
  • Add originalLanguage to the Track structure (#5409) (f53349f)
  • Add preferredAudioLabel to PlayerConfiguration (#4763) (aadecd6)
  • Add preferredVideoHdrLevel config. (#5370) (2f511a2)
  • Add safeMargin as a parameter of the player selectAudioLanguage method (#5316) (e4a4138)
  • Add support for AC-3 and EC-3 audio in DVB streams (#5484) (9bd559b)
  • Add support for changing codecs in MediaSourceEngine (#5217) (464f33c)
  • Add support for Document Picture-in-Picture (#4969) (3828fd6)
  • Add support to old EMSG schemeId for ID3 (#5320) (cd9ee09)
  • Add support to streamDataCallback when using prefetch (#5310) (6104b57)
  • Add TS transmuxer (#5386) (eec25b2)
  • Ads: Add ads config (#5085) (dfe263a)
  • Ads: Add control AdsRenderingSettings (#5536) (d37143e)
  • ads: Add getPodIndex to CS and SS ads (#5524) (65cf077)
  • ads: Add new methods to Ads (#5107) (2b33315)
  • Ads: Allow multiple calls to requestAds in CS (#5542) (837e0fb)
  • Ads: Allow use a custom playhead tracker in CS (#5543) (362f03f)
  • Ads: Disable custom playback on iOS 10+ browsers for client-side ads (29e022e)
  • ads: Dispatch a player event for client-side ad errors (#5045) (673b7fc)
  • Allow custom plugins for transmuxing (#4854) (fac721d)
  • Allow generate muxed content with Mp4Generator (#5555) (1112d1d)
  • Allow generate segments with Mp4Generator (#5185) (8da971f)
  • allow reuse of persistent license sessions (#4461) (cc97da1)
  • Allow VTT files with erroneous linebreaks (#2394) (9b1c614), closes #2358
  • Cache mediaCapabilities.decodingInfo results (#4789) (b7781f0), closes #4775
  • Caching and other efficiency improvements for mcap polyfill (#4708) (884c4ca), closes #4574
  • cea: Add CEA parser for TS (#4697) (70fad8d)
  • CEA: Add support to vertical position in CEA-608 (#5531) (47224ff)
  • Config to require a minimum HDCP version (#4883) (61613cf)
  • Convert CEA parsers to plugins (#5195) (7bda65d)
  • DASH: Achieve better latency in LL streams (#5291) (f4bcc87)
  • DASH: Add support for <dashif:Laurl> (#4849) (b441518), closes #4748
  • DASH: Add support for service descriptions (#5394) (693abd5)
  • DASH: Expose accessibility purpose in track (#5216) (654a028), closes #5211
  • dash: Improve DASH SegmentTemplate performance with on-demand segment references (#5061) (f1c5a1c)
  • DASH: Remove MIN_UPDATEPERIOD to achieve better latency in Live (#5286) (1515b7a)
  • Demo: Add Low Latency filter in demo page (#5392) (c378e10)
  • Demo: Add MSS Playready asset (#5485) (89ca242)
  • demo: Improve bug report button in demo (#5510) (4329d79), closes #5056
  • DRM: use preferredKeySystems to reduce requestMediaKeySystemAccess() calls (#5391) (6d75d89)
  • Enable variant failover for BAD_HTTP_STATUS and TIMEOUT (#4769) (b46012d)
  • export period combiner (#5324) (e9ba2f4), closes #5307
  • HLS: Add HLS config to ignore manifest timestamps when in segments mode (#5103) (4d487e4)
  • HLS: Add HLS support for non-sequence mode (#4623) (2b50b88)
  • HLS: Add support to _HLS_msn query param in LL streams (#5262) (2ece86f)
  • HLS: Add support to _HLS_part query param in LL streams (#5265) (ec8804d)
  • HLS: Add support to blocking playlist reload by adding the CAN-BLOCK-RELOAD=YES (#5279) (090554b)
  • HLS: Add support to BYTERANGE-LENGTH in EXT-X-PRELOAD-HINT (#5267) (ea97a5a)
  • HLS: Add support to HLS-AES128 low latency (#4982) (07787a8)
  • HLS: Add support to HOLD-BACK in EXT-X-SERVER-CONTROL (#5281) (bb2c06a)
  • HLS: Allow delivery directives in Live streams (#5292) (aedf634)
  • HLS: Fix update time when using LL-HLS and byterange optimization (#5495) (bba7537)
  • HLS: Get resolution from TS when load a Media Playlist (#5058) (42a9f96)
  • HLS: Improve detection of basic info from Media Playlist (#4809) (d465942)
  • HLS: Improve HLS parsing time (#5264) (2ca7d0b)
  • HLS: Improve Low Latency performance in HLS (#4952) (5514385)
  • HLS: Optimization of LL-HLS with byterange (#5319) (9e6655a)
  • HLS: Optimize LL-HLS with byterange (#5342) (53d6378)
  • HLS: Parse #EXT-X-BITRATE (#5550) (123183d)
  • HLS: Parse SAMPLE-RATE attribute (#5375) (5af34ad)
  • HLS: Poll HLS playlists using last segment duration (#4779) (1ba3806), closes #4771
  • HLS: Support byterange optimization on servers with support to blocking playlist reload (#5347) (263a17b)
  • Improve live latency on load (#5268) (236dacb)
  • Improve parsing time in DASH and HLS (#5261) (f1e35fd)
  • Improve performance of multi-period DASH parsing (#5350) (5b0b429)
  • Improve performance of setStreamProperties on low-end devices (#5380) (ddbc249)
  • Improve sequence mode start time (#5326) (80cacf6)
  • Include stack trace in errors dispatched from production builds (#5407) (7d049eb), closes #5406
  • logs: Add extra logging for 3015 errors (#4932) (67a2451)
  • Make gap jump timer time configurable (#5525) (97b7412)
  • Move forceTransmux from streaming to mediasource config (#4783) (b491a6b)
  • MSS: Add support for Microsoft Smooth Streaming (VOD only) (#5002) (f80bf20)
  • MSS: Fix MSS PlayReady support (#5486) (1dd9809)
  • net: Added advanced type to filters (#5006) (fbce38a), closes #4966
  • Optimize appendBuffer operations for init segments (#5377) (68f7a0e)
  • Parses a PRFT Box, with a loss of precision beyond 53 bits (#5354) (a797651)
  • Parses a TFDT Box, with a loss of precision beyond 53 bits (#5329) (db73e1f)
  • Parses a TFDT Box, with a loss of precision beyond 53 bits (#5501) (c6e8449)
  • Raise fatal error on linear manifest request update failure (#5138) (3ff7ba3)
  • Set segmentPrefetchLimit to 2 by default for low latency streaming (#5275) (62f24d2)
  • SRT: Support stylized payload in SRT format (#5500) (963cf61)
  • Support customizing clearBuffers and safeMargin when select variants by label (#4770) (c724625)
  • Support Parallel Segment Fetching (#4784) (de6abde)
  • Support private-use language tags (#5223) (fa041d7)
  • UI: Add HDR label to resolution when the track is HDR (#5373) (3f9eade)
  • UI: Add PageUp and PageDown to UI seek bar (#5519) (8e22a50)
  • UI: Add thumbnails to the UI (#5502) (c483975)
  • UI: Allow customizing FullScreen element (#4963) (c471d23)
  • UI: Remove copyStyleSheets (#5273) (fe43ed3)
  • UI: Use Intl.DisplayNames to show the language name (#5365) (35cb193)
  • Use local assets for transmuxer tests (#5549) (a75e776)
  • Use shaka.text.Cue everywhere instead of shaka.extern.Cue (#5529) (62156ba)
  • utils: Export shaka.util.StreamUtils.meetsRestrictions (#5100) (3543e57)
  • WebVTT: Add support to auto position (#5532) (a8f7c41)
  • webvtt: webvtt colors output (#4954) (ed7a736)

Bug Fixes

  • config.streaming.preferNativeHls only applies to HLS streams (#5167) (bf4b4a5), closes #5166
  • add MIME type for HTML5 tracks (#5452) (4f1a119)
  • Add missing AdvancedRequestType in some requests (#5113) (b60bf16)
  • Add missing StreamInfo value in AAC transmuxer (#5260) (5175e88)
  • Add mux.js to support.html (#4923) (d9fa4eb)
  • Adds missing CMCD params to some http requests (#5072) (fe38e45), closes #5067 #5094
  • ads: Fix ads starting muted behavior (#5153) (211624f), closes #5125
  • Ads: Fix CS volume ad (#5016) (492b5f3)
  • Ads: Fix SS configure (#5155) (49ed4ab)
  • Ads: Fix usage of EventManager on CS (#5017) (541badc)
  • Ads: Fix usage of EventManager on CS (#5084) (122f5f3)
  • ads: Fix VMAP ads stay muted on muted autoplay (#4995) (d074afc)
  • Ads: Initialize correctly the IMA ads manager (#5541) (4428adf)
  • Allow the playback of TS without mux.js (#5041) (0b785f7)
  • Avoid unnecessary timestampOffset updates when using HLS segments mode (#5270) (9059944)
  • Caption can not turn off at iOS Safari (#4978) (9d2c325)
  • cast: Added existence checks for MediaDecodingConfig.{audio|video} in decodingInfo(). (#4796) (36db83d)
  • cast: Use cast platform APIs in MediaCapabilties polyfill (#4727) (5d6f56a)
  • CEA 608 captions not work with H.265 video streams (#5252) (f0ee16b), closes #5251
  • cea: Fix MAX_ROWS in CEA-708 window (#4757) (e89eeb6)
  • cea: Fix not rendering CEA-608 on encrypted mp4 segments (#4756) (d600109)
  • chapters: removed duplicate chapters by id (#4810) (151bdda)
  • cmcd not applying configuration changes (#5119) (58aa45f)
  • Correct default initDataTransform for legacy Apple Media Keys (#4797) (67a5d56)
  • DASH: Avoid "Possible encoding problem detected!" when appending chunked data (#5376) (2071e3a)
  • DASH: Fix bufferBehind with image tracks regression (#5210) (2d9f566)
  • DASH: Fix dynamic manifests from edgeware (#4914) (056588b)
  • DASH: Fix seeking on multiperiod content after variant change (#5110) (3b0f013)
  • DASH: Ignore minBufferTime when using LL (#5285) (fea46d8)
  • Default language to 'und' for native tracks (#5464) (8cd3e2d)
  • Demo: Allow enable LL only with Low Latency Mode config (#5266) (70823f9)
  • Demo: Allow manifest type for DAI custom assets (#4977) (1e50630)
  • Demo: Fix deployment of codem-isoboxer in the Demo (#5257) (03b39f7)
  • Demo: Fix error link width to avoid overlap with close button (#5309) (08317d0)
  • demo: Fix native controls pointer events stolen by LCEVC canvas (#5065) (6508f40)
  • Demo: Show correctly external text in the Demo (#5521) (e2bf1de)
  • Demo: Trim custom manifestUri to avoid copy-paste errors (#5378) (0e32256)
  • Dispatch all emsg boxes, even if they are ID3 (#5428) (25ecfa7)
  • docs: fix player configuration code in drm config tutorial (#5359) (5487236)
  • Document Picture-in-Picture: Use width/height instead of initialAspectRatio (#5224) (0da63a0)
  • don't use navigator.connection event listener if it isn't implemented (#5157) (fb68306), closes #4542
  • DRM: broken keySystemsMapping due to multiple references of drmInfo (#5388) (6513ac0)
  • DrmEngine exception thrown when using FairPlay (#4971) (eebf18c)
  • exclude "future" segments from presentation timeline auto correct drift calculations (#4945) (ea6774a), closes #4944
  • Explicitly specify @externs in transmuxer externs. (#4999) (ef8078a)
  • Failed to set 'currentTime' property on 'HTMLMediaElement' on a Hisense TV (#4962) (5d93b8f)
  • Fallback to isTypeSupported when cast namespace is undefined (#5012) (50d0645)
  • Fire correctly MIN_HDCP_VERSION_NOT_MATCH error (2ae5a99)
  • Fix bufferBehind setting broken by image segments (#4718) (cd1b7c0), closes #4717
  • Fix buffering on the end of MSS streams (#5196) (a8e3c9a)
  • Fix captions from MP4s with multiple trun boxes (#5422) (bccfdbc), closes #5328
  • Fix compiler error on static use of "this" (#4699) (b06fd6a)
  • Fix DASH rejection of streams with ColourPrimaries and MatrixCoefficients (#5345) (226ffa9)
  • Fix DRM workaround for Tizen and Xbox with hvc1/hev1 boxes (#4743) (a61c084), closes #4742
  • Fix duplicate updates in StreamingEngine (#4840) (224207b), closes #4831
  • Fix duration error when HLS goes from LIVE to VOD (#5001) (1aee989)
  • Fix error when network status changes on src= playbacks (#5305) (07ca8f5)
  • Fix exception enabling captions on HLS (#4894) (b7b2a7c), closes #4889
  • Fix exception on Tizen due to unsupported Array method (#5429) (8ff2917)
  • Fix exiting fullscreen on Safari (#5439) (ed93a0c), closes #5437
  • Fix failure when drivers lag behind browser (#5423) (a909ed4)
  • Fix fetch plugin with old implementations (#5091) (36bcc37)
  • Fix flattenedCues in WebVttGenerator (#4867) (15232dd)
  • Fix gap jump at start when first jump lands in a new gap (f56d49b)
  • Fix handling of CC when switching between codecs (#5160) (6937325)
  • Fix HEAD request exception (#5194) (330f04b), closes #5164
  • Fix implementation of AAC and MP3 transmuxers (#5296) (df18f10)
  • Fix legacy codec support by rewriting codec metadata (#4858) (e351395)
  • Fix media source duration when using sequence mode (#4848) (1762267)
  • Fix MediaCapabilities polyfill on Hisense (#4927) (6a48cfe)
  • Fix memory leak on SimpleAbrManager (#5478) (e8f3ed0)
  • Fix missing originalUri in response filters (#5114) (8bffb99)
  • Fix parsing error on Chromecast when resyncing HLS (#4869) (afca6af), closes #4589
  • Fix playRangeEnd does not work with HLS streams (#5494) (1775672)
  • Fix potential AV sync issues after seek or adaptation (#4886) (c42565c), closes #4589
  • Fix potential duplicate segments, AV sync issues (#4884) (52f4b63), closes #4589
  • Fix race that allows multiple text streams to be loaded (#5129) (2ae9095)
  • Fix rare exception after StreamingEngine teardown (#4830) (234beef), closes #4813
  • Fix selectVariantsByLabel using src= (#5154) (e7d94f7)
  • Fix subtitles not added to DOM region (#4733) (4081434), closes #4680
  • Fix temporarily disable streams on network error (#5057) (fdc5cb1), closes #5055 #5150
  • Fix timestamp offset for ID3 on DAI-HLS (#4696) (386a28a)
  • Fix usage of WebCrypto in old browsers (#4711) (9afce3b)
  • Fix video/mp2t mimetype conversion. (#5039) (2d0e4cc)
  • Fix WebVTT parser failure on REGION blocks (#4915) (da84a2c)
  • gap jumping when gap exists at start position (#5384) (6c71b0e)
  • Get the correct timescale when there are two trak boxes (#5327) (022f6b9)
  • gettting maxWidth and maxHeight for restrictToElementSize option (#5481) (9a3ac18)
  • Handle empty media segments for Mp4VttParser (#5131) (6fd44c4), closes #4429
  • HLS: Add .tsa and .tsv file extensions as valid MPEG2-TS. (#5034) (a22bdc5)
  • HLS: Add subtitle role when there are no roles (#5357) (7de6340), closes #5355
  • HLS: Adding support for DTS Express in HLS fMP4 (#5112) (#5117) (67b1e90)
  • HLS: Avoid "Possible encoding problem detected!" when is a preload reference (#5332) (bd18a9d)
  • HLS: Avoid HLS resync when there is a gap in the stream (#5284) (b8c2004)
  • HLS: Avoid variable substitution if no variables (#5269) (5a5a7ac)
  • HLS: Consider skipped segments to calculate next media sequence (#5414) (b7d2305)
  • HLS: don't do sequence mode workaround unless there's a text stream (#5079) (fb22669)
  • HLS: Don't do sequence mode workaround unless there's a text stream (#5315) (019dcfd)
  • HLS: Fix AV sync over ad boundaries (#4824) (35033bb), closes #4589
  • HLS: Fix avoid prefetch missing segments (#5372) (7f8e051)
  • HLS: Fix detection of Media Playlist for audio and video only in MP4 (#4803) (76f96b9)
  • HLS: Fix detection of WebVTT subtitles in HLS by extension (#4928) (15b0388), closes #4929
  • HLS: Fix discontinuity tracking (#4881) (fc3d5c1), closes #4589
  • HLS: Fix dvh1 and dvhe detection as video codec (#5364) (37b7be6)
  • HLS: Fix external subtitles out of sync in HLS (#5491) (de19884)
  • HLS: Fix HLS seekRange for live streams (#5263) (258962f)
  • HLS: fix lazy load with multiple raw audio tracks (#4715) (76149ae)
  • HLS: Fix live playlist update when using no LL in a LL stream (#5282) (ad2eef6)
  • HLS: Fix load of LL-HLS when the partial segment is not independent (#5277) (ed5915e)
  • HLS: Fix lowLatencyPresentationDelay when using autoLowLatencyMode (#4712) (877e954)
  • HLS: Fix missing roles (#4760) (2bc481d), closes #4759
  • HLS: Fix prefetch with LL-HLS stream (#5274) (551422a)
  • HLS: Fix seek on LL streams when using segments mode (#5283) (d4f3f5c)
  • HLS: Fix seekRange for EVENT playlist not using EXT-X-PLAYLIST-TYPE (#5220) (1c89204)
  • HLS: Fix support for mixed AES-128/NONE decryption (#4847) (452694d)
  • HLS: Fix support legacy AVC1 codec used in HLS (#4716) (c3ff8e5)
  • HLS: Fix support of fragmented WebVTT (#5156) (9c4a61f)
  • hls: Fix type error in lazy-loading (#4687) (28b73b9)
  • HLS: Ignore segments with zero duration (#5371) (c25b26a)
  • HLS: IMSC1 subtitles not working in a HLS stream (#4942) (974f5dc)
  • HLS: Mark first partial segment as independent always (#5312) (ea896d5)
  • HLS: Parse EXT-X-PART-INF as media playlist tag (#5311) (d29f4bc)
  • HLS: Parse the correct codec for AVC and MP4A in HLS parser (#5515) (f3fa4f8)
  • HLS: preserve discontinuitySequence in SegmentIndex#fit (#5066) (36a15f6)
  • HLS: Report HLS playlist updates as media playlist in network filters (#5120) (c2a59d0)
  • HLS: Require SegmentIndex to return independent segments only (#5288) (9f80e3c)
  • HLS: Single alternative video renditions not working (#4785) (6915a97)
  • HLS: Skip EXT-X-PRELOAD-HINT without full byterange info (#5294) (32d141d)
  • HLS: support discontinuities in segments mode (#5102) (71affe7)
  • HLS: Supports syncTime in partial segments (#5280) (9dddc09)
  • Increase IndexedDB timeout (#4984) (ea290ab)
  • logging: Simplify log code. (#5050) (6944976), closes #5032
  • Make encoding problem detection more robust (#4885) (0e3621c), closes #4589
  • Manually order key for decodingInfo cache (#4795) (806a9a8)
  • MCap: Remove robustness when robustness value is default (#4953) (7439a26)
  • media source object URL revocation (#5214) (fecb11a)
  • media: Fix region checking in livestreams (#5361) (9fffcb9), closes #5213
  • mitigate uncaught type error in media_source_engine (#5069) (e19fa80), closes #4903
  • net: Fix HEAD requests in new Chromium (#5180) (5155493), closes #5164
  • Only parse/probe TS if the reference is not an MP4 and not WebM (#5381) (b1e7cc4)
  • Orange set top box is incorrectly categorized as Apple (#5545) (937484e)
  • PERIOD_FLATTENING_FAILED error with shaka 4.3.4 that did not occur with shaka 3.1.2 #5183 (#5188) (e855326)
  • Polyfill missing AbortController on Tizen (#4707) (75ef975)
  • Populate HDR correctly (#5369) (1ad75ec)
  • prevent access to null config_ in SimpleAbrManager (#5362) (d1db694)
  • Prevent bad calls to MediaSource.endOfStream (#5071) (64389a2), closes #5070
  • Prevent content from being restarted after Postroll ads (#4979) (64e94f1), closes #4445
  • prevent memory leak in SimpleAbrManager while destroying (#5149) (bbf228c)
  • Reject TS content on Edge (#5043) (8818a02)
  • Release region timeline when unloading (#4871) (a236180), closes #4850
  • Remove duplicate adaptation event before init (#5492) (e3b2e7d)
  • Remove sourcebuffer before create a new media source instance (#5533) (0056c0a)
  • Ship to NPM without node version restrictions (#5253) (524a80b), closes #5243
  • stream property of request context obfuscated in production builds (#5118) (93baba2)
  • Support fLaC and Opus codec strings in HLS (#5454) (ccc3d2f), closes #5453
  • Sync each segment against EXT-X-PROGRAM-DATE-TIME (#4870) (50c9df4), closes #4589
  • Tizen video error fixed by checking the extended MIME type (#4973) (eb01c60), closes #4634
  • Transmux containerless to the correct mimetype (#5205) (bb40d3b)
  • Treat regions uniquely (#4841) (5681efe), closes #4839
  • TTML: Add font-family mapping (#4801) (db8987d)
  • TTML: Fix duplicate cues overlapping segment boundaries (#4798) (bd75032), closes #4631
  • Typing of PeriodCombiner.Period was incorrect (#5442) (845649b)
  • ui: Avoid submitting form if player is inside form (#4866) (da21850), closes #4861
  • ui: Check event cancelable before event.preventDefault (#4690) (6d8de72)
  • UI: Disable right click on range elements (#5497) (3333ca4)
  • ui: Fix iOS fullscreen on rotation (#4679) (86256f4)
  • UI: Fix playback restarts in safari when click on seekbar end (#5527) (4235658)
  • UI: Fix resolution selection on src= (#5367) (3863c73)
  • UI: Suppress error log from fullscreen button on desktop (#4823) (99da4ce), closes #4822
  • UI: Use pagehide instead of unload for PiP (#5303) (a543b80)
  • unnecessary parsing of in-band pssh when pssh is in the manifest (#5198) (05aa931), closes #5197
  • Update karma-local-wd-launcher to fix Chromedriver >= 115, fix M1 mac (#5489) (c8a27ca)
  • Update karma-local-wd-launcher to fix Edge >= 115 (#5506) (3104a76)
  • VTT: Fix combining style selectors (#4934) (128562d)
  • VTT: Fix spacing between text lines (#4961) (2d0469f)
  • WebVTT: Add support to  , ‎ and ‏ (#4920) (726ef42)
  • WebVTT: Add support to middle position (#5366) (5691d5e)
  • WebVTT: Fix horizontal positioning with cue box size (#4949) (f456318)
  • WebVTT: Fix text-shadow in WebVTT not working (#5499) (ac6a92a)
  • WebVTT: Fix voice tag styles (a5f8b43)
  • WebVTT: Fix voices with styles and support to multiple styles (#4922) (68968c1)
  • WebVTT: Tags in the WebVTT subtitle are not parsed (#4960) (d4fc54f)

Performance Improvements

  • Caching mediaSource support for browser engine (#4778) (ad6c085)

4.3.0 (2022-11-10)

Features

Bug Fixes

4.2.0 (2022-08-16)

Features

  • add Amazon Fire TV platform support (#4375) (5102dac)
  • Add support for Modern EME and legacy Apple Media Keys for FairPlay (#4309) (5441f93)
  • Automatic ABR quality restrictions based on size (#4404) (cfe8af5), closes #2333
  • hls: Support AES-128 in HLS (#4386) (6194021), closes #850
  • Improve gap-detection robustness (#4399) (4293a14)
  • Upgrade eme-encryption-scheme-polyfill to support ChromeCast version of PlayReady (#4378) (e6b6d7c)
  • webvtt: add support for karaoke style text in WebVTT (#4274) (60af516)

Bug Fixes

  • Add fallback to TextDecoder and TextEncoder #4324 (5b18069)
  • add strictMissingProperties suppressions to unblock strict missing properties on union types. (#4371) (b361948)
  • Debug buffer placement (#4345) (47fa309)
  • demo: allow switch between UITextDisplayer and SimpleTextDisplayer (#4275) (28689f3)
  • demo: erroneous FairPlay keysystem in demo (#4276) (8719bdc)
  • exception if on early adError (#4362) (3c92f05), closes #4004
  • Fix EOS set-top box being identified as Apple. (#4310) (7c2c4be)
  • Fix getVideoPlaybackQuality in WebOS 3 (#4316) (5561111)
  • Fix key ID byteswapping for PlayReady on PS4 (#4377) (25fd4f4)
  • Fix MediaCapabilities polyfill on Playstation 4 (#4320) (0335b2a)
  • Fix MediaCapabilities polyfill on Tizen and WebOS (#4396) (eb2aed8), closes #4383 #4357
  • Fix segment index assertions with DAI (#4348) (c2b3853)
  • Fix TextDecoder fallback and browser support check (#4403) (04fc0d4)
  • Fix UI captions icon state (#4384) (d462633), closes #4358
  • Fix VP9 codec checks on Mac Firefox (#4391) (b6ab769)
  • hls: Fix AV sync issues, fallback to sequence numbers if PROGRAM-DATE-TIME ignored (#4289) (314a987), closes #4287
  • New EME polyfill fixes EME/MCap issues on some smart TVs (#4279) (db1b20e)
  • Populate track's spatialAudio property (#4291) (713f461)
  • Remove IE 11 from default browsers for Windows (#4272) (490b06c), closes #4271
  • text: Fix cue region rendering in UI (#4412) (b1f46db), closes #4381
  • text: Fix TTML render timing and line break issues for native display (122f223)
  • Update main branch Cast receiver ID (#4364) (46b27f1)
  • Use middle segment when guessing MIME type on HLS (#4269) (#4270) (3d27d2a)
  • VTT Cue Parsing On PlayStation 4 (#4340) (b5da41e), closes #4321

4.1.0 (2022-06-02)

Features

Bug Fixes

4.0.0 (2022-04-30)

⚠ BREAKING CHANGES

  • Remove small/large gap config, always jump gaps (#4125)
  • config: manifest.dash.defaultPresentationDelay has been replaced by manifest.defaultPresentationDelay (deprecated in v3.0.0)
  • config: Configuration of factories should be plain factory functions, not constructors; these will not be invoked with new (deprecated in v3.1.0)
  • player: shaka.Player.prototype.addTextTrack() has been replaced by addTextTrackAsync(), which returns a Promise (deprecated in v3.1.0)
  • ui: shaka.ui.TrackLabelFormat has been renamed to shaka.ui.Overlay.TrackLabelFormat (deprecated in v3.1.0)
  • ui: shaka.ui.FailReasonCode has been renamed to shaka.ui.Overlay.FailReasonCode (deprecated in v3.1.0)
  • offline: shaka.offline.Storage.prototype.store() returns AbortableOperation instead of Promise (deprecated in v3.0.0)
  • offline: shaka.offline.Storage.prototype.getStoreInProgress() has been removed; concurrent operations are supported, so callers don't need to check this (deprecated in v3.0.0)
  • shaka.util.Uint8ArrayUtils.equal has been replaced by shaka.util.BufferUtils.equal, which can handle multiple types of buffers (deprecated in v3.0.0)
  • manifest: shaka.media.SegmentIndex.prototype.destroy() has been replaced by release(), which is synchronous (deprecated in v3.0.0)
  • manifest: shaka.media.SegmentIterator.prototype.seek(), which mutates the iterator, has been replaced by shaka.media.SegmentIndex.getIteratorForTime() (deprecated in v3.1.0)
  • manifest: shaka.media.SegmentIndex.prototype.merge() has become private; use mergeAndEvict() instead (deprecated in v3.2.0)
  • plugin: AbrManager plugins must implement the playbackRateChanged() method (deprecated in v3.0.0)
  • plugin: shaka.extern.Cue.prototype.spacer has been replaced by the more clearly-named lineBreak (deprecated in v3.1.0)
  • plugin: IUIElement plugins must have a release() method (not destroy()) (deprecated in v3.0.0)
  • Remove deprecated features, update upgrade guides (#4089)
  • Remove support for Safari 12 and iOS 12 (#4112)
  • hls: HLS disabled in old browsers/platforms due to incompatibilities (#3964)

Features

  • shaka.util.Uint8ArrayUtils.equal has been replaced by shaka.util.BufferUtils.equal, which can handle multiple types of buffers (deprecated in v3.0.0) (ac5acc8)
  • Add Dockerfile and docker build instructions (925de19)
  • add modern EME support for FairPlay (#3776) (6d76a13)
  • add new methods to FairPlayUtils (#4029) (f1eeac1)
  • add option for segment-relative VTT timings (#4083) (f382cc7)
  • Add separate audio and video MIME types to Track API (#3892) (74c491d), closes #3888
  • Allow WebP and AVIF image streams (#3856) (9f3fb46), closes #3845
  • config: manifest.dash.defaultPresentationDelay has been replaced by manifest.defaultPresentationDelay (deprecated in v3.0.0) (ac5acc8)
  • config: Configuration of factories should be plain factory functions, not constructors; these will not be invoked with new (deprecated in v3.1.0) (ac5acc8)
  • dash: Construct ClearKey PSSH based on MPD ContentProtection (#4104) (b83b412)
  • dash: Parse ClearKey license URL in MPD (#4066) (19e24b1)
  • demo: Add Apple Advanced HLS Stream (TS) with raw AAC (#3933) (1becadf)
  • demo: Added demo asset with raw AAC. (014c7b3), closes #2337
  • DRM: add drmInfo to license requests (#4030) (abe846e)
  • DRM: add initData and initDataType to license requests (#4039) (bdc5ea7)
  • HLS: Containerless format support (36d0b54), closes #2337
  • hls: HLS disabled in old browsers/platforms due to incompatibilities (#3964) (0daa00f)
  • hls: make a head request if hls subtitles have no extension (#4140) (19e12b5)
  • hls: parse EXT-X-GAP (#4134) (42eecc8)
  • HLS: Re-add TS support to Safari (#4097) (8a3bed7)
  • hls: Read EXT-X-PROGRAM-DATE-TIME (#4034) (89409ce), closes #2337
  • manifest: shaka.media.SegmentIndex.prototype.destroy() has been replaced by release(), which is synchronous (deprecated in v3.0.0) (ac5acc8)
  • manifest: shaka.media.SegmentIndex.prototype.merge() has become private; use mergeAndEvict() instead (deprecated in v3.2.0) (ac5acc8)
  • manifest: shaka.media.SegmentIterator.prototype.seek(), which mutates the iterator, has been replaced by shaka.media.SegmentIndex.getIteratorForTime() (deprecated in v3.1.0) (ac5acc8)
  • offline: shaka.offline.Storage.prototype.getStoreInProgress() has been removed; concurrent operations are supported, so callers don't need to check this (deprecated in v3.0.0) (ac5acc8)
  • offline: shaka.offline.Storage.prototype.store() returns AbortableOperation instead of Promise (deprecated in v3.0.0) (ac5acc8)
  • offline: improve the speed of offline downloads (#4168) (73f6de3)
  • only polyfill MCap for non Android-based Cast devices. (#4170) (11321d8)
  • player: shaka.Player.prototype.addTextTrack() has been replaced by addTextTrackAsync(), which returns a Promise (deprecated in v3.1.0) (ac5acc8)
  • plugin: AbrManager plugins must implement the playbackRateChanged() method (deprecated in v3.0.0) (ac5acc8)
  • plugin: IUIElement plugins must have a release() method (not destroy()) (deprecated in v3.0.0) (ac5acc8)
  • plugin: shaka.extern.Cue.prototype.spacer has been replaced by the more clearly-named lineBreak (deprecated in v3.1.0) (ac5acc8)
  • Public release of Sindarin (sjn) translation easter egg (#4033) (9029d06)
  • Remove deprecated features, update upgrade guides (#4089) (ac5acc8)
  • Remove small/large gap config, always jump gaps (#4125) (0fd1999)
  • Remove support for Safari 12 and iOS 12 (#4112) (8bb7044)
  • ui: shaka.ui.FailReasonCode has been renamed to shaka.ui.Overlay.FailReasonCode (deprecated in v3.1.0) (ac5acc8)
  • ui: shaka.ui.TrackLabelFormat has been renamed to shaka.ui.Overlay.TrackLabelFormat (deprecated in v3.1.0) (ac5acc8)
  • ui: Add quality selection for audio-only content (#3649) (adc3502), closes #2071
  • UI: Add video fullscreen support for iOS (#3853) (8d1b5e6), closes #3832

Bug Fixes

Older changelogs: