github shaka-project/shaka-player v4.15.0

latest releases: v4.16.8-main, v4.16.8, v4.15.20-main...
5 months ago

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)

Don't miss a new shaka-player release

NewReleases is sending notifications on new releases.