Accurate Player - Release Notes

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.

9.0.0

Released 2023-11-22
Highlights
  • More precise return types
  • TimedTextPlugin now support iTunes Timed Text
Release notes

Breaking

  • Return type for some functions have been made more precise, showing when the returned value might be null or undefined. E.g number -> number | undefined

Features

  • Probe: getMediaInfo()
    • support reading channel count for opus audio tracks
    • support reading time code tracks in order to set frameOffset and dropFrame properties
  • TimedTextPlugin: added support for iTunes Timed Text

Fixes

  • SegmentPlayer: now works together with SmoothTimeUpdatePlugin
  • Probe: getMediaInfo()
    • Chrome and Firefox update caused mov files with single edit list entry to be off by one frame
    • incorrect aspect ratio reported caused by a float rounding error.
  • TimedTextPlugin:
    • accept leading blank line in srt files
    • safari could not load track element based renderers
  • Controls: quality picker did not display correct state when using HlsPlayer

8.3.0

Released 2023-11-21
Highlights
  • Identical to 9.0.0
Release notes

Identical to 9.0.0 but removed since it contains breaking changes.

8.2.0

Released 2023-09-19
Highlights
  • Support reading channel count from more sound sample descriptions
  • Allow passing custom headers and credentials through getMediaInfo() call
Release notes

Features

  • Probe: getMediaInfo() now supports reading channel count from more sound sample descriptions (in24, in32, fl32, fl64)
  • Probe: Added optional requestData to getMediaInfo() call, allowing for custom headers and credentials configuration to be passed on to the fetch request

Fixes

  • TimedTextPlugin: remove() no longer removes unintended subtitles

8.1.0

Released 2023-05-16
Highlights
  • Added support for STL and SRT subtitles
  • Deprecated existing subtitle plugins
Release notes

Features

  • TrackExtractor: Extend track extractor to generate timed text references that can be passed on to the TimedTextPlugin.
  • TimedTextPlugin: Added new plugin to manage all subtitles. Including support for SRT and STL.

Fixes

  • SmoothTimeUpdatePlugin: Added support for reporting frames when using a negative playback rate (playing backwards).

Deprecations

  • Deprecated ImscSubtitlePlugin, SccSubtitlePlugin, SubtitlePlugin and VttSubtitlePlugin. See the Migration Guide for details.

8.0.3

Released 2023-03-14
Highlights
  • Bug fixes and maintenance
Release notes

Fixes

  • Fixed issue where the Ended event fired more than once if player was destroyed and loaded again on the same video element.
  • Probe: Fixed crash when reading 64-bit mdat box size.
  • ProgressivePlayer: Fixed bug (in Chrome) that caused PlayerEventType.Ended to not trigger when reaching the end of the video.

8.0.1

Released 2023-01-23
Highlights
  • Fixed bug in Probe-package
Release notes

Fixes

  • Probe: Fixed issue in getMediaInfo for crash when reading 64-bit mdat box size.

8.0.0

Released 2023-01-17
Highlights
  • Breaking change that only affects the CutlistPlayer
Release notes

Features

  • SccSubtitlePlugin: Added an optional option to the SccSubtitlePluginSettings where you can state to which parent element you want to append the cue style tags.

Fixes

  • Play/Pause state of the player no longer mismatch when the play() request fails
  • ChannelControlPlugin: fixed getMonoMixFloatFrequencyData to work in Chrome and Safari. The issue was that Chrome and Safari only returned data from what seems to be one channel (Chrome returned data from channel 0 and Safari channel 1) instead of all channels.
    • A workaround was added that combines data extracted from the individual channels instead.
  • SubtitlePlugin: Subtitles were duplicated on firefox
  • VttSubtitlePlugin/ImscSubtitlePlugin/SccSubtitlePlugin: improved subtitle source detection to not mistakenly assume the "src" property is a SubtitleSource.
  • getMediaInfo: Decreased memory consumption when reading audio tracks

Breaking

  • Moved Cut, CutlistPlayerEventName, CutChangedEvent, PreviewChangedEvent from @accurate-player/accurate-player-cutlist to @accurate-player/accurate-player-core

7.3.3

Released 2023-01-23
Highlights
  • Minor bugfixes related to Probe and DiscreteAudioPlugin
Release notes

Fixes

  • DiscreteAudioPlugin: Allow updating src on audio tracks.
  • Probe: Fixed issue in getMediaInfo for crash when reading 64-bit mdat box size.
  • Probe: Decreased memory consumption when reading audio tracks.

7.3.0

Released 2022-11-08
Highlights
  • Added support for playing SCC subtitles.
  • Subtitles can now be extracted from MP4 files just like audio.
Release notes

Features

  • DiscreteAudioPlugin: Added api isMaxLimitReached and isEnablePossible(id: string)
  • mse:
    • Added track title block list option to filter out bad names
    • TrackExtractor.getTracks now returns VttSubtitle- (VttSubtitlePlugin), TTMLFileReference- (ImscSubtitlePlugin) and SccSubtitle (SccSubtitlePlugin) objects that can be loaded directly in the respective plugins.
  • probe: Extend getMediaInfo with subtitleTrackCount, indicating the number of muxed subtitle tracks in the file
  • Subtitle plugins: Added support to load subtitles asynchronous by supplying a SubtitleSource object as "src"
  • SccSubtitlePlugin: Added new plugin that can be used to load SCC subtitles

Fixes

  • AP Controls: Controls now shows controls for all subtitles, even when imsc subtitles are loaded
  • ImscSubtitlePlugin: Improved error handling for parse errors
  • ProgressivePlayer: Fixed bug in getCurrentTime resulted in frameOffset not being applied.
  • TrackExtractor
    • Fixed issue that caused track to get stuck in loading state when seeking near the end
    • Fixed bug in Safari that caused audio to disappear when seeking in the video
  • SubtitlePlugin: The plugin now uses <track> elements instead of .addTextTrack to avoid a Chrome bug that caused subtitles to show even though they were disabled
  • VttSubtitlePlugin: Fixed issue where vtt subtitle plugin interfered with track elements not created by the plugin itself

7.2.0

Released 2022-09-13
Highlights
  • Added support for playing multiple muxed audio tracks within a MP4 file.
Release notes

Features

  • DiscreteAudioPlugin: Added track configuration option enabledCountExempt. When activated the track is not omitted by the maxEnabledTracks setting.
  • DiscreteAudioPlugin: Add setting for controlling preload attribute for created audio elements.
  • Probe: getMediaInfo now also extracts audioTrackCount from the video container.
  • TrackExtractor: New tool that can be used to play multi-track mp4.
  • VttSubtitlePlugin: VTT subtitles now support id, used to identify subtitles when toggling.

Fixes

  • SegmentPlayer: Seeking to last frame now works
  • Controls: Make sure player is set before allowing controls to toggle play

7.1.3

Released 2022-06-28
Highlights
  • IMSC bug fix
Release notes

Fixes

  • ImscSubtitlePlugin: IMSC no longer crashes when the TT node exists in a custom namespace.

7.1.2

Released 2022-06-23
Highlights
  • Fixed build issues
Release notes

Fixes

  • Controls: polymer version locked to 3.4.x to avoid issues with builds on vue2 and angular

7.1.1

Released 2022-05-25
Highlights
  • Abr installation bugfix
Release notes

Fixes

  • Bug where AbrPlayer failed to install on certain projects.

7.1.0

Released 2022-05-24
Highlights
  • ChannelControlPlugin API updates
Release notes

Features

  • ChannelControlPlugin: Added getChannelMaxRMSdB and getTrackMaxRMSdB api methods to replace getMaxRMSdB (deprecated) and getGlobalMaxRMSdB (deprecated).

    The main difference being that the new methods returns the waveform data in addition to the dBFS values:
    const { dBFS, floatTimeDomainData } = await getChannelMaxRMSdB(idOrSrc, duration);
    // The floatTimeDomainData is an array of the waveform data used to calculate the dBFS values.


    Another difference is that getGlobalMaxRMSdB returns the total dBFS for all audio tracks, but the method replacing it: getTrackMaxRMSdB, returns the dBFS for each track instead.

    If you want the total dBFS value for all tracks (like getGlobalMaxRMSdB) you are advised to use the utility function combineDecibelLevels instead:

    const { dBFS } = await getTrackMaxRMSdB(duration);
    const totalDBFS = combineDecibelLevels(dBFS):

  • All players: Added player setting playbackRates that can be used to specify a list of available playback rates.
  • SmoothTimeUpdatePlugin: Added setting to force the use of requestAnimationFrame instead of requestVideoFrameCallback. This is of use if you play an audio-only file for example, as requestVideoFrameCallback wont fire if no video is rendered.
  • ChannelControlPlugin: Exposed the sample rate of the audio context in getAudioContextSampleRate

Fixes

  • Controls: Manually changing drop frame now reflects in current time display
  • AudioScrubPlugin: Fixed issue which caused AudioScrubPlugin to not cleanup audio elements when loading new files.

7.0.1

Released 2022-04-27
Highlights
  • Subtitle plugin fix
Release notes

Fixes

  • Bug where incorrect subtitle track could be selected using SubtitlePlugin