Here you can find release notes regarding the Accurate Player. Each release note will tell you highlights in each version, what's new and what's been fixed.
15.0.2
Released 2026-11-02
Highlights
Frame conversion near zero no longer returns NaN for values in scientific notation.
Release notes
Fixes
fix(timecode): Correct decimal precision for scientific notation values so frame conversion near zero returns zero instead of NaN.
fix(probe): Improve log message hint when Content-Range is absent
15.0.1
Released 2026-10-27
Highlights
fix(timecode): Correct the 24-hour rollover for drop-frame timecode at 29.97 and 59.94 fps
Player controls now use Lit 3 and include TypeScript definitions. Integrations using Polymer APIs or automatic property-change events must be updated.
New ranged playback APIs support looping a selected range or stopping at its end.
JITPlayer exposes structured errors and backend diagnostic messages.
Release notes
SDK Player
Breaking
Player controls: Replace Polymer set, get, and notifyPath calls with direct JavaScript property access. Assign new objects or arrays instead of modifying them in place to trigger display updates. Adapt Polymer-based control extensions to Lit.
Player controls: Automatic property-change events, including checked-changed and player-status-changed, are no longer emitted. Use SDK player events for playback status and control interaction events for user actions. Property assignments still update the display. Await updateComplete before inspecting rendered controls.
Features
Core: Added setRangedPlayback() with "loop" and "stop-at-end" modes, cancelRangedPlayback(), rangedPlayback state, and the RangedPlaybackChanged event.
Core: The new endFrameInclusive player setting controls whether ranged playback includes the out frame. It defaults to false, which excludes that frame.
JITPlayer: Added JITErrorEvent for structured errors and JITPlayerEventType.BackendMessage for backend diagnostic messages.
JITPlayer: Applications can pass a session reference between replacement players through JITSessionReference, player.api.getSessionReference(), and reuseSession.
WebVTTRenderer: Added the opt-in snapPercentageLinePositions setting to keep percentage-positioned cues inside the video in Chromium 154 and later, where multi-line cues can otherwise be clipped.
getMediaInfo: Recognizes HEVC MP4 files with hev1 sample entries and returns frame rates and timestamps without a frame-rate override.
Fixes
ProgressivePlayer: In Safari, seeking and Play no longer stop working after the page was hidden while playback was paused.
AbrPlayer: Fixed missing surround channels in Chromium and playback stalls when switching audio tracks in Firefox.
SegmentPlayer: Fixed audio crackling and unintended audio between segments, audio becoming muted during repeated backward scrubbing within an audio adjustment, and scheduling issues affecting seeking.
SegmentPlayer: Fixed incorrect video transitions into and out of crossfades when adjacent clips use different sources or non-contiguous source positions.
JITPlayer: Connection setup no longer continues after the peer connection enters the failed state.
JITPlayer: Failure of the initial backend event connection now reports an error so applications can offer a retry.
TimedTextPlugin: STL subtitle style changes no longer insert unwanted newlines.
TimedTextPlugin: IMSC subtitle parsers and the renderer now continue after recoverable errors, warnings, and informational messages. Fatal messages still stop the operation.
IMSCParser: IMSC and ITT documents without a root extent no longer receive a zero-sized root extent. Default styles remain available after recoverable pixel-style errors. Explicit root extents remain unchanged.
WebVTTParser: Cues without identifiers retain their positioning settings instead of reverting to default positioning. This fixes a regression introduced in 14.0.0.
TrackExtractor: Uses GET instead of HEAD requests to avoid console errors with pre-signed URLs.
JIT Backend
Features
The default av backend decodes media in-process using FFmpeg/PyAV instead of Melt’s subprocess-based media transport.
Added backend lifecycle, progress, and error messages over SSE. Messages include operator-facing userMessage text and technical diagnostics, with component versions and exception details when available. Technical diagnostics may contain sensitive URLs or paths and should not be displayed as operator messages.
Added optional cpuCount and videoFile.decoderThreads settings to session requests. CPU allocation selects shared logical CPUs, not dedicated reservations, and is independent of decoder-thread count.
Added GET /capabilities to discover the configured media backend and supported resource settings.
Eligible MXF startup probes now use bounded partition-header prefetch. Set JIT_AV_MXF_PREFETCH_MODE=off to disable it or adapter to use buffered probing without speculative reads. These settings affect probing only, not decoder reads.
Fixes
Decodes all native audio streams in input order and preserves source-relative audio timing across output-frame-rate conversion, seeking, and codec priming, including repeated AAC and AC-3 rewinds.
Mono sources render as centered stereo so client gain, mute, and routing mixes can be applied.
Remote inputs are mounted before probing. Source metadata and compatible warm readers are reused during startup.
Media failures no longer leave empty media-track waits and the HTTP event loop blocked after the producer exits.
Local instance agents now receive separate runtime-port ranges, preventing overlapping automatic allocations on the same host.
SSE connections send an immediate response body to prevent proxies from delaying connection establishment while waiting for the first diagnostic event.
Full Artifact Version List
JIT Backend: 1.5.0
14.0.2
Released 2026-07-03
Highlights
fix(ProgressivePlayer): In Safari, seeking and Play no longer stop working after the page was hidden while the player was paused.
Release notes
Fixes
- fix(track-extractor): Dispatch GET instead of HEAD to suppress console error messages with pre-signed URLs - fix(SegmentPlayer): Fix audio crackle and audio leak issues between segments. fix(SegmentPlayer): Fix audio sometimes getting muted when repeatedly scrubbing backwards within an active audio adjustment. fix(SegmentPlayer): Fix various scheduling issues that reduced seek performance. - feat(WebVTTRenderer): Add the opt-in `snapPercentageLinePositions` setting. It keeps cues positioned with a percentage line, such as `line:95%`, inside the video in Chromium 154 and later, which otherwise clips multi-line cues. - fix(WebVTTParser): Preserve cue settings such as `line`, `position`, `align` and `snapToLines` for cues without identifiers. Since 14.0.0 these cues were reset to default positioning, which moved top-positioned subtitles to the bottom. - fix(AudioScrubPlugin): In Safari, audio scrubbing no longer fails with "Failed to play audio scrub" after the page was hidden while the player was paused. - fix(ProgressivePlayer): In Safari, seeking and Play no longer stop working after the page was hidden while the player was paused.
14.0.1
Released 2026-07-03
Highlights
fix(track-extractor): prevent unnecessary buffering of inactive tracks
fix(track-extractor): no longer crashes where reading moov box
Release notes
Fixes
fix(track-extractor): no longer crashes where reading moov box
fix(track-extractor): prevent unnecessary buffering of inactive tracks
14.0.0
Released 2026-06-02
Highlights
breaking(AbrPlayer): upgrade shaka player from v4 to v5
Release notes
SDK Player
Breaking
breaking(AbrPlayer): upgrade shaka player from v4 to v5. If you are interfacing with the shaka player instance directly this may affect you.
Features
features(SegmentPlayer): added support for crossfade transitions
Fixes
fix(jit): pass peer id to backend when creating a session to enable reuse of instances
fix(TimedTextPlugin): IMSC didn't work in firefox when element is adopted by a new window
fix(TimedTextPlugin): fix cue positioning issue in Firefox on seek/scrub
fix(SegmentPlayer): an issue where audio adjustments sometimes caused a brief crackle on segment change has been resolved
fix(SegmentPlayer): audio effect duration being interpreted as one frame shorter than actual duration
fix(plugins): Channel Control now reports a clear error when audio tracks contain more than 32 channels
JIT Backend
Features
feature(orchestrator): Mount media files as read-only
feature(orchestrator): Add flag to disable playback of local files
feature: Add support for Docker version 29+
feature: enable host machine access via host.docker.internal
Fixes
fix: allow Docker file access without SELinux relabeling
fix: make local JIT Docker builds work with either GitLab tokens or SSH access
Full Artifact Version List
JIT Backend: 1.2.0
13.1.0
Released 2026-02-24
Highlights
JITPlayer: add support for emitting audio amplitude data
Release notes
Features
feature(JITPlayer): add support for emitting audio amplitude data (used by VU-meters e.g.)
Fixes
fix(jit): Make JITPlayer work over HTTP by adding a custom randomUUID implementation to replace crypto.randomUUID which only works under HTTPS
fix(jit): codec name in RTC video stats is now retrieved correctly
fix(jit): offset and drop frame attributes are now updated for the current video file
fix(core): improve accuracy in secondsToFrame function
fix(TimedTextPlugin): lost styling for IMSC subtitles when element moved to a different window
fix(AudioScrubPlugin): a discrete track with an offset can no longer be heard during scrubbing when current time is less than the offset
Full Artefact Version List
JIT Backend: 1.1.0
13.0.1
Released 2025-12-11
Highlights
fix(TimedTextPlugin/SCCParser): non consecutive cues were sometimes dropped
Release notes
Fixes
fix(TimedTextPlugin/SCCParser): non consecutive cues were sometimes dropped
13.0.0
Released 2025-12-02
Highlights
JITPlayer solo/mute support
Release notes
BREAKING
feature(TimedTextPlugin)!: TTML/IMSC subtitles with ttp:timeBase="smpte" are now automatically adjusted according to the start time of the loaded video even if SubtitleFormat.IMSC is not included in the setting useStartTimeFallback. We believe this is a better default. Setting the startTime property explicitly on the subtitle overrides this behavior if you need to override the default.
The typescript interface MutedState has been moved from @accurate-player/accurate-player-plugins to @accurate-player/accurate-player-core. It is still available under the plugins package, but it will be removed in the next major release.
Features
feature(TimedTextPlugin): add support to parse SCC files with non-standard frame rate time codes. To parse an SCC file with non-standard frame rate you need to specify the frameRate in the parserSettings when you load a subtitle using TimedTextPlugin.add.
fix(JITPlayer): fix issue that caused JITPlayer to fail the connection because a call to play() threw an error
fix(ProgressivePlayer): Consistently emit "playerLoaded" after loading a video file
fix(SegmentPlayer): Ensure selected playback rate is correctly applied to video segments
fix(SegmentPlayer): seeking to an unbuffered segment having a different source no longer pause playback
fix(core): looping of short segments when playback rate > 16 or playback rate < 0 did not work properly
fix(ABRPlayer): Ensure that "playerLoaded" is emitted after loading a new video file
fix: improved error recovery for failing urls for ProgressivePlayer and SegmentPlayer
12.0.1
Released 2025-10-16
Highlights
Improved url expiry support
Release notes
Fixes
fix(ProgressivePlayer): improved error handling when loading a failing url. The player will now try to refresh the url and re-load on initial load if the updateSrc callback is provided
fix(SegmentPlayer): improved error handling when loading a failing url. The player will now try to refresh the url and re-load on initial load if the updateSrc callback is provided.
fix(SegmentPlayer): improved error handling when a url for a pre-buffered video or audio element expires. Previously only the active elements was using the error recovery mechanisms, but now all media elements do.
12.0.0
Released 2025-09-30
Highlights
Breaking change (JITPlayer): property player.api.reportedQuality has been removed. User player.api.getStatus().quality instead
Breaking change (JITPlayer): refactored VideoFile object passed to player.api.loadVideoFile(). Properties jit.widthPx and jit.heightPx are replaced with jit.resolution
Add support for JITPlayer to load audio files alongside video
Release notes
Breaking change
Breaking change (JITPlayer):
property player.api.reportedQuality has been removed. User player.api.getStatus().quality instead.
refactored VideoFile object passed to player.api.loadVideoFile(). Properties jit.widthPx and jit.heightPx are replaced with jit.resolution
Breaking change (TimedTextPlugin):
getSubtitleTimelineMarkers now returns marker intervals as start frame inclusive and end frame exclusive, i.e. [start, end). This is the format that the AP Timeline component expects. Before this change the intervals were end frame inclusive, i.e. [start, end]. The recommended approach to showing the subtitle markers as end frame inclusive is to toggle the endFrameInclusive property on the timeline metadata component (ApTimelineMetadata) instead.
Features
feature(JITPlayer): Add support to load audio files alongside video. This requires version 1.0.0 of JIT backend
feature(jit): remove need of autoplay property on video element
Fixes
fix(SegmentPlayer): Reduce audio crackling between segment changes
fix(SegmentPlayer): Fixed an issue where an incorrect frame would sometimes be briefly displayed when playing or frame stepping between two segments
fix(SegmentPlayer): Fixed an issue where audio would continue playing after segment end, if the segment was one frame long
fix(JITPlayer): Fixed issues related to when the player reaches the end of the video:
JITPlayer now emit PlayerEventType.Ended when playback reaches the end
player.api.getStatus() now includes the "ended" property
player.api.play() now restart playback from the beginning of the video after the playback have reached the end
fix(TrackExtractor): reported tracks now follow the same order as defined in the source file
fix(TimedTextPlugin): fix issue in Safari which caused VTT subtitles to be misplaced when a TTML subtitle was loaded at the same time
fix(jit): no feedback was given when WebRTC stream closed unexpectedly
fix(controls): hide "Original audio" toggle if video file does not have any muxed audio channels
fix(TimedTextPlugin): fixed timing floating point rounding errors when applying start time offset to subtitle cues
fix(CutlistPlayer, DiscreteAudioPlugin, ProgressivePlayer, SegmentPlayer): Fixed an issue where the updateSrc callback would not trigger for relative file URLs that expired
Full Artefact Version List
JIT Backend: 1.0.0
11.0.0
Released 2025-04-22
Highlights
Breaking change: player functions mute() and unmute() no longer affect the player status property muxedAudio
CutlistPlayer: fix bug that prevents user from seeking to last frame in preview mode
Release notes
Breaking change
Core: player functions mute() and unmute() no longer affect the player status property muxedAudio
The muxedAudio property describes if muxed audio is enabled in the player while mute() and unmute() control the global muted state on the player
Fixes
CutlistPlayer: fix bug that prevents user from seeking to last frame in preview mode
HotkeyPlugin: change behavior of hotkeys for stepping 1 second, 10 seconds, 1 minute, and 10 minutes to step according to the timecode instead of using wall clock time
10.4.1
Released 2025-03-14
Highlights
CutlistPlayer: fix bug that prevents user from seeking to the last frame
Release notes
Fixes
CutlistPlayer: fix bug that prevents user from seeking to the last frame
10.4.0
Released 2025-02-18
Highlights
getMediaInfo: ensure requests are not out of bounds
TimedTextPlugin: abort network requests when the plugin is destroyed or if the load timeout is reached
Release notes
Features
TimedTextPlugin/WebVTTParser: abort network requests when the plugin is destroyed or if the load timeout is reached
Fixes
getMediaInfo: ensure requests are not out of bounds
TimedTextPlugin: fix .pac parsing bug where some cues were missed because of separator characters 0x63-0x67 not being identified
TimedTextPlugin: fix issue with colors not displaying for subtitles after calling getSubtitleTimelineMarkers()
10.3.0
Released 2024-12-03
Highlights
SubtitleSource: Add event (cueclear) that clears all cues
Release notes
Features
SubtitleSource: Add event (cueclear) that clears all cues
DiscreteAudioPlugin: Deprecate the setting frozenTimeout and disable it by default
Fixes
TimedTextPlugin: correctly unregister plugin from the player when destroyed