Release Notes (Web Player)

The web player release notes highlight the additions and improvements JWP has made to the JW8 web player code. If you have any questions after reading a release note and linked documentation, please contact your JWP representative.


💡

To receive immediate notifications for all Player releases, add the following RSS feed URL to your RSS reader:

https://docs.jwplayer.com/players/changelog.rss


8.26

Version Date Description
8.26.4 18 Nov 2022 General Improvements
  • FreeWheel global parameters (`afid`, `sfid`, `vcid`) can now be passed into the ad request through the Freewheel plugin.
  • You can append additional FreeWheel MRM ad server capabilities to the `flag` parameter and pass them in the ad request through the Freewheel plugin.
See our FreeWheel ad break recipes for examples of how to include these new parameters.


Fix
  • On iOS mobile web, caption selection is no longer impacted after exiting full-screen mode during live streams.
8.26.2 09 Nov 2022 Fixes
  • Fixed an issue causing a DAI live Dash stream to not enter ads mode
  • Fixed an issue on smaller viewports causing auto pause:false to not work in combination with autostart: viewable
  • Fixed an issue with .stopCasting() function not working
  • Fixed an issue causing some Dash streams to stop playback after a few minutes
  • Fixed an issue with our Google Analytics plugin causing play, pause and seeks events from firing
  • Fixed an issue where floating did not function when settings was controls:false
  • Fixed styling issue with our Tizen controller and tooltips.
  • Fixed an issue on Tizen with the time-slider not functioning properly
8.26.1 03 Oct 2022 New Features
  • We have revamped our old Chapter UI to a more modern look.

General Improvements
  • Updated our Shaka dependency to v4.2.1.
  • Updated our HLS.js dependency to v.1.2.1.
  • Added better error handling for Buffer Append errors in HLS.

Fixes
  • Fixed an issue where Chromecast would not update the playback URL when the web player did.
  • Fixed an issue where the pause request would be ignored while the "player is buffering".
  • Fixed an issue where the volume did not persist after being changed and the page would be refreshed.
8.26.0 26 Aug 2022 General Improvements
  • Added support for our player plugin code to recognize URL query string parameters/variables.

Fixes
  • Fixed an issue that caused Page Insights to load one of our providers javascripts when it wasn't needed.
  • Fixed an issue where if setControls was set to false the player would error when switching playlist items.
  • Fixed an issue that could cause the horizontal volume bar to be unusable during ad playback.
  • Fixed an issue with the DAI control bar that caused the volume bar to be unusable.


8.25

Version Date Description
8.25.8 28 Jul 2022 Fixes
  • Fixed an issue that wouldn't allow you to close the stats panel overlay.
  • Fixed an issue that caused embedded HLS caption to show the wrong attribute value.
  • Fixed an issue that caused poster images to be missing from HLS audio only streams with autostart enabled.
  • Fixed an issue that caused the player to pause unexpectedly when it was in view and unmuted when autoPause.viewability is set to true.
8.25.7 7 Jul 2022 General Improvements
  • We now expose more metadata from ID3 tags.

Fixes
  • Fixed an issue with the fullscreen button not working in Chrome on iPad.
  • We have fixed an issue where the player makes additional request to the page when autostart is set to false and the image setup config is missing.
  • Fixed an issue in our Freewheel plugin with how we handled undefined values in custom key-value setup.
8.25.6 15 Jun 2022 General Improvements
  • We have updated and refined our UX for the floating player to comply better with Google's policy.
  • Added support for CMAF DRM streams.

Fixes
  • Fixed an issue where quality switching did not function at smaller breakpoints.
  • Fixed an issue with the floating player pausing when an ad would timeout.
  • Fixed an issue where the thumbnail would not load when autostart was blocked by the browser.
  • Fixed an issue where the player would pause upon casting and player controls would disappear.
8.25.1 27 Apr 2022 General Improvements
  • We have disabled the poster image for videos that autoplay to help reduce load.
  • We have improved our handling of of text tracks on Dash streams. All text tracks will be selectable now even if they are duplicates.

Updates
  • Updated our Shaka dependency to v3.3.2
  • Updated our HLS.js dependency to v1.1.5

Fixed
  • Fixed an issue with the recommendation shelf.
  • Fixed an issue with display cues when switching between text tracks that are the same language.
  • Fixed an issue that caused Ad blockers preventing player events from firing.
  • Fixed an issue with some DASH streams not playing on Safari 15.0 and higher.
  • Fixed an issue where ad markers where not appearing with the googima client.
  • Fixed an issue with the mute button not working correctly while casting.


8.24

Version Date Description
8.24.6 29 Mar 2022 Fixes
• Fixed an issue that caused Ad markers to disappear on the googima ad client.
8.24.5 21 Mar 2022 Fixes
• Fixed an issue between audio tracks with the same language. We have added an additional check for role to identify unique audio tracks.
• We have improved our handling of of text tracks on Dash streams. All text tracks will be selectable now even if they are duplicates.


Updates
• Updated our Shaka dependency to v3.3.2
• Updated our HLS.js dependency to v1.1.5


Fixed
• Fixed an issue with the recommendation shelf.
• Fixed an issue with display cues when switching between text tracks that are the same language.
• Fixed an issue that caused Ad blockers preventing player events from firing.
• Fixed an issue with some DASH streams not playing on Safari 15.0 and higher.
• Fixed an issue where ad markers where not appearing with the googima client.
• Fixed an issue with the mute button not working correctly while casting.
8.24.4 14 Mar 2022 General Improvements
• Removed unused query parameters from being appended to shared URLs.
• Removed the "Next Up" video playlist messaging on LIVE/DVR streams while casting.


Updates
• For player breakpoints where the submenu can cover the entire player - video will now pause when the submenu is active and resume when closed.
• Added 50% font opacity option.
• Added support for larger values in liveSyncDuration. (Warning added for values over 45 seconds)
• Added support for labels for captions on Dash streams.


Fixed
• Fixed an issue where if a player is set with the starttime property and startOnSeek: "none" the player would not skip the preroll.
• Fixed an issue where the playlistItem event triggered three times on playlist item change during live streams.
• Fixed an issue with orientation not locking during fullscreen playback on Android Chrome.
• Fixed an issue with duplicate/ghost items appearing in the captions submenu when casting on Chromecast.
• Fixed an issue where the getDuration value would be infinity for all VOD streams in the playlist if the first item on the playlist was a LIVE stream during casting.
• Fixed an issue with the recommendation playlist shelf widget appearing empty if thumbnails failed to load properly.
• Fixed an issue where the duration property did not appear for players being generated with the ID+json tag for SEO/search on Android Chrome.
• Fixed an issue with VASTXML config not working properly with the VAST ad client.
• Fixed an issue where the consent string did not pass properly in Freewheel.
• Fixed an issue with thumbnails displayed at the end of the playlist item for the playlist/recommendation overlay.
• Fixed an issue when clicking on a non linear ad didn't send a proper network request to the URL in NoNLinearClickTracking tag in the VAST XML.
8.24.3 7 Feb 2022 General Improvements
• In a floating player, ad playback will now continue after the player is dismissed when autoPause.pauseAds is set to false.
• DAI will no longer make repeated requests to id3-events.json when playback is stopped.


Fixes
• Fixed a bug issue where the Next Up overlay would become unresponsive to clicks.
• Fixed a bug where the menu would always return to the caption styles menu after making a change to any caption style.
• Fixed an issue that would cause playback to stop after attempting to seek beyond a DAI midroll.
• Fixed an issue where poster images would be replaced by the first frame of video when playing CMAF HLS streams.
• Fixed a bug that caused poster images from our delivery API to take precedence over a custom poster images.
8.24.1 20 Jan 2022 Updates
• Added support for the ad tag macro __addtl_consent__ for use with CMPs that support Google’s Additional Consent Mode.


General Improvements
• In Firefox, the PiP button should no longer cause problems clicking the next-up overlay.


Fixes
• Fixed a bug with DASH playback that caused the audio of the first source to continue playing when switching to another DASH source via the API.
• Fixed a bug in the Google IMA ad client where ad tag macros where not replaced inside of a VMAP.
• Fixed an issue with the amp-jwplayer component where the __gdpr__ and __gdpr_consent__ ad tag macros were not being replaced.
• Fixed an issue in the amp-jwplayer component that caused pre-roll ads to fail when using data-config-json.
8.24.0 12 Dec 2021 Updates
• Added support for Google Search's video key moments seekToAction markup. Players with generateSEOMetadata set to true will now have the required fields to enable Google to not only index videos, but also generate chapter markers with AI and surface those in enhanced search results. JWP is working in partnership with Google to improve organic search traffic for all of our publishers.
• Added support to automatically seek to and start a video on a specific time with the jw_start url query parameter. The parameter takes a number, in seconds. For example https://www.jwplayer.com/?jw_start=20 will start the 1 minute 3 second video on our home page at the 20 second mark.
• Updated the HLS.js dependency to v1.0.12.
• Extended playlist.onXhrOpen configuration to support DASH streams.
• Improved image size decisioning for JW Platform streams. When the player loads an image, whether it's a poster image or thumbnail, it now uses the closest available image size rather than one fixed size across the board. This will improve data transfer as well as user experience.


Fixes
• Fixed an issue with the Freewheel ad client where custom key value pairs weren't being sent in the ad request as expected.
• Fixed an issue where the embed url defined in the SEO video object was invalid for JW Platform streams.
• Fixed a bug causing the HTML page URL to be requested multiple times when casting.
• Fixed a bug occurring during live streams where the About This Video modal cannot be closed and a console error is thrown.
• Fixed an issue where embedded TTML captions in MPEG-DASH live streams were not displaying as expected.
• Fixed an issue where some DASH audio tracks were labeled with only a two-letter ISO code instead of the full English name.


8.23

Version Date Description
8.23.2 11 Nov 2021
• To the VAST ad client, added support to automatically make ad breaks with the same offset into an ad pod when loaded in a VMAP ad tag.


Fixes
• To the VAST ad client, added support to automatically make ad breaks with the same offset into an ad pod when loaded in a VMAP ad tag.
• Fixed a bug preventing auto-advancement to the next playlist item when casting.
• Fixed an issue causing some captions track names to display as a two-letter ISO code instead of the full word.
• Fixed a bug preventing the settings menu from working after using the setConfig Javascript method.
• Fixed a bug preventing the fullscreen button from displaying during IMA ad playback on some desktop browsers.
8.23.1 13 Oct 2021 Updates
• For accessibility, added aria-expanded attributes to the buttons in the captions styling submenu.
• Improved the experience for mp4 videos under 90 seconds that are single items so that when set to repeat, the looping is seamless.


Fixes
• Fixed an issue on Tizen preventing the quality from upswitching beyond a certain level.
• Fixed an issue causing buffering on some DASH streams.
• Fixed an issue preventing seeking when a player is set up with the Google IMA ad client but no ad tag.
• Fixed an accessibility issue preventing the playlist number from being read by screen readers.
• Fixed a javascript error thrown by the displayClick event listener when player controls are set to false.
8.23.0 29 Sep 2021 AMP Component Updates
• Updated our amp-jwplayer documentation on amp.dev including all the attributes mentioned in the release notes.
• To the amp-jwplayer component, added support for a new attribute, data-config-json, which accepts a full JSON configuration using any key values listed in the web player configuration reference, with the exception of media, which should use the media ID or playlist ID attribute, and the floating player, which should use the amp-video-docking component and the dock attribute on the player element.
• Added support for appending the iframe source url before player setup, to support token signing for example, with new attributes data-player-param-* and data-player-querystring.
• Added an attribute, data-ad-cust-params, which supports a JSON string of custom parameters that will be appended to the end of an ad tag on ad request.
• Added an attribute, data-config-skin-url, which accepts a url to an externally-hosted CSS file that will be loaded inside of the iframe, and can be used to target JWP elements. You can also load this file as skin.url in your JSON setup configuration using data-config-json. See our documentation on how to create your own CSS file.
• Added an attribute, data-config-plugin-url, which accepts a url to an externally-hosted Javascript file that will be loaded inside of the iframe, and can be used to apply custom Javascript to the player.
• Added support for populating ad tag macros in AMP with a new attribute, data-ad-macro-*. The following macros are supported: An attribute used to override the default value of macros in ad tags. Supported macros include: domain, referrer, page-url, item-{custparam}, and item-{custparam}-list. For example, setting data-ad-macro-domain=jwplayer.com would ensure the requested ad tag populates the domain parameter with the defined page url. See our ad tag macro documentation for more information.
• In AMP, added support for the amp-consent component, which a way for publishers to collect and store user’s consent through a UI and is a way to block AMP components based on the user’s consent. Added a new attribute, data-block-on-consent, which if set blocks the player from loading until the consent state is resolved. The consent data will then be passed to the player's iframe as query parameters for use with advertising implementations. See the amp-consent blocking behaviors documentation for possible values that this attribute accepts.
• Fixed an issue in amp-jwplayer where play events erroneously fired when an ad played.
• Remove existing logic which was manually sending additional pause events during ads with AMP, which are no longer needed.


General Improvements
• Added the aria-expanded attribute to the settings menu button to improve accessibility.
• When hovering over the timeline where there are chapter markers, the chapter's name and the current time will always be shown.


Fixes
• Reintroduced a fix from 8.20.5: Fixed a bug preventing a floating player with auto pause configured from pausing when the tab is backgrounded while an ad is loading.
• Removed a demo key value from customTargetingKey in the Freewheel ad client.
• Fixed an accessibility issue where upon exiting the settings menu the focus did not return to the settings menu icon in the control bar.


8.22

Version Date Description
8.22.2 23 Sep 2021 Updates
• Updated our Shaka dependency to 3.2.
• Added 15+ new 246xxx error codes related to DASH DRM failures.
• In the VAST client, we now define the creative type as video when making ad requests with OMID-enabled players, which should improve measurement accuracy.
• Improved settings menu ARIA labeling for accessibility by removing the ariahaspopup attribute and changing the role attribute on many elements to better suit the screen reader experience.
• Improved accessibility of the seek slider by adding the aria-valuenow attribute and ensuring the current time is read aloud by screen readers for both VOD and live streams.


Fixes
• Fixed a bug in picture in picture mode where videos would pause when the player's original container was backgrounded if the player was configured to autoPause. Autopause behavior should not apply to picture in picture mode because the PiP player is always in view even if the page where the player is embedded no longer is.
• Removed the picture in picture icon from the control bar on Tizen, where it is not supported.
• Fixed a bug with the playlist shelf widget where if the items in the playlist do not have thumbnail images, paginating with the left and right arrow buttons breaks the component.
• Reverted an earlier fix from 8.20.5: Fixed a bug preventing a floating player with auto pause configured from pausing when the tab is backgrounded while an ad is loading. This will be reintroduced in an upcoming release.
8.22.1 14 Sep 2021 New Features
• Updated the "About This Video" modal (accessible via the right click menu) to include stats for nerds, including information about the stream including media ID, buffer health, resolution, and more.
• Configuration: Added a new configuration option, allowFullscreen, which defaults to true. When set to false, fullscreen functionality is completely disabled in the player including tapping, clicking, keyboard shortcuts, and API access.
• Javascript events: Added a new method, setAllowFullscreen, which through updating the boolean, disables or re-enables the above fullscreen behavior.
• Updated the Freewheel Ad Manager SDK dependency to v6.43.
• Improved player and page security by whitelisting allowed HTML markup elements that may render in media title and description fields; links, scripts, and Javascript functions are no longer rendered.


Fixes
• Fixed a bug preventing the on('adblock') and getAdblock() methods from working as expected in all browsers.
• Fixed a bug preventing remove() from having its namesake effect on the player when it is in picture in picture mode.
• Fixed an issue where clicking and holding the seek bar fires a pause event with "unknown" pauseReason, rather than "interaction."
• Fixed an issue where opening the playlist overlay fires a pause event with "unknown" pauseReason, rather than "interaction."
• Fixed a bug in Freewheel where the adPod sequence was off by one.
• Reintroduced an earlier fix from 8.20.5: Fixed a bug preventing a floating player with auto pause configured from pausing when the tab is backgrounded while an ad is loading. This will be reverted again in the next release.
8.22.0 1 Sep 2021 Updates
• This release was briefly available but was removed due to fatal setup errors occurring in our AMP component. This will be fixed in 8.22.1. We apologize for the inconvenience.


8.21

Version Date Description
8.21.2 4 Aug 2021 Changes
• Reverted an earlier fix from 8.20.5: Fixed a bug preventing a floating player with auto pause configured from pausing when the tab is backgrounded while an ad is loading. This will be reintroduced in an upcoming release.
8.21.1 21 Jul 2021 Fixes
• Fixed an issue preventing video thumbnails from playing when the playlist item is loaded with jwplayer().load().
• Removed harmless console errors outputted after the VAST ad client loads the OMID SDK.
• Fixed a bug preventing the picture in picture icon released in 8.21.0 from inheriting styling set in the skin.controlbar.icons configuration.
• Fixed an issue where the value for playReason after a playlist item automatically advances to the next video was erroneously interaction.
8.21.0 7 Jul 2021 New Features
• Added support for playback in Picture in Picture mode across all supported browsers, including ads, captions, and playlists. Firefox and Internet Explorer do not support this feature.
• Configuration: Added a new configuration option, pipIcon, which defaults to enabled and adds a Picture in Picture icon and right click menu options to supported desktop browsers only. Setting this option to disabled will remove this icon, which you can also hide with CSS. On mobile devices, we have elected not to add an icon to our controls, but rather, PiP can be enabled through the operating system's native gestures and user interface on both iOS and Android.
• Added automatic localization support for the Picture in Picture icon tooltip and right click menu option across all supported languages, which can also be customized via the intl block with pipIcon.
• Javascript API: added a new event, adLoadedXML, which fires when the VAST ad client loads an ad tag. The response contains the same object properties as other ad events, such as adBreakId, adPlayId, adPosition, client, tag, etc, as well as an XML parameter that exposes the XML downloaded from the tag.
• Improved recovery of live DASH streams that buffer infinitely by implementing segment timeouts.


Fixes
• Fixed a bug preventing TTML1 captions from being displayed in DASH streams.
• Fixed an accessibility issue where the focus did not return to the settings menu icon after closing the settings menu.
• Fixed typos in German and Swedish player automatic localization translation files. We thank you for your feedback and encourage submissions via the form on our support page.
• Fixed a bug causing seek events to copy their play reason from the preceding play event.
• Fixed an issue in the IMA ad client with VMAP ad schedules where ad events incorrectly report the ad position as pre on mid-roll and post-roll ads.


8.20

Version Date Description
8.20.10 17 Jul 2021 Updates
• Following the resolution of the Chrome 91 bug by Google IMA, we reverted the workaround released yesterday in 8.20.9. Version 8.20.10 is identical to 8.20.8. Stay tuned for 8.21.0 next week, which includes Picture in Picture support.
8.20.9 16 Jun 2021 Updates
• We identified an increase in VAST 402 errors coming from Google IMA as a result of the Chrome 91 update last week. Error rates rise when advertising.vpaidmode is set to insecure or is undefined, as the player's default is insecure. While the errors are not specific to JWP, we are doing everything possible to mitigate the issue and have reached out to the third parties involved to do the same. While we wait for the issue to be resolved, we are temporarily releasing a player update that forces the vpaidmode setting to be set to enabled for all players that set up only on Chrome 91 environments on both desktop and mobile (unless vpaidmode was already set to disabled), which will help restore fill rates. No other browsers or Chrome versions will be affected, and this change is only for the Google IMA ad client. We are not applying this setting across the board since secure mode is known to decrease fill rates because VPAID ads that utilize Friendly iFrames will stop working. As soon as we have confirmation that the issue is resolved, we will revert this change. As such, we do not recommend customers set vpaidmode to enabled in their own ad schedules or modify client side configurations, as this setting would be applied across browsers, whereas our workaround is specific to the affected browser and version only. Thank you for your patience and collaboration.
8.20.8 14 Jun 2021 New Features
• Added a new configuration option to the advertising block, omidAccessModeRules, an object, which supports passing OMID access mode rule regex to Google Ad Manager via the Google IMA ad client.


Fixes
• Fixed an issue with the Google IMA ad client where post-rolls ads would not play if the playlist item also had a pre-roll that resulted in an empty ad response.
• Fixed an issue causing the audio to go out of sync on some HLS streams after a while.
• Fixed a bug causing audio in backgrounded apps to pause when a muted video is played.
• Fixed a bug causing the buffer icon to show on top of some ads when OMID is enabled.
• Fixed an issue causing unexpected increase use of memory and browser crashing on Windows operating systems with some live streams.
• Fixed a bug causing unintended seeking on iOS Safari when the viewer scrolls the page after intentionally seeking in the video.
• Fixed a bug causing the player to mute while adjusting the volume.
8.20.7 24 May 2021 Fixes
• Fixed bugs preventing Apple Voiceover control option space commands from working with the player.
• Fixed a bug causing accidental interaction with links and buttons beneath the player when it is floating.
• Fixed an issue preventing the email link from working in the sharing menu.
8.20.5 12 May 2021 Updates
• Added support for the requestTimeout configuration option with the DAI client.


Fixes
• Fixed a bug preventing a floating player with auto pause configured from pausing when the tab is backgrounded while an ad is loading.
• Fixed an issue in DAI where seeking past a mid-roll doesn't play the ad if the stream did not have a pre-roll.
• Fixed an issue causing audio-only HLS streams to infinitely buffer when the player tries to autostart muted.
• Fixed a bug preventing the buffer wheel from displaying on Tizen.
8.20.4 4 May 2021 Updates
• Added an optional configuration option, advertising.omidSupport, to control if and when our OMID verification script is loaded in the VAST client.
• "auto" (default) loads the OMID script when a parsed ad XML contains a verification node.
• "enabled" always loads the OMID script as soon as the VAST plugin is loaded.
• "disabled" prevents the OMID script from ever loading.
• Updated the default behavior of OMID script loading from "enabled" to "auto."


Fixes
• Fixed a bug causing lines of subtitles to display in a very small font in fullscreen when that contained inline voice tags in the VTT file.
• Fixed issues where the player API and internal objects were not being released from memory after a player is removed.
• Fixed a bug causing the getEnvironment().Browser method in Microsoft Edge to return as Chrome.
8.20.2 19 Apr 2021 Updates
• Added support for Google IMA's OMID beta with a configuration option in the advertising object, omidSupport. The default is "disabled", but can be used when set to "enabled".
• Improved the user experience by not automatically fullscreening the video in a floating player when an Android device is rotated.
• Updated JWP to hls.js v1.0.0, which is a major milestone in the open source HLS community.


Fixes
• Fixed an issue in Android Chrome causing the player to override the stream's aspect ratio and fill the entire screen with the video rather than incur a small amount of letterboxing.
• Fixed a bug with some ad preloading configurations causing infinite buffering.
• Fixed unintended animated behavior when seeking in a muted player with Safari.
• Fixed an error causing some HLS streams to stall.
• Fixed an issue on mobile devices where floating players didn't display IMA ads properly.
• Fixed an issue causing IMA mid-roll ads to infinitely buffer.
8.20.1 1 Apr 2021 Updates
• Improved stalling when there is significant drift from the edge of live streams.


Fixes
• Fixed issues causing layout shift (CLS) when transitioning to and from the floating player.
• Fixed a bug causing buffering when seeking after any ad in iOS Safari.
8.20.0 25 Mar 2021 Updates
• Added support for OMID ads in the VAST client. No configuration is required; the player automatically handles verification when the XML is returned.
• To the VAST client, added the adVerifications node to the adImpression event response, which returns the parsed content of that element in an object.
• Added a new configuration option to the advertising object, allowedOmidVendors, which accepts an array and is supported in the VAST client. If not set or set as an empty array, all vendors can run. If set, only the resources from the listed vendors can run. All failures to run verification will be noted accordingly to the ad server.


Fixes
• Made CSS changes to reduce layout shifts across the player, most notably one caused by the transition between Google IMA ads and media, but also including the control bar and icons, floating player, and tooltips.
• Fixed a longstanding issue where some VPAIDs would not play when they were the second ad in a pod using the VAST client.
• Fixed an issue causing the play event to fire after the firstFrame in live streams.
• Service related fixes to improve low latency streaming and HLS streaming in general.


Known Issues
• We are tracking a known Chromium bug where touch events erroneously increases a page's CLS score, such as dragging the floating player.


8.19

Version Date Description
8.19.1 10 Mar 2021 Fixes
• Fixed an issue causing buffering after DAI ads.
• Fixed a bug where for some streams, the audio-only rendition was shown before upswitching instead of the lowest quality video rendition.
8.19.0 25 Feb 2021 Updates
• Removed support for Flash, which was deprecated by Adobe on December 31, 2020.
• Added out of the box support for low latency HLS streams, including partials, automatic playback rate adjustment, hold back, and part hold back. The player automatically detects low latency streams and goes into that mode with no additional configuration required.
• Added support for low latency in JW Live Channels streams.
• Added support for IMSC1 captions in HLS streams.
• Added markup to discourage Google from displaying player error messages in search result snippets.
• Removed a default value for liveSyncDuration. The player will no longer add a default of 25 to item sources.
• Improved automatic latency defaults by starting HLS live streams with a latency based on the streams TARGET-DURATION or HOLD-BACK, in accordance with the HLS spec. This can still be overridden in browsers other than Safari by configuring liveSyncDuration, which used to default to 25 seconds.
• Added duration, currentTime, seekRange, and metadata.currentTime to the seek event response.
• Added targetLatency to time events. When playing live streams, the player will adjust playbackRate to meet the latency target.
• Improved stream type detection for Yospace streams, which often contain query string parameters after the file extension.
• Reduced fatal player errors caused by user agents represented as Safari that are really Chrome.


Fixes
• Fixed an issue causing the player to buffer indefinitely instead of erroring when all levels in an HLS manifest 404.
•Fixed a bug causing only one ad in a VMAP ad pod to play when the VMAP is passed via playlist.adschedule.


Known Issues
Due to a bug in 8.17.0+ affecting some player bidding customers, we will not update the biannual player release channel on its scheduled February 3 date. Instead, we will update it off schedule, on or before 8.20.0 in March to 8.19.0 on March 3 (updated February 26). We apologize for any inconvenience. Changed release cadence of the Biannual channel from updating to the latest version every six months to updating to a six month old version every six months. This allows Biannual channel to run a much older version for longer, and offers greater rollback options, as the other channels often are running similar versions.


8.18

Version Date Description
8.18.4 21 Jan 2020 Updates
• Added a new configuration option, horizontalVolumeSlider, that when optionally set to true, makes the volume slider appear horizontally, below the scroll bar, instead of above it.
Updates
• Fixed an accessibility issue where pressing the escape key while in the captions styling menu did not close the settings menu as expected.
• Fixed a bug in audio-only mode where the volume slider couldn’t be used during ad playback.
• Fixed an issue in Chrome where audio tracks were not appearing in the settings menu as expected.
• Fixed an issue where after a mid-roll ad is played, duplicate captions tracks appeared to be available in the captions menu.
• Fixed an issue in Safari where captions on HLS streams did not function properly after ad breaks.
• Fixed a bug preventing the player from automatically advancing to the next item in a playlist when controls: false is defined in the setup configuration.
8.18.3 17 Dec 2020 New Features
• Added a new configuration option to the advertising block, adTagParameters, an object, which supports custom parameter key value pairs with the DAI ad client.
• Added a new configuration option to the advertising block, ppid, which can be used with the Google IMA client to pass a publisher provided id to the IMA SDK.
• Added fallback support for Norwegian automated player translation. In addition to no, which is already supported, the player will now recognize html tag lang attributes of nn or nb as Norwegian as well. To customize text, please use the no object inside of the internationalization block regardless of which code is used in the page's lang attribute.
8.18.2 20 Nov 2021 Fixes
• Fixed a bug causing the first frame of the video to appear before the preroll on iOS Safari.
• Fixed a bug causing different ad text messages to overlap in right to left languages at smaller breakpoints.
• Fixed an issue on Tizen devices where controls did not hide when the settings menu is open.
8.18.0 9 Nov 2021 Updates
• Added support for Tizen on 2018+ Samsung smart TVs.
• Created a Tizen demo app to showcase our initial 2018+ beta support of this platform.
• Added a new method, jwplayer().stopCasting(), which can be called to stop a casting session on a Chromecast device.
• Added a new method, getPercentViewable, which takes no arguments and returns the visibility attribute from the player's model.
• Added support for DRM robustness. To configure the player to use this feature, specify videoRobustness and/or audioRobustness in the playlist item source in the Widevine, Playready and Clearkey object within the DRM block.


Bugs
• Fixed a bug surfacing when a viewer is behind the live edge where the button stays displayed as “Live” instead of the “Not Live” configuration.
• Fixed in issue in Google IMA where VMAPs with item properties were not being updated properly.
• Fixed an issue in the VAST client where captions do not function properly after ad breaks in Safari.
• Fixed an issue where ads may fail on the JW recommendations playlists when ad preloading is configured.


Deprecations
• Removed support for rendering 360/VR videos across all devices and streaming providers due to underutilization. The player will no longer recognize or render 360 videos as expected, though the videos will still play.


Known Issues

Affecting Tizen only:


• DASH is not yet support on Tizen; DASH streams result in a black screen when played, and some even cause the app to crash entirely.
• On Tizen devices, HLS streams intermittently result in a black screen. You can return to the previous page, but the stream doesn't play and just emit a buffer warning.
• On Tizen devices, controls do not hide when the settings menu is open (will be fixed in 8.18.1).


8.17

Version Date Description
8.17.7 6 Oct 2020
• Service release, no new features.
8.17.6 30 Sep 2020
• Fixed a bug causing too many ID3 metadata events to fire.
• Fixed an issue where ID3 WXXX:URL data was parsed incorrectly.
• Fixed a bug where 608 captions caused the browser tab to freeze.
• Worked around a bug in Chrome 85 preventing videos from being cast.
• Fixed an issue causing inaccurate video completion data be sent to Google Ads Manager.
8.17.5 21 Sep 2020
• Fixed a bug causing some HLS live streams to infinitely buffer.
8.17.4 17 Sep 2020
• Improved the message read aloud by a screen reader when the keyboard shortcuts toggle is selected.
• Added the name of the menu the user will go back to if they leave a captions styling menu when using a screen reader.
• Fixed an issue causing some HLS streams to buffer infinitely in Chrome 74 and below.
• Fixed a bug where a linear ad will not play if loaded while a nonlinear ad is displayed.
• Fixed an issue in the control bar during Google IMA ads on iOS browsers where the fullscreen icon would appear but be unusable because IMA prevents fullscreening during ad playback. The button is now hidden.
8.17.3 24 Aug 2020
• Fixed an issue to work around a bug in the Google IMA SDK affecting Android Chrome 84 only where unplayable linear ad MIME types were being erroneously selected.
8.17.2 24 Aug 2020
• Fixed an issue where calling stop() disables sound completely when resuming playback on HLS streams.
• Fixed a bug where some data was not being exposed in the on('meta') and on('metadataCueParsed') events.
• Fixed a bug where the mute/unmute button was not properly read by a screen reader.
• Fixed an issue causing some streams to show an erroneously long duration.
8.17.1 7 Nov 2021
• Service release, no new features.
8.17.0 6 Aug 2020 Updates
• Added a method, setFloating(), which starts and stops the player from floating, and getFloating(), which returns the current floating status.
• Added a new configuration option in the floating object, mode, which defaults to notVisible, which is current behavior for floating when the original container would be out of view. always can be used to start floating and never stop unless updated with the API, and never can be used to not float, unless updated by API.
• Made some big improvements to the way we do scheduling in the Google IMA client:
  
   • We now make ad request for each ad break, rather than creating a VMAP for the entire schedule for each playlist item.   
   • The adRequest event has been changed to fire each time we make ad request to IMA SDK.   
   • Added a new adLoaded event, which fires when IMA's LOADED event fires.
• Deprecated the ability to use the playlistItem event to update an ad schedule. By the time that event fires, the schedule for the playlist item has already been created, so the change does not have an effect. Please use setPlaylistItemCallback to properly update the ad schedule.


Fixes
• Remediated a browser issue where stream often starts with just audio and no video on IE11 Windows 10 and older versions of Edge.
• Fixed a bug preventing preloading on Safari desktop and iOS browsers.
• Fixed a bug causing the wrong audio track to appear selected after the setCurrentAudioTrack is called.
• Fixed an issue where scrolling to the bottom of a page intermittently triggers the page to jump back to the player.




8.16

Version Date Description
8.16.3 7 Jul 2020 Fixes
• Fixed an issue causing incorrect emsg messageData to be emitted.
• Fixed an issue causing some mid-roll emsg cues to be missed.
• Fixed a bug where the url to a side-loaded thumbnails track was displayed instead of subtitles when casting.
• Fixed an issue where an audio-only HLS stream with alternate tracks never buffers or plays.
• Fixed overlapping right-to-left text displayed over ads in the Google IMA client.
• Fixed a bug causing captions to not be cleared when going to an ad break on iOS Safari.
• Fixed a bug on IE11 where the volume slider could not be used.
• Fixed an issue where the player errors or gets stuck in an idle state when loading the last playlist item if it is rejected by the async playlist API callback.
• Fixed a bug where some captions were displayed incompletely on browsers were HLS streams are not rendered natively.
8.16.0 18 June 2020 Updates
• Added support for triggering the on('meta') and on('metadataCueParsed') methods based on in-band emsg timed metadata.


8.15

Version Date Description
8.15.2 11 Jun 2020 Updates
• To the VAST ad client, added support for the jwpseg macro from within VAST tags contained within a wrapper.
• Improved playback resilience and error handling with some bad VPAID ad creatives.


Fixes
• Fixed an issue in the VAST client preventing some ad creatives from properly timing out.
• Fixed a bug causing captions in some DASH streams to abruptly stop displaying.
• Fixed an issue in the VAST client where the player would not request additional ads after one ad in a pod timed out.
8.15.1 3 Jun 2020
• Service release, no new features.
8.15.0 28 May 2020 Updates
• Improved compatibility with the AMP framework and quality assurance capabilities of our amp-jwplayer component.
• To supplement documentation we maintain on amp.dev, we created JWP developer documentation on embedding an AMP player and working with AMP analytics.
• Added a configuration option, playlistIndex, which enables a playlist to be loaded and start playback from any item within it, not just the first. The default of this option is a 0 index.


Fixes
• Fixed a bug preventing captions from working on some live streams.
• Fixed a problem with Chromecast where captions were not casting.
• Fixed an issue where the wrong captions track appeared to be selected if both in-manifest and side-loaded captions tracks are present.


Updates
• The video-seconds-played trigger listed for configuration in amp-video-analytics does not work properly in this release. This will be fixed in a future release. All other triggers listed should operate as expected


8.14

Version Date Description
8.14.0 13 May 2020 Updates

Core Player
• Added a new property, cueType, to the addCues event, which adds a custom CSS class that can be used for additional cue styling in the format of .jw-cue-type-{cueType}.
• Added a new CSS class .jw-cue-type-ads to ad cues so they can be styled separately from other cues, such as chapter markers.
• Added support for 608 caption track names defined in the parent manifest via #EXT-X-MEDIA:TYPE=CLOSED-CAPTIONS tags.

Advertising
• To the VAST client, added support for the VAST 4.1 viewableImpression node, which adds a tracking pixel to the page when the adImpression event fires based on whether the ad is viewable at that time.


Fixes

Core Player
• Fixed a bug preventing captions from being cast to Chromecast.
• Fixing an issue occurring in some environments where resuming a stopped live stream turns captions off.
• Fixed an issue causing some HLS streams to stall when upshifting quality in Edge.
• Fixed a bug where captions no longer displayed after ads in Safari.


8.13

Version Date Description
8.13.8 13 May 2020
• Service release, no new features.
8.13.7 28 May 2020
• Service release, no new features.
8.13.4 28 May 2020
• Service release, no new features.
8.13.3 1 Apr 2020 Updates

Advertising
• Added Video Player Bidding support for Index Exchange.
• Reduced human error in setting up player bidding on the client side by making the accepted values in advertising.bidders case insensitive.
• Added case insensitivity to directional AdChoices logo positioning values (top, right, left, bottom) coming from ad responses. Before, incorrect casing would always result in a top-left positioned AdChoices logo.


Fixes

Core Player
• Fixed an issue causing DASH segmented VTT captions (cue times are relative to the segment time rather than total video time) to show up all at once at the beginning.
• Fixed an accessibility bug where Apple Voiceover does not announce the volume slider when focused in Safari.
• Fixed an accessibility issue where keyboard shortcuts stop working in fullscreen mode after interacting with the time slider.

Advertising
• Fixed an issue in IMA where the on('adsManager') event returned a null payload instead of the object.
8.13.1 28 May 2020 Fixes

Core Player
• Fixed a bug where the player was unable to replay media after it had been completed in some cases.
8.13.0 18 Mar 2020 Updates

Core Player
• Extended the Javascript API to allow for asynchronous blocking between playlist items. Loading, preloading, ads, and playback of the next playlist item can be blocked until async operation, wrapped in a promise, resolves.
• Exposed metadataCueParsed events in Safari when ID3 tags are parsed.
• Reduced core player library size by 9.4%.
• Added support to load and parse HLS manifest metadata in Safari when an HLS stream contains #EXT-X-PROGRAM-DATE-TIME tags.
• Added a new boolean configuration option, loadAndParseHlsMetadata, which can be set to false to disable metadata parsing in Safari, which will lower manifest requests.
• Increased the number of seconds before a video completes where the next playlist item’s content begins to load from two to five in order to better accommodate asynchronous operations and reduce rebuffering.

Advertising
• Enabled Prebid.js to power client side auctions and migrated existing JW Video Player Bidding demand partners to use Prebid’s adapters.
• Created a new event, adWarning in the VAST plugin, which fires when a non-fatal ad error occurs that does not prevent fill.
• Created warning 70001 for VAST error code 1002, which occurs when a VMAP does not contain tracking events for the ad break.
• Added a new boolean configuration option, withCredentials to the advertising block, which when set to false will make just one ad call, one without credentials. By default, this option is set to true, which explicitly makes ad requests with credentials.
• Added support to prioritize ad schedules configured within an individual playlist item over any other ad schedule in Google IMA and Freewheel.


Fixes

Core Player
• Fixed a Javascript exception being thrown in live HLS streams using program-date-time metadata.


8.12

Version Date Description
8.12.5 12 Feb 2020
• Service release, no new features.
8.12.4 29 Jan 2020 Updates

Advertising
• Added support for playlist-level configuration of Freewheel where the freewheel object can now be nested within an individual playlist item object.
• Added localization support and automated translations for all text in the captions styling menu (26 new fields in all).


Fixes

Core Player
• Fixed a bug in Safari where captions were not displayed after a midroll ad.
• Fixed an accessibility issue in Firefox where focusing on the player selected the wrong DOM element.
• Fixed an accessibility issue found in desktop Firefox and Chrome where keyboard shortcuts sometimes stopped working in fullscreen mode after interacting with other elements.
• Fixed a bug preventing long lines of captions from wrapping to the next line.
• Fixed an issue causing style bleeding from the page onto the player version number in the right click menu.
• Fixed a rare issue where live HLS streams would intermittently freeze when loading on browsers other than Safari.
• Fixed a bug on our smallest players causing unintentional seeking when hitting the play/pause button.
• Fixed a bug in Android Chrome where players with floating configured pins the player to the top of the page and is draggable while in fullscreen mode.
• Fixed an issue causing the text of the LIVE button to wrap to multiple lines instead of taking up available space in the control bar on large screens when the text is localized to multiple words.
• Fixed a typo in a Russian translation.
• Fixed an issue in Android Chrome where the player received an orange focus ring in fullscreen mode.
• Fixed an issue where the player remains in playlist mode (displaying the next up and more buttons) when it is loaded with a single item playlist after being initialized with a playlist of multiple items.

Advertising
• Fixed an issue in Freewheel where a Google IMA parameter, vid_t, was erroneously added to ad requests.
8.12.2 22 Jan 2020 Updates

Core Player
• Added support for viewers to change the way captions are styled from within the settings menu on desktop devices. Automated player translation support for all of the new text introduced in the menus and options will be available in 8.12.2.
• Added a new configuration option, liveSyncDuration, for live HLS streams, which enables players to attempt to start live streams at a specified latency target between 5-30 seconds instead of the default 25 seconds. This value also affects where the “live” button seeks to when behind the edge.
• Reduced 232403 errors caused by loading stale levels that return a status 403 in JWP-hosted HLS streams.

Advertising
• Added VAST 4.1 compliant support for the advertiser node in ad tags in both the VAST and Google IMA plugins.
• Added an available -list suffix to our playlist item-level macros that will result in the macro replacement not URI encoding commas.
• Added a new ad rule in the VAST plugin, deferAds, which does not play ads whenever a player is playing in an inactive tab, and resumes on the last unplayed ad when the tab becomes active again. Learn how to configure this rule in our documentation.
• Improved creative selection in the VAST by using bandwidth estimation to choose a rendition with the most appropriate bitrate when there are multiple options with the same dimensions.
• Improved creative selection in the Google IMA plugin by passing bandwidth estimation to the ads manager.


Fixes

Core Player
• Fixed an issue where controls did not automatically hide after inactivity on mobile devices.
• Fixed a bug where the keystrokes expected to enable and disable keyboard shortcuts were not working as expected.

Advertising
• Fixed a bug in Google IMA causing JavaScript exceptions.


8.11

Version Date Description
8.11.10 12 Dec 2020 Fixes

Advertising
• Fixed an issue with the GDPR consent management provider where specifically requesting version 1.1 of the getGDPRConsentData led consentString to not be populated.
8.11.8 20 Nov 2019 Fixes

Core Player
• Fixed an issue causing some DASH streams with embedded captions that use cue alignment to throw a 240000 error in Safari.
• Fixed a bug where keyboard shortcuts didn’t work while interacting with the settings menu.
• Fixed the misalignment of control icons that appear in the middle of the screen on small players.
• Fixed issues with misaligned vertical and horizontal webVTT captions that use cue positioning.

Advertising
• Fixed an issue in VAST and IMA where the adPlay event only fired once per VPAID ad pod.
• Fixed an issue in IMA where the player erroneously passed a skip offset value in ad requests, which is supposed to be set by GAM in the ad response. In VAST, skip is set to 1 in the request when skip is defined in the ad schedule, and 0 when it is undefined.
8.11.7 6 Nov 2019 Updates

Advertising
• In VAST and Google IMA, added better support for domain tracking within AMP based urls.


Fixes

Core Player
• Fixed a bug where shelf widget UI would change size when the player entered floating state.
• Fixed a bug where swiping did not paginate through the shelf UI on iPad OS.

Advertising
• Fixed a bug where the player duplicated custom parameters in ad requests when using Google IMA.
8.11.5 23 Oct 2019 Updates

Core Player
• Added the ability to disable keyboard shortcuts via a toggle in the right click menu.

Advertising
• In VAST and Google IMA, added support for IAB GDPR Transparency and Consent Framework v2. This framework introduces major enhancements and efficiency improvements, including mobile CMP support. It also expands the consent string to include ‘transparency’ features, including publisher controls and additional flexibility for vendors.


Fixes

Core Player
• Fixed a bug causing player touch events to register on the element beneath the player in Safari iOS.
• Fixed a bug that prevented the player from being in focus when playback was initiated via the play button.

Advertising
• Improved the floating player to ensure that the “X” to dismiss is present during ad playback without needing to hover or click.
8.11.4 9 Oct 2019 Fixes

Core Player
• Fixed an issue where a dismissed floating player floats again when scrolling.

Advertising
• Fixed a bug in VAST that added a skip button to ads that were not configured to be skippable.
8.11.3 3 Oct 2019
• Service release, no new features.
8.11.2 26 Sep 2019
• Service release, no new features.
8.11.1 25 Sep 2019 Updates

Core Player
• Improved accessibility on iOS in Safari by inheriting all captions styles set on the device.
• Added automated translation support for Greek.
• Added internationalization support for all fields in the keyboard shortcuts menu released in JW8.8.0, as well as automated translations for all 24 supported languages.
• Improved float on scroll behavior on mobile so that the player sticks to the top when it reaches that position, rather than first scrolling out of view and popping back into place. With this change, the float on scroll feature is truly “float on scroll” on desktop, but more accurately behaves as “sticky” on mobile.

Advertising
• In VAST, added support for the [DEVICEUA] tracking pixel or __device-ua__ in the ad tag, which sends the user’s device agent. Also added the ad tag support in Google IMA.
• In VAST, added support for the [PAGEURL] tracking pixel, which sends the page where the ad is intended to play.
• In VAST, added support for the [REGULATIONS] and [GDPRCONSENT] macros, which tell the ad server if GDPR regulations are being used and if consent has been granted, respectively.
• In VAST, added support for the [ADSERVINGID] macro, which adds the AdServingId value to the tracking pixel, which is parsed from the node.


Fixes

Core Player
• Fixed a bug causing a black screen during playback of an audio-only mp4, rather than the poster image persisting in the player.

Advertising
• Fixed a bug in DAI where the player buffered infinitely after resuming playback from a mid-roll.
• Fixed an issue in Google IMA where custom macros added in the custParams block were not being replaced by the correct values.
• Fixed a bug in VAST causing the skip button to show on nonskippable VPAID ads when vpaidcontrols: true.
• Fixed a bug causing VPAID creatives to be cancelled after 15 seconds due to stall detection.


8.10

Version Date Description
8.10.3 6 Sep 2019
• Service release, no new features.
8.10.1 22 Aug 2019 Updates

Core Player
• Added support for updating aspectratio, width, height, and stretching configuration options via the setConfig() API.

Advertising
• Added support for Ad Placement Type (placement). The options are: article, banner, feed, floating, interstitial, slider, or instream. By default, the player will set instream players to instream and outstream players to article. These defaults can be overridden to reflect the appropriate placement type.
• Added the ability to autopause ads based on player viewability by setting ”pauseAds”: true in the autoPause block.
• Added support for displaying VAST icons contained in ad tags.
• Added support for calling jwplayer().skipAd() with VPAID ads.


Fixes

Core Player
• Fixed open vulnerabilities to XSS attacks.
• Fixed a bug preventing thumbnails from displaying in the playlist overlay on IE11.

Advertising
• Fixed an issue causing the wrapped ad tag to not be included in all ad events.


8.9

Version Date Description
8.9.5 1 Aug 2019 Fixes

Core Player
• Fixed an intermittent issue causing captions to no longer render after seeking.
8.9.4 25 Jul 2019 Fixes

Core Player
• Removed three lines of logs appearing in the console for every HLS embed.
• Fixed an issue where resuming a stopped live HLS stream did not display enabled captions automatically in browsers other than Safari.
• Fixed an issue where resuming a stopped live HLS stream with WebVTT captions showed a duplicate track in the captions menu.
• Fixed misalignment of WebVTT captions in IE11 and Edge.
• Fixed an issue causing the playlist overlay to flicker and the countdown to be removed when resizing the player between breakpoints.

Advertising
• Exposed additional metadata about ad creatives in the adImpression and adError events
• In Google IMA, added duration to the adImpression event
• Fixed an issue where a Javascript exception to be thrown when all ad tags in an ad pod 404.
• Fixed an issue where a media time event would fire during an ad break.
• Improved URL detection for players embedded in Google AMP pages to filter out invalid urls.
• Fixed an issue where an ad error caused by an invalid root domain would result in an uncaught exception.
8.9.3 2 Jul 2019
• Service release, no new features.
8.9.2 21 Jun 2019 Fixes

Core Player
• Fixed a bug where the last visible quality level appears highlighted in the list of all available qualities, instead of the currently selected item.
• Fixed an issue where HLS streams buffered indefinitely instead of erroring when an internet connection is dropped.
• Fixed misaligned text in the right click menu and the playlist overlay in right-to-left languages.
• Fixed issues with 360 playback on mobile devices preventing the video from being panned inline or viewed in fullscreen.
• Fixed an issue preventing HLS streams from being cast from the player.

Advertising
• Fixed an issue in the VAST plugin when a wrapper ad tag is found in an ad pod where the root wrapper’s error ping is not sent when an ad error occurs.
• Fixed an issue in the VAST plugin where VPAID ads were not mutable on iPads.
8.9.0 12 Jun 2019 Updates

Core Player
• Extended all of the playlist user interface configuration options in the related block to work for all playlists (not just those of the JWP Recommendations product).
• Added a displayMode option, “none,” which removes a playlist interface during playback. This option is ideal if you’ve created your own playlist widget or interface outside of the player, since having a duplicate inside the player container is redundant. The next video button remains, and the playlist overlay that appears in between videos is configured separately, via related.oncomplete.
• Added a new option to related.complete, none, which automatically advances the video to the next item in the playlist without showing an overlay in between. This is also now the default value and was already the behavior for all manual playlists.
• Improved responsiveness of player so that it is resized whenever its parent container is resized.
• Increased the size of the user interface when a player is larger than 1280px wide (breakpoint 7).
• Decreased the number of icons in the user interface when a player is smaller than 320px wide and added a new breakpoint (-1) to support it.
• Added support for Program-Date-Time metadata in Safari, making this the preferred method for SSAI and live streaming implementations across all browsers.

Advertising
• Added support to pass a GDPR macro in an ad tag using either the VAST or IMA plugin.
• Added support for ad pods in an ad schedule using our VAST plugin. When an ad schedule is configured with an array of breaks that all contain the same offset, the player will automatically create a pod and play the ads in succession before returning to the content. Each ad in the pod may have a separate ad tag, and events such as errors will fire separately for each ad.


Fixes

Core Player
• Fixed an issue with the autoPause feature where a player also configured to autostart with volume muted will not automatically resume playing when brought back into view if the video has already been umuted by the viewer.
• Fixed a bug where the horizontal volume knob appeared when dragging the seek slider.
• Fixed an issue where the next up display did not appear on Recommendations playlist feeds.
• Fixed a bug that prevented social media sharing in the player.

Advertising
• Improved user experience by fixing an issue where the ads mode UI would appear briefly before content playback when only a mid-roll ad was scheduled.


8.8

Version Date Description
8.8.6 15 May 2019 Updates

Core Player
• Removed Google+ sharing support due to the shutdown of that product.
• Added support for sending events to Google Analytics custom trackers.
• Added automatic player localization support for Occitan and Slovenian.
• Made the tabbing behavior in and out of the volume slider consistent to improve accessibility.
• Improved auto pause behavior so that it is consistent across devices.
• Added the ability to configure nextupoffset to display the next up overlay at a specified percent of the way through the video, rather than at a fixed number of seconds from the beginning or end of the video.


Fixes

Core Player
• Fixed an issue on iOS causing playback errors (code 224002) when reopening Safari after navigating away from the app.
• Fixed an issue preventing related.displayMode, which controls playlist user interfaces, from working on Starter and Business edition players.
• Fixed an issue causing captions to appear too high in fullscreen in Safari on devices running iOS.
• Fixed a typo in the word for “Share” in the French translation.
• Fixed a bug where the settings button did not appear in the control bar if audio tracks was the only menu available.
• Fixed an issue causing manual quality selection to revert to Auto in between changing text tracks on DASH streams.

Avertising
• Fixed a bug causing ad cues to disappear from the timeline when toggling controls with the setControls method.
• Fixed ad errors occurring when the MIME type of an ad creative differed from the type of the video content.
• Fixed an issue preventing fallback ads when fallbackOnNoAd is set to true.
8.8.5 24 Apr 2019 Updates

Core Player
• Improved float-on-scroll responsiveness with more precise player visibility detection.
8.8.4 22 Apr 2019 Updates

Core Player
• Added a next up notification to small players.

Advertising
• In the VAST plugin, filtered out 3gpp creatives due to lack of codec support in some environments.
• Fixed an issue in the IMA plugin where programmatically calling skipAd before an ad becomes skippable would not skip the ad, but cause the media to start playing in the background.
• Updated the following Ad Error codes to better reflect the root causes of the error:
  • 60004 is now 10402 (Creative timeout)
  • 60001 is now 10303 (No ads response)
  • 50004 is now 51901 (VPAID general error)
  • 234003 is now 10405 (Request for MP4 creative returns a 404)
  • 242404 is now 10403 (Request for HLS creative returns a 404)


Updates

Core Player
• Fixed an issue causing the player to infinitely buffer when resuming after a stopping a live stream with separate audio tracks.
• Fixed a bug where the captions menu was removed when casting with Chrome unless captions were enabled prior to casting for manifests with sideloaded VTT captions.
• Fixed an issue making captions unavailable when casting if chapter tracks are also present in the feed.
• Fixed a Javascript exception when a Chromecast session errors.
• Fixed style bleeding on some menus that may appear on sites with global ul styles.
8.8.2 2 Jul 2019 Updates

Core Player
• Fixed an issue causing the floating player to go back to its original location on complete of each playlist item. Skipping to the next video by clicking a thumbnail or the next up button was unaffected.

Advertising
• Fixed an issue causing the floating player to go back to its original location on complete of each playlist item. Skipping to the next video by clicking a thumbnail or the next up button was unaffected.


Fixes

Core Player
• Fixed an issue where stalled live HLS streams were not entering the buffer state or emitting buffer events.
• Fixed an issue where players in iframes configured to float would minimize in the iframe instead of the containing page. Floating is not supported in players set up in iframes.
• Fixed an issue causing a floating player to not always be the topmost item on the page.
• Removed logging of the {{Negative cursor position -1}} error in HLS streams.
• Fixed incorrect styling of the Chromecast button.
• Fixed a bug causing the right click menu to be too large.
8.8.1 25 Mar 2019 Fixes

Core Player
• Fixed an issue causing the floating player to go back to its original location on complete of each playlist item. Skipping to the next video by clicking a thumbnail or the next up button was unaffected.
8.8.0 21 Mar 2019 Updates

Core Player
• Added a new object, floating, which keeps the player visible when the original player location is scrolled out of view by minimizing it to the bottom right corner of the screen (and the top of the page in portrait mode on small screens). Viewers cannot hide the floating player and send it back to its original location when floating.dismissible is set to false. Learn more about floating in our documentation.
• Removed a previously undocumented configuration option, floatOnScroll, which was available for a beta version of the floating player. Please use the new floating block above.
• Added the ability for the viewer to drag and reposition the floating player anywhere on the screen.
• Dragging is disabled during ad playback.
• Added a new object, autoPause, which automatically pauses the video when less than 50% in view, including when the player is no longer in the active tab. Learn more about autopause in our documentation.
• Added support for CMAF format streams across all browsers.
• Improved handling of relative protocol urls so that JWP hosted protocol-relative playlist urls can play when accessing a webview that has js embed with file:// protocol. Only jwplatform playlist urls starting with "//" are changed to be loaded over https. URLs for other domains or for ad tags must be fully resolved in the setup configuration.
• Improved the user experience by retaining the paused state after a viewer seeks while paused. Developers who have worked around this in the past by calling pause() on seek no longer need to use the API, but anyone who wishes to resume playback automatically after a seek event now must call play().
• Improved clarity by hiding the settings menu gear icon in the control bar if the only submenu option is also a shortcut icon in the control bar, which applies to sharing and captions.
• Added a volume slider to control bar only players, which is used to play audio. Setting a player’s height to 42px automatically puts the player into control bar only mode.
• Added a reference dialog for keyboard shortcuts within the player, which can be accessed via the right click menu or evoked by pressing SHIFT+?.
• Added support for all playlists to use our recommendations user interfaces by setting related.displayMode to shelf or shelfWidget. Read more about this option in the configuration reference. The default interface for playlists that are not generated through our recommendations product remains as overlay.
• Removed the localization option, playlist, which localized the tooltip text, overlay heading, and aria-label HTML attribute of a playlist overlay. To customize this text, please use related.heading within the intl block.
• Added a shortcut to sharing in the right click menu.
• Added automatic localization support for six new languages: Russian, Indonesian, Korean, Thai, Vietnamese, and Finnish. Check our support article for a full list of the 21 supported languages and to submit a request for additional languages.

Advertising
• Deprecated the on(‘adManager’) event for Google IMA and Freewheel, which fires when the ad manager is loaded. on(‘adsManager’), with an “s”, should be used instead.


Fixes

Core Player
• Fixed a typo in the French translation of the word share.

Advertising
• Fixed an issue causing audio to play in background when a player is removed while it’s loading an ad with the Google IMA client.
• Fixed a bug where chapter markers are not displayed if there is a mid-roll ad break using the Google IMA client.


8.7

Version Date Description
8.7.6 20 Feb 2019 Fixes

Player
• Fixed an issue with HLS live streams where in-manifest VTT captions were not displaying consistently throughout the video.


8.7.5 6 Feb 2019 Updates

Core Player
• Improved the casting experience by starting a casted DVR stream at the live edge instead of at the beginning of the stream.


Fixes

Core Player
• Fixed an issue where custom right click text was not appearing when the player was automatically localized.
• Fixed a bug that caused a javascript exception when exiting fullscreen by pressing the escape key.
• Fixed an issue causing the play icon on small click-to-play players to spin when clicked.
• Fixed a Flash issue preventing seeking in DVR streams in IE 11 on Windows 7.
• Fixed an issue in Safari where clicking on the rewind button during a live stream with DVR would seek back inconsistently, instead of ten seconds.
8.7.4 23 Jan 2019 Fixes

Core Player
• Fixed an issue where screen readers did not read the mute button correctly.
• Fixed an issue in Safari when using the left and right arrow hotkeys to seek where screen readers did not announce the seek if there were multiple players on the page.
• Improved ads accessibility by not fading controls when using the keyboard to navigate and ensuring the skip button is in the correct tab order from left to right. Note that due to third-party limitations, ads rendered in iframes and through the Google IMA plugin may not be accessible.


Updates

Core Player
• Fixed an issue causing the player to infinitely buffer when resuming after a stopping a live stream with separate audio tracks.
• Fixed a bug where the captions menu was removed when casting with Chrome unless captions were enabled prior to casting for manifests with sideloaded VTT captions.
• Fixed an issue making captions unavailable when casting if chapter tracks are also present in the feed.
• Fixed a Javascript exception when a Chromecast session errors.
• Fixed style bleeding on some menus that may appear on sites with global ul styles.
8.7.3 9 Jan 2019 Updates

Core Player
• Added a new error code, 102007 (ERROR_XHR_FILE_PROTOCOL), which fires when a player fails to set up on a page that is using the file:// protocol.


Fixes

Core Player
• Fixed an issue where HLS DVR content did not start playback at the live edge.
• Fixed a bug where the settings menu would be displayed in the idle state if it was opened via a load API call.
• Fixed an issue where timeline thumbnails and chapter cue points did not display on touch devices when dragging to seek.
• Fixed an issue where sharing.on('open') erroneously fires multiple times after calling load.

Advertising
• Fixed an issue where the opacity of the ad video element was 0 for some VPAID Google IMA ads, which increased the hidden ad rate recorded by ad verification vendors.
8.7.1 2 Jan 2019 Fixes

Core Player
• Fixed a bug where WebVTT did not show after a discontinuity in HLS streams.
• Fixed a bug where WebVTT did not show when captions were enabled after a seek in HLS streams.
8.7.0 17 Dec 2018 Updates

Core Player
• Added a new property to meta events, metadataType, which indicates the type of metadata available in the event. Possible values are: media, program-date-time, id3, date-range, scte-35, and unknown.
• Added a new event metadataCueParsed which is triggered once the metadata cue point is buffered.
• Exposed CUE-OUT, CUE-IN, and DATERANGE SCTE-35 metadata tags that are parsed in an HLS manifest. When a metadata tag becomes active, the following SCTE-35 meta events are fired: #EXT-X-DATERANGE, #EXT-X-CUE-OUT, and #EXT-X-CUE-IN. Localization
• Added automated localization support for Hebrew.
• Added new localization options and updated all automated localization files to include translations for “Mute,” “Unmute,” and “Exit Fullscreen” icon tooltip texts and ARIA labels.
• Changed the default English localization text for slider from “Seek Slider” to “Seek” to reduce screen reader redundancy.
• Improved readability, punctuation, and string concatenation for all right-to-left languages, including Arabic and Hebrew. Accessibility
• Added screen reader support to announce the video position changes when using the left and right arrow keyboard shortcuts while not focused on the timeline element.
• Added screen reader support to announce volume changes when using the up and down arrow keyboard shortcuts while not focused on the volume slider element.
• Improved volume keyboard accessibility by separating the mute icon from the volume slider. Now, when a user tabs to the mute icon, hitting enter will mute or unmute the player. Tabbing out of the mute icon, the volume slider will appear and can be controlled. Tabbing out of the volume slider will hide the slider and move focus to the next focusable icon.
• Fixed a bug causing the volume slider to be read as a “left-right slider” when it is actually an “up-down slider.”
• Added a blue focus ring that appears around any focused element when accessed by keyboard, which improves focus visibility.

Advertising
• Improved ad rendition selection in Freewheel by passing the player’s bitrate estimate to the AdsManager.
• Added a new bidding configuration option, no_vpaid_ads to the optionalParams object, which restricts VPAIDs and only serves mp4 ads with no SpotX VPAID wrapper.
• Added pause reasons to the response for on(‘adPause’) in the VAST, IMA, and Freewheel clients.
Fixes

Core Player
• Fixed an issue where loading an HLS stream via load API does not display the selected captions track, though it is shown as selected in the UI.
• Resolved an issue in which alternate audio tracks may not be detected for HLS streams when no video codec is specified in the manifest.

Advertising
• Fixed an issue where the player fell back to the very first standalone ad in an ad tag even if there is a standalone ad directly after a pod item. This occurred in cases where the "fallbackOnNoAd" attribute is set to true and the pod item failed to play.
• Fixed a bug in the VAST client causing some VPAID ads to throw a Javascript exception when an ad completes playback in Microsoft Edge.


8.6

Version Date Description
8.6.3 14 Nov 2018 Updates

Core Player
• Improved handling of cross-origin 360/VR videos in Chrome 70 and Safari 12 so that instead of displaying a blank screen, the player errors with a new 307012 code.

Advertising
• Ungated VAST 4.1 tags, enabling ad tags marked with the latest VAST version to play. VAST 4.1 features that are not yet supported in JWP will be ignored.
• Added automated localization of all Google IMA text to match the player’s language. Developers may also declare a two-letter ISO language in advertising.locale.


Fixes

Core Player
• Addressed uncaught TypeError that occurs when provided double value for currentTime property on HTMLMediaElement is non-finite.
• Fixed an issue where the error screen was still present after calling .remove() when the player experienced a setupError.

Advertising
• Fixed an issue in Google IMA where content did not background load during a pre-roll on an autostarting player.
• Fixed broken countdown timers in some ads when vpaidcontrols was set to true.
• Fixed a bug in Freewheel causing the adPlay event to fire twice on mobile devices.
8.6.2 1 Nov 2018 Updates

Core Player
• Increased contrast ratio of the quality level label when “Auto” is selected.
• Changed focus behavior so that focus remains on the fullscreen icon when entering and exiting fullscreen.
• Improved responsive scaling of the shelf widget when using the selector configuration option to decouple the width of the player from the width of the widget.


Fixes

Core Player
• Fixed an issue causing header logos to be pushed above the viewable area on JW Showcase sites.
• Fixed an issue in Safari that caused duplicate captions tracks to appear in the menu of a small player (<320px wide) when switching captions in a live HLS stream with embedded WebVTT captions.
• Fixed an issue where players in iframes autostarted out of the viewport when autostart: 'viewable' was set.
• Fixed an issue with paused DVR streams in Safari where the player would seek to the live edge when a viewer scrubbed to a specific position.
• Fixed an issue where pausing and resuming a live stream with 708 captions would cause the captions to no longer be in sync with the video.
• Fixed an issue where parsing an hls manifest containing an EXT-X-MEDIA tag with no URI would result in an error, though this is spec compliant.

Advertising
• Fixed an issue with ad frequency rules in the VAST and Google IMA plugins causing audio from a playlist item to play over the next playlist item when used with the playlistItem() event.
• Fixed an issue in Google IMA where an exception was thrown when an ad times out in an ad pod.
• Fixed an issue in Freewheel where the duration property was not being passed to the Freewheel SDK.
8.6.0 22 Oct 2018 Updates

Core Player
• Added more granular DASH and HLS playback error codes.
• Added specific error codes for cases where an attempt to start playback fails.
• Reduced player setup errors by extending the setup timeout from 30 to 60 seconds.
• Created a new warning event that displays messages in the developer console, alerting developers of non-fatal errors.. Note: Documentation updates about these changes are coming soon.
• Updated the name of the Chromecast button component from button to google-cast-launcher to reflect changes made by Google to be compatible with React.
• Added a new configuration option, displayPlaybackLabel, which adds click-to-play call to action text below the play icon on the idle screen. Testing has shown a 3-5% lift in clicks to play with this feature enabled. The default text is “Play” and it can be customized or translated in the intl block with the playback option.
• Added non-fatal, console-logged warning events and error codes. See our Errors Reference for updates.
• Added a new div, which wraps the player's existing DOM structure, in order to make way for upcoming features. Localization For more information on the release note below, please see the Configuration Reference and the support article on how to translate player text with automated player localization.
• Added support for players to automatically translate tooltips, ARIA labels, and headings into 14 different languages, based on the language attribute declared in the HTML tag on the page. If the lang attribute is not present, the viewer’s browser language will be used, and a translation will still be provided if available. For a full list of languages supported and to request support for another language, please see the support article.
• Introduced a new object, the intl block, which accepts an array of objects of ISO language codes. Each language object accepts all the localization strings previously used in localization. Going forward, developers are encouraged to use the intl block so that a single player can be used across pages localized in any language.
• Added 12 new localizable strings, which includes “link,” “auto,” “off” and more, as well as updated the default values for a few existing strings. All hard-coded strings are now mapped to localizable strings.
• Moved the following fields into the intl block so that they can be localized by language: abouttext, advertising.admessage, advertising.cuetext, advertising.loadingAd, advertising.podmessage, advertising.skipmessage, advertising.skiptext, related.autoplaymessage, sharing.heading. These fields will be backward compatible with their original locations, but will not take advantage of the automated player localization features for those fields. All fields should be nested in the intl block as written.
• Moved localization.related to related.heading within the intl block. In a localization context, related is now an object nested inside the intl block.

Advertising
• Removed the auto-exit fullscreen functionality when using IMA with skippable ads, now that iOS 12 allows the video element (and thus the skip button to) work in fullscreen instead of the native player.
• Decluttered the seek slider by removing cue markers for non-linear (banner overlay) ads.
• In the VAST plugin, added support for the following attributes in the ad tag wrapper:
  • fallbackOnNoAd – selects any stand-alone adwhen set to true and the response contains no ad.The default is false.
  • followAdditionalWrappers – ignores wrappers received in the response when set to false. The default is true.
  • allowMultipleAds – only allows stand alone adswhen set to false. The default is true.


Fixes

Core Player
• Fixed an issue where VP9 streams would not play in Edge.
• Fixed a bug causing the player to error when it was set up after zone.js, a third-party script.
• Eliminated a javascript exception thrown when failing to load the player bidding script.
• Fixed an issue where it was difficult to differentiate between the text decoration of selected and hover states for items in the settings menu, causing confusion about which option was selected.
• Fixed an issue present in IE 11 on Windows 7 where viewers were unable to mute HLS content with the Flash provider.
• Fixed an issue causing some 608/708 captions from HLS streams to render successfully.
• Fixed an issue causing an expired license key error on mobile devices in rare cases where the page is opened, but Javascript is not executed until hours or days later.

Advertising
• Fixed an issue in Freewheel where a "Loading Ad" message would appear when an ad was not loading.


8.5

Version Date Description
8.5.6 19 Sep 2018 Updates

Core Player
• Rotating an Android device with a control-bar only (audio) player or when controls are disabled will not cause the player to go into fullscreen mode.

Advertising
• To make the player more resilient, if IMA erroneously clears the video tag when trying to resume playback from an ad, the player will try to recover by attempting to reload the item source.


Fixes

Captions
• Fixed an issue where the captions menu was not being cleared when switching from a playlist item with captions to one without captions.
• Fixed a captions issue where the last line of captions did not disappear at the correct time.
• Fixed an issue where natively rendered captions text did not scale correctly when entering fullscreen mode in iOS 11.4 and iOS 12 (beta).

360 (VR) Video
• Fixed an issue affecting some Android devices where the video view could not be controlled when moving the device.
• Fixed an issue where the video view would pan erratically or appear jittery during playback on some devices.
• Fixed a bug where adding a pre-roll before 360 content causes 360 functionality to be disabled.
8.5.5 11 Sep 2018 Updates

Service release.
8.5.3 30 Aug 2018 Fixes

Core Player
•Fixed an issue causing players to fail to set up on websites using zone.js.
8.5.2 29 Aug 2018 Updates

Advertising
• Expanded the on(‘adsManager’) event, which fires when the ad manager is loaded, to IMA. This event can be used to integrate with third-party vendors.


Fixes

Advertising
• Fixed an issue on iOS where tapping on an IMA ad was treated as a right click.
8.5.0 10 Aug 2018 Updates

Core Player
• Added a new recommendations interface, the shelf widget, which will place a recommendations shelf directly below the player, outside of the player’s container by setting related.displayMode to shelfWidget .
• Added a new startTime configuration setting for playlist items that will instruct the player to begin playback of the media at the time specified.
• Added multiple channel support for EIA-608 Captions (CC1, CC2, CC3, CC4).


Fixes

Core Player
• Fixed an issue where a duration property with an empty string was being passed to the getPlaylist API getter.
• Fixed a bug where some casting icons would inherit the page’s button styles.
• Fixed an intermittent issue causing 'Cannot Load M3U8: 400' errors in HLS live streams.

Advertising
• In IMA, fixed an issue with SpotX not loading when requireJS is used to instantiate a player


8.4

Version Date Description
8.4.6 13 Aug 2018 Fixes
• Fixed an issue where closed captions were cut off in Android Chrome browsers for portrait and full-screen playback.
8.4.4 27 Jul 2018 Fixes

Ads
• Resolved a bug in the VAST ad plugin that arose in 8.4.3 where calling playAd() in on(‘beforePlay’) would cause the ad and content to play simultaneously.
8.4.3 25 Jul 2018 Updates

Ads
• Updated ad preloading functionality in the VAST ad plugin to include preloading the preroll of subsequent playlist items.
• Added the configuration property ‘bidOnBreaks’ for Video Player Bidding to the VAST ad plugin.
Fixes

Core Player
• Fixed an issue where incorrectly registering a plugin results in a setup error.
• Fixed an issue in iOS Safari where the captions would not be scaled correctly when in fullscreen.
• Fixed an issue In HLS streams where AAC segments with a timestamp of zero were considered to have no timestamp at all.

Ads
• Fixed an issue with custom ad countdown macros where ‘xx’ would be incorrectly replaced with the countdown in cases where the macro is part of a word like ‘Hexx’.
• Fixed an issue with Video Player Bidding with DFP mediation where multiple key-value pairs could get added erroneously.
• Fixed an issue where the VAST ad plugin was not using the element of the VAST XML when provided to determine the ‘skipoffset’.
• Fixed an issue with the VAST ad plugin on iOS Safari where toggling the mute state when using ‘vpaidcontrols:true’ sometimes had no effect.
8.4.2 11 Jul 2018 Updates

Ads
• For FreeWheel ad plugin, added ‘PVRN’, ‘VPRN’ values to the ad request for forecasting purposes.
• For FreeWheel ad plugin, started passing ‘afid’, and ‘sfid’ values to the ad request for fallback purposes if the primary Asset ID and Site Section ID fail.
Fixes

Core Player
• Fixed an issue with players embedded through an iframe where the controls did not fade out when the user moused away from the video via the bottom of the player.
• Fixed an issue that would cause the playlist overlay to sometimes not resize correctly when the player size changes.
• Fixed an issue where custom playback rates were being rounded to the nearest .25 increment, rather than to the nearest hundredth digit.
• Fixed an issue where if the player was set up multiple times, it would reload javascript for a plugin that was already registered. We now ensure that individual plugins are only loaded and registered once. We now remove registered plugins that fail to load or instantiate (allowing new player setups to retry).

Ads
• For FreeWheel ad plugin, added ‘PVRN’, ‘VPRN’ values to the ad request for forecasting purposes.
• For FreeWheel ad plugin, started passing ‘afid’, and ‘sfid’ values to the ad request for fallback purposes if the primary Asset ID and Site Section ID fail.
8.4.1 26 Jun 2018 Fixes
• Fixed an issue with IMA and poor connections where ‘play’ might be called before the ‘playlistItem’ event fires, which resulted in an error.
• Fixed a bug where sharing a video through the player caused the shared links to 404 if the url did not already contain a parameter.
8.4.0 18 Jun 2018 Updates

Core Player
• New player error coding and classification system documented in new Error Reference doc.
• Error codes now appear in the developer console with deep links to the Error Reference page.
• Error code assignments map to new non-technical, viewer-friendly error messages displayed in the player.
• Improved player error display to be responsive to screen width and message length.
• Changed structure of error events. Refer to Error Reference.
• Added support for entering or exiting full screen on Android devices when a user rotates their device.
• Added JWP custom parameters to links that are shared via the sharing menu, which makes it possible to track plays that result from sharing a video.

Accessibility
• Documented our screen reader support in our Accessibility Reference.
• Improved menu navigation to conform with accessibility standards; up and down arrows navigate items in a submenu, while tabbing selects different menus.
• Added the ability to focus on the time slider (progress bar).
• Added screen reader support to read out the current position when focused on the time slider or when seeking.
• Added screen reader support to read out the volume when changed.

Ads
• Created a new configuration property for VAST and IMA, preloadAds, which enables ad preloading for prerolls, midrolls, postrolls in the first playlist item.
• Added a viewableImpression event to VAST and IMA based on the IAB definition of viewability, which states that a video must be 50% viewable for at least 2 seconds.
• Re-added the fullscreen icon during ad playback at all breakpoints. This was previously removed to conserve controlbar space.
• Now passing autoplay/mute status to DFP with VAST.
• Improved behavior of the FreeWheel ad plugin with ad blockers by proceeding directly to content rather than waiting for a timeout.
• Re-added the fullscreen icon to the ads controlbar for all breakpoints.
• Added a new configuration property for IMA ‘bidOnBreaks’ for Video Player Bidding which allows for bidding on only the first X of the scheduled breaks to reduce latency.
• Released full support for Google DAI.


Fixes

Core Player
• Fixed an issue where the cursor would disappear if you set controls to false via setControls().

Accessibility
• Fixed a bug causing the space and enter keys to not work with JAWS in IE 11.
• Fixed an issue that allowed JAWS to focus on hidden elements in IE 11.
• Fixed an issue preventing menus from closing by hitting the ESC key.

Ads
• Fixed an issue with IMA where a blank ad schedule would erroneously throw a 21009 error.
• Fixed an issue with certain VPAID creatives where the mute state of the creative (muted) didn’t match the mute state of the player controls (not muted), and required multiple taps of the mute button to get the mute state in sync.
• Fixed an issue with VAST and the 'vpaidcontrols' configuration property where the mute button had no effect for certain VPAIDs.
• Fixed an issue where the skip button would be visible even though the ad was too short to ever be able to use the skip button.


Known Ads Issue

Core Player
• When enabling ad preloading with IMA for click to play or autostart:viewable players, some VPAIDs incorrectly autostart without a user gesture on Firefox, IE 11, and Edge.


8.3

Version Date Description
8.3.5 5 Jun 2018 Fixes

Ads
• Resolved an issue with Google IMA and Facebook Audience Network (FAN) VPAIDs on iOS where, in certain situations, the ad might incorrectly error out instead of generating an impression.
• Resolved an issue with Google IMA on iOS where certain ads might throw an ad error with click to play players depending on viewability.
8.3.3 5 Jun 2018 Updates

Core Player
• Fixed an issue on Android Chrome where after the pre-roll, a player configured with a Widevine protected playlist item errors, displaying a "File could not be played message"
8.3.2 16 May 2018 Updates

Core Player
• Improved media notifications on Android by including poster images and publisher domain names.

Ads
• Added a new ad error code (900 / 60007) that gets raised when there’s an attempt to load ads on Android 2.3, which is not supported.
• Added creativeID from the VAST XML response to the VAST admanager’s adImpression/adError events.
• For Video Player Bidding, segmented bidresponsetime by now also reporting the script loading time and the time between adBidRequest and adBidResponse.
• Improved “Ad loading” messaging for the VAST admanager to only show when an actual ad is being loaded.
• Improved reporting of Video Player Bidding impression tracking when the DFP mediation layer is used.
• Added breakstart and breakend events to Google DAI.
• Removed ad countdown and pod count messaging in Google DAI “live” scenarios to prevent incorrect messaging.


Fixes

Core Player
• Fixed a bug preventing poster images from displaying during playback of audio-only streams with the audio/mp4 MIME type.
• Fixed an accessibility issue in Firefox that allowed the video tag itself to be focusable.
• Fixed an issue where setting up the player twice resulted in duplicate analytics pings being fired for certain events (eg. completes).

Ads
• For FreeWheel, modified the default admanager URL (which loads when a publisher hasn’t specified their own) to load successfully over both HTTP and HTTPS.
• Fixed an issue with the VAST admanager where certain preroll VPAID ads would incorrectly show the skip button when the vpaidcontrols config option was set.
• Fixed an issue with SpotX Video Player Bidding where the startdelay parameter was being passed incorrectly for midrolls.
• Fixed an issue where calling load() while the player is in the “Loading ad” state could cause infinite buFering in very low-bandwidth situations.
• Fixed an issue with the VAST admanager where setting the oFset for two ads where one is set to be pre and the other 0 would prevent the second ad from playing.
• Fixed an issue with Google DAI on Safari where seeking past multiple unplayed midrolls could cause the player’s timeslider to stall or jump back and forth.
8.3.0 18 Jun 2018 Updates

Core Player
• Improved the playback experience by maintaining quality between videos in a playlist. The player starts subsequent videos in an embed with the quality that most closely matches the previous item based on bandwidth comparisons.
• Improved the playback experience by preserving the viewer’s bandwidth estimation and using it to select an initial quality level when playback starts.
• Added a new configuration option, defaultBandwidthEstimate, which sets an initial bandwidth estimate in bits for all viewers. To set the highest quality as an initial estimate, reference the highest bitrate from your manifest.
• Improved the “Auto” quality label in the settings menu to also show the quality being played when “Auto” is selected.
• Improved the experience of watching live streams that do not have a DVR window. Instead of the pause icon, which used to pause the stream and resume behind the live edge, the player now features a new stop icon, which resumes from the live edge when playback resumes. The player appears paused on the last frame watched. Note that for visual clarity, small players will display a pause icon in the center of the screen while exhibiting the new “stop” behavior. Via API, the pause method will achieve the behavior described here, while the stop method will stop playback and put the player in the idle state.
• Live streams without a DVR window no longer get behind the live edge, and the live icon is no longer clickable to return to the live edge.
• Added a new localization option, localization.stop for the new stop icon in live mode.
• Added right click support via long press on iOS and Android devices. Long pressing displays the JWP right click menu. The menu automatically fades out within three seconds if not interacted with.
• In accordance with GDPR data transparency compliance, added a video information overlay accessible via an option
• About this video in the right click menu. The viewer’s Client ID is displayed in the lower right corner, which can be used to request data from JWP.
• Added a new localization, localization.videoInfo, which can be used to localize "About this video" text in the right click menu.

Ads
• For Video Player Bidding, expanded the number of possible bidResults to include expanded error tracking.
• For Video Player Bidding, added the priceInCents to the adImpression and adError events for all mediation layers.


Fixes

Core Player
• Fixed an issue where DASH streams with large gaps at the beginning of the manifest did not play on IE11 and Edge.
• Fixed an issue where HLS streams missing a frame in the first segment would not start playing with HLSjs.
• Fixed an issue with 608 captions in HLS streams where the captions would flicker in and out with HLSjs.

Ads
• Fixed an issue with the Google IMA plugin where second ad in a pod might not unpause after being paused.
• Fixed an issue with the VAST ad plugin where error tracking pixels weren’t firing for all wrapped tags if only included at the root of the XML response.
• Fixed an issue with the VAST plugin where content would display before a preroll ad if scheduling was done at the playlist item level.


8.2

Version Date Description
8.2.4 24 Apr 2018 Fixes

Ads
• For IMA, fixed an issue with a mute-state incompatibility between Browser Autoplay Policies and Video Player Bidding, where autostart-muted ads might incorrectly fail to play even though the browser would allow it.
8.2.3 16 Apr 2018 Updates

Ads
• For Video Player Bidding, created a new mediation option when the SpotX bidder is in use ‘jwpspotx’ which allows SpotX to act as the primary adserver.
• Updated the FreeWheel ad plugin to start sending video playback events to the adserver.
• Created a new timeout config option for the IMA ad plugin ‘vastLoadTimeout’ and extended the default to 10 seconds from 5.
Fixes

Core Player
• Fixed an issue preventing DASH streams from being cast from the idle state.
8.2.2 4 Apr 2018 Updates

Core Player
• We’re optimizing the click-to-play button to drive more plays for our publishers. Some customers may notice their play button is more stylized than before.
• When the player is within range of the live edge, viewers will now see the video position at the end of the timeslider. Previously, a slight gap erroneously implied the viewer was not at the edge.

Ads
• Created a new 'startOnSeek' ad rule. This can be used in conjunction with seek() in lieu of a play event to define a start position and begin playback. This prevents viewers from being bombarded with ads when starting content playback from somewhere other than the content’s beginning.
• Expanded Video Player Bidding functionality to the VAST plugin. Video Player Bidding was initially only available for IMA plugin.
• For Video Player Bidding, created a new mediation layer ‘JWPDFP’ that combines both existing mediation layers (JWP and DFP), allowing the SpotX bidder to take advantage of the benefits of both mediation layers.


Fixes

Core Player
• Fixed an issue causing the recommendations shelf to appear over ads.
• Fixed an issue causing the live icon to flicker on and off when a viewer falls behind the edge in a DVR/live stream.
• Fixed an issue in IE and Edge where the stretching configuration option was not respected if set to a value other than “uniform.”
• Fixed an issue with live videos causing the position in the control bar to change constantly within a few second range, which negatively impacted the viewer experience.
• Fixed an issue with captions not working in 360 videos in Safari.
• Fixed an issue causing the page to scroll to a random point when players embedded with an iframe were clicked using Safari on iOS.

Ads
• Fixed an issue where the VAST [ERRORCODE] macro was not being automatically filled if present at the root of the XML rather than within the element in the InLine or Wrapper elements.
8.2.0 21 Mar 2018 Updates

Core Player
• Updated the player to check for browser-level autoplay restrictions.
• Updated the player to autoplay with sound if possible, autoplay muted if possible when there are no ads, or autoplay muted ads if autoplayadsmuted: true is set. The player will fall back to click-to-play after exhausting all autoplay options.
• Added the ability to start playback from a non-zero position. You can register seek as a function of the ready or playlistItem events, so that the player starts playing from a specific point.
• Added support for DASH streams on desktop Safari. NOTE: DASH streams are not supported on iOS Safari, nor with Airplay on desktop devices.
• Added user agent detection for UC browser, where previously it was reported as Chrome. UC browser can be detected using the getEnvironment() API.
• Implemented licenseResponseFilter for DASH streams and Fairplay. These methods allow customers to modify or access responses from license requests. This is needed for license wrapping implementations.
• Added a new API method, getCurrentTime(), which exposes the current time value of content. For on-demand streams, currentTime will be the same as the position. For live or DVR streams, the currentTime will not be modified based on duration or seekable range.
• Improved the user experience on mobile devices by allowing the viewer to pause playback of videos that autostart muted without unmuting first.
• Expanded media preloading capabilities to preload subsequent media before the current media ends. As is the case with preloading media that will play after an ad break, this behavior will only occur when the preload configuration option is set to metadata (default) or auto. Players with preload set to none won’t load content in the background.

Recommendations
• Made the recommendations shelf the default display mode for related playlists. For more information, please see the configuration reference and the release notes for v8.1.10.
• Improved accessibility for the recommendations shelf so that viewers can interact with it using a keyboard or screen reader. Viewers can use the left and right keys to paginate through the shelf and the escape key to close the shelf when not in fullscreen mode.

Ads

Google IMA
• Passed the results of the autoplay restrictions check to the ad plugin using the two new fields in the IMA ad request, 'setAdWillAutoPlay' and 'setAdWillPlayMuted'. This is necessary for AdX/AdSesnse. FreeWheel
• Added the adLoading parameter to the adError event.
• Updated the requestTimeout configuration option to work.
• Added the streamType: live configuration option for denoting live streams with FreeWheel ads.
• Improved the user experience by making the player click-to-play when the browser suppresses autostart.


Fixes

Core Player
• Fixed an issue causing the pause event to trigger twice when serving a mid-roll ad.
• Fixed an issue preventing the controls from fading away if you mouse out of the player over the controls.
• Fixed a bug with VTT captions reducing the horizontal space for captions, which drastically increased the number of lines of text per caption.
• Fixed an issue where the player did not successfully cast playlists if the JSON file was greater than 56.2kb in size due to a memory restriction on chromecast devices


8.1

Version Date Description
8.1.12 8 Mar 2018 Updates

Service release, no new features.
8.1.11 1 Mar 2018 Updates

Service release, no new features.
8.1.10 22 Feb 2018 Updates

Core Player
• Added the ability to configure when live streams time out. The new liveTimeout configuration option accepts a number. The default, undefined behavior is dependent upon segment length and differs slightly across providers. To configure a stream to never time out, set this value to 0.
• Added the ability to modify headers mid-stream with a new licenseRequestFilter configuration option in Fairplay DRM blocks. This option already works with Widevine and Playready.

Recommendations
• Added a new recommendations interface called Recommendations Shelf, which allows viewers to browse JW Recommended videos throughout the playback experience. This feature, available to all customers with a Recommendations entitlement, will provide more paths for engaging with content that is most relevant to your audiences, ultimately deepening engagement and powering additional monetization opportunities. To enable the shelf, include "displayMode": "shelf" within the related block in your setup configuration. The current overlay interface remains default behavior when displayMode is undefined or set to overlay.
• Added a new localization option, localization.close to customize the text of the close button added in the recommendations shelf. The default text is “close.”
• Updated the default localization.related text to “More videos.” This localization option affects the Recommendations Shelf button above the control bar in shelf mode, as well as the tooltip and the overlay title in overlay mode.
• Updated the default discover icon in the control bar to improve discoverability. Known issue: We’ll be making the new recommendations shelf fully accessible by keyboard in 8.2.0


Fixes

Core Player
• Fixed an issue causing single-variant audio streams to error very slowly. Streams now error within 30 seconds.
• Added an ARIA label for the “Live” button, which was erroneously omitted from previous versions.
• Fixed a bug that caused in some audio-only streams to not start in the hlsjs provider.
• Fixed an uncaught type error when loading a Related playlist in conjunction with a manual playlist. Functionality was not affected.
• Fixed an issue where autostarting JW Live streams that return a 404 did not display the fatal error after setting up, resulting in a blank screen.
8.1.8 16 Apr 2018 Updates

Core Player
• Added support for TTML captions with DASH streams.
• Added a new localization option, localization.copied. The word “Copied” appears as default text whenever a viewer clicks on the link option in the sharing menu. This new option can be used to customize or translate that text.
• Improved readability of the live/not live indicator. Instead of an SVG icon, the word “Live” is now plain text, which can be localized with localization.liveBroadcast.
• Updated the default text for localization.liveBroadcast from “Live Broadcast” to “Live.”


Fixes

Core Player
• Fixed an issue with DASH streams where the correctly labeled captions track did not work and an internal text track labeled “Shaka Player TextTrack” was being shown in the menu.
• Improved the spacing between the current time and local time in Edge browsers.
• Fixed an issue where the play button was not perfectly center-aligned at low breakpoints.
• Fixed an issue where the play display icon appeared when transitioning between media instead of the buffer icon.

Known issues
• DASH streams encoded with gaps may buffer indefinitely in IE and Edge.
8.1.4 12 Feb 2018 Updates

Service release, no new features.
8.1.2 6 Feb 2018 Updates

Service release, no new features.
8.1.1 31 Jan 2018 Updates

Core Player
• Improved the user experience when the preload configuration option is set to metadata (default) or auto. Video content will now preload during ad playback, resulting in a seamless transition from pre-roll and mid-roll ads to the video content on most reliable connections. Players with preload set to none won’t load content in the background. The visual quality and buffer events still fire in the same order as they always have, but before the play attempt event, instead of after play.

Ads
• Updated FreeWheel ad plugin to include URL request parameters noting the stream is live vs VOD.
• Improved the IMA ads UI to account for Google ads with built-in skip buttons, countdowns, etc.
• Modified and improved adimpression/aderror events to include the full list of wrapped tags.


Fixes

Core Player
• Fixed an issue affecting DASH streams where a manual quality selection reverts to “auto” after a midroll ad.
• Fixed a bug where chapter marker cue points were not correctly aligned on the timeslider.
• Fixed a bug that broke the error state layout when a video’s description was too long.
• Fixed an issue where multiple players embedded on the same page would all have the same sharing embed code.
• Fixed incorrect reported user agent detection for Edge 14 on Windows phones.
• Fixed an issue with the addButton API where an erroneous undefined class was added in the DOM when the optional class parameter was not set.
• Fixed a bug causing the Next Up overlay to flicker when the cursor remains hovered over it.
• Fixed broken fullscreen functionality when a JWP container div has a numeric div ID.
• Fixed an issue where the fullscreen button tooltip would appear clipped by the edge of the player if the fullscreen localization text (localization.fullscreen) was too long.
•Fixed a problem with 2G connections where the player showed a network error if setup did not complete within 25 seconds. Now, the player will show a timeout error if setup does not complete within 30 seconds.
•Fixed an issue where 360 videos could not render in VR mode if included in JW Platform-hosted playlists. Now, all 360 videos in a single or multi-item playlist will play as expected.

Ads
• Fixed an issue with incorrect order of wrapper tags reported in adImpression/adError events.
• Specifically ‘tag’ field now has the last tag that resulted in impression/error and ‘wrappedTags’ array has all preceding tags.
• Added ‘wrapperAdSystem’ array to Impression/Error events that reports ad system for all wrapper tags, but the last one, that goes into ‘adsystem’ (same pattern as above).
• Fixed an issue with the VAST plugin where empty VMAP responses could result in infinite buffering for autostart players.


8.0

Version Date Description
8.0.13 17 Jan 2018 Fixes

Core Player
• Fixed an issue with DRM streams using FairPlay, where skipping to the next playlist item resulted in a fatal error.
8.0.11 18 Dec 2017 Fixes

Core Player
• Fixed an issue in the Google Analytics Pro plugin where older types of GA embeds were not working.
8.0.10 14 Dec 2017 Updates

Core Player
• Added support for the most recent Google Analytics embed type, gtag.js. Older types of embeds are still supported.
• The player now marks events sent to Google Analytics nonInteraction: true if they were not manual viewer interactions. This enhancement increases bounce rate accuracy.
• Improved the design and interaction of the discovery and playlist overlay in small players, making it our most accessible overlay yet. The overlay now supports swipe interactions and keyboard shortcuts, making it easy to navigate between items. You can page through the list of items either by swiping left or right on touch devices or using the keyboard’s left or right arrows. The overlay can be closed using the escape key. Finally, you can tab through all the elements in the overlay and interact with them using the enter key.
• Improved the user experience with new Discover and Playlist headings, which provide context for the discover and playlist overlays. The headings and the tooltips for the overlay’s icon in the control bar can be customized in a setup block with localization.related and localization.playlist.
• Improved the autoplay experience on mobile by showing controls when playback starts. Previously, viewers could not control the video until they unmuted the video by tapping an icon in the lower right corner of the screen. Now, the mute icon will still appear in the corner when controls fade away, but tapping on the screen brings up the controls immediately.

Ads
• Added the ability to localize the “Loading Ad” message for IMA and FreeWheel plugins.
• Added the ability to set the number of allowable redirects in IMA above the default for cases like header bidding.
• For FreeWheel, added a new configuration option customadunitname that allows for specifying the SLAU query parameter for each ad break.


Fixes

Core Player
• Fixed a bug where DRM protected content could not play after non-DRM protected items when using .load().
• Fixed an issue where live streams would not fall back to a backup stream when the first variant could no longer be played.
• Fixed a bug causing content to scale improperly on Edge 16 with the HTML5 provider.
• Fixed an issue causing some page styles to bleed into the playlist overlay.
• Fixed a bug where the poster image would not display on audio-only playlist items.
• Fixed an issue in HLSjs causing a loop when parsing null characters in ID3.

Ads
• Fixed an issue with the VAST plugin where the player could hang when a VPAID JS tag returned a Flash creative when using HLS
• Fixed a bug in the VAST plugin where the error pixel might not fire if no ad response was received
• Resolved an issue where controls=false was being overridden when certain VPAIDs ended
• Fixed an issue with the VAST plugin where skipping multiple midrolls using %s rather than specific offsets could cause playback to start from the beginning.
8.0.5 29 Nov 2017 Updates

Core Player
• Added a callback, onXhrOpen, which can be used to set custom XHR headers in HLSjs for AES-protected HLS streams. The callback gets executed after an XMLHTTPRequest is initialized and before the request is sent. withCredentials is unaffected by this change. If configured, it gets set before onXhrOpen is called. Refer to our configuration reference for implementation details.

Ads
• Fixed an issue with the VAST plugin where the player could hang when a VPAID JS tag returned a now Flash creative when using HLS.
• Fixed a bug in the VAST plugin where the error pixel might not fire if no ad response was received.
• Resolved an issue where controls=false was being ignored when certain VPAIDs ended.
• Fixed an issue with the VAST plugin where skipping multiple midrolls set using %s rather than specific offsets could cause playback to start from the beginning.


8.0.4 16 Nov 2018 Updates

Core Player
• Expanded HLSjs usage to Android Chrome, where it is now the default for HLS playback. This makes the HLS experience more feature rich and includes support for 608 and in-manifest VTT captions, as well as improved playback stability and support. HLS.js usage can be disabled by setting hlsjsdefault to false, which will result in the player using native Android HLS playback.
• Improved our Discover recommendations engine by reducing the likelihood of a viewer seeing a repeat of videos they’ve already seen either by choice or via auto-advance. Items that are manually clicked will not be recommended again for 10 minutes, and items that are automatically advanced will be excluded for one hour.

Ads
• Updated the requestTimeout configuration option to apply to the IMAad plugin, where it previously only applied to VAST.


Fixes

Core Player
• Fixed an issue where some captions did not appear properly center-aligned.
• Fixed a bug where audio-only videos did not display the poster image if set to autostart.
• Fixed a bug where the poster image would not be visible when calling load().
• Fixed an issue causing playback to stall when an empty child manifest is selected. After a failed attempt to play a quality, the player now will remove the quality option from the quality menu.
• Fixed a bug causing the colors in 360 videos to appear inverted on iOS devices.

Ads
• Fixed an issue with autostarted players when Safari 11’s “Never autoplay” setting is enabled. Ads now correctly play after user interaction.
• Fixed an issue where the buffer icon would display during IMA fullslot ads.
• Fixed an issue where the IMA timeout aderror was not firing correctly in certain scenarios.
8.0.1 8 Nov 2017 Updates

Core Player
• All player editions using JW8 now support all HLS functionality, including AES encryption and 608 captions. DRM support remains an Enterprise-only feature.
• To reduce clutter and avoid confusion, the JWP build number has been removed from the right click menu. It was previously displayed for all non-production versioned players.


Fixes

Core Player
• Fixed an issue where VTT Japanese and Korean subtitles in HLS streams did not display in Chrome.
• Fixed an issue where certain HLS streams stalled and could not recover quickly when the quality menu was set to auto.
• Fixed a bug where control bar-only mode players were missing the live icon during live streams and did not display control bar-positioned logos, if configured.
• Fixed a bug where the right click menu would appear outside of the player when right clicking on a menu item or center display icon.
• Lowered the threshold for when the max volume icon would display in the control bar to 75% volume, instead of 100%.
• Fixed an issue where setting a window color for 608 captions did not apply the style to the entire window, but rather only to the right of the captions. The player’s renderer is now used in all browsers except Safari. This gives us more granular control of the way captions are displayed. If you prefer to continue using native rendering in Chrome, you can do so by, setting renderCaptionsNatively to true in your player configuration.
• Fixed a bug where there was no visual feedback that the player was buffering after seeking when using Safari on iOS devices.

Ads
• Fixed an issue where the controls would never hide during content playback after the ad ended when using vpaidcontrols:true.
• Fixed an issue where VAST “progress” tracking pixels weren’t firing.
• Fixed a timing issue with VAST events - they now correctly fire the “started” event when the VPAID AdVideoStart event fires, rather than firing “started” when we get the impression event from the VPAID.
8.0.0 18 Oct 2017 Updates

General Changes
• Updated the default player size to 640px wide x 360px high.
• Upgraded hls.js to version 0.8.4, which enhances the stability of HLS playback in the player and improves HLS stream support.
• The player will now show a center display icon when the player pauses itself due to a failed attempt to play the video, providing more visual indication to the viewer that they need to manually hit play again. This is especially helpful in response to Safari 11, where autoplaying videos with sound are automatically paused on playback unless the user has changed the default browser setting.
• Added the Cardboard mode icon to the idle state, so that when available, viewers can enter 360 mode before starting the video in Android Chrome.
• Added the ability to instantiate a player and immediately begin playback from a click on an element. By calling setup() followed by play(), the user interaction on the element is propagated all the way through to the instantiated player, eliminating the need to interact with the player to start playing media after it’s setup.
• Bundled the most frequently used combinations of player assets (controls, media providers, and browser polyfills) so that all the Javascript needed to begin playback can be provided in fewer responses.
• Improved handling of player asset loading so that users get feedback more quickly when a plugin, component, or non-essential asset fails to load. In the case of non-fatal errors, the player will attempt to recover gracefully. If a required component fails to load, the player will fail to setup and the user will be notified within 20 seconds.
• Separated the core player to make our embed script significantly smaller, shaving off more than 100kb that no longer needs to be loaded and parsed before the player is set up.
• Updated the preload behavior so only the first player on the page or viewable players preload when preload is set to anything other than none.
• Improved the preload: metadata setting so that the player loads the manifest and buffers a maximum of one segment of media for HLS and Dash streams. MP4 streams load metadata only.
• Improved preload: auto so that the player loads the manifest and buffers approximately 30 seconds of media. MP4 streams load based on browser behavior when the preload: auto attribute is set.
• Updated the default preload configuration to do preload: metadata when preload is not set.

Ads
• Included the Skip button in the vpaidcontrols configuration’s functionality for the VAST plugin.
• Included the duration present in the VAST XML on the adImpression event.
• JW8 dropped support for VAST 1 as it has been deprecated by the IAB and has extremely low usage and a high risk of causing ad errors.
• Added MediaFile compliance metadata from VAST4 tags to Vast plugin API events, including the reason the tag was not compliant.
• Updated our Vast plugin to support playback of VAST 4 ad tags.
• The following VAST 4 metadata has been added to Ads API events: UniversalAdID, Categories, ConditionalAd, as well as compliance with IAB guidelines on MediaFile setup.
• Added support for m3u8 MediaFiles in ad tags in our Vast plugin.

API Updates
• Added a getEnvironment() API method, which provides an object containing all browser and operating system information decomposed from the user agent.
• Deprecated the primary configuration option. Flash can no longer be defined as a primary provider. The player will choose the appropriate provider based on the environment it's in and the media type.
• Deprecated all jwplayer().onEventName events, Browser/OS util methods and player constants that follow the pattern JWPLAYER_*.
• Deprecated the ability to toggle the state simply by calling play() or pause(). This change makes play and pause behavior more predictable in the API. Going forward, calling play() while media is playing does nothing, as does calling pause() when the player is already paused.
• Changed the configuration options and API for using playback rate controls. In JW8, playbackRateControls is a boolean that toggles the visibility of playback rates in the global menu. playbackRates, a new optional config property, accepts an array of numbers which overrides the default playback rate options of 0.5, 1, 1.25, 1.5, and 2. This improves upon the first iteration of the feature, released in 7.12, where playbackRateControls controlled both the menu’s visibility and custom playback rates. This change is backward compatible and will not affect JW7 players upgraded to JW8.
• Created a backward compatibility script so that custom code written against deprecated API functionality will continue to work when a JW7 player is updated to JW8.

User Interface Improvements
• The control bar now uses flexbox, which simplifies the DOM structure and css. Icons are no longer grouped in left, center, and right divs.
• Consolidated all control bar icons that had their own menus into a single settings menu, accessible via the gear icon in the control bar. This includes quality, audio tracks, captions and playback rate controls. Captions still has a dedicated icon in the control bar for accessibility reasons. The sharing menu has also been added to the settings menu. Like captions, sharing has a dedicated control bar icon that opens the settings menu to the sharing sub-menu.
• Removed webfont-based icons and replaced them with inline SVGs. The following icons have been redesigned for JW8: live, quality, buffer, error, and rewind 10 seconds.
• Changed all dock icons from being positioned in the upper-right corner to the control bar. The addButton API now adds buttons to the control bar. These buttons will be added to the right of the logo if the logo is present in the control bar.
• Improved the timeslider behavior so there’s a visual indication when a user hovers or scrubs to a new playback position. We’ve also increased the touch target to make it easier to engage with the timeslider on touch devices.
• Leveraged the timeslider as a progress indicator during ad playback by making it visible and positioning it below the control bar icons.

Skins
• Added 11 new skin customization options in JW8. If supplied, the three customization options that were available in JW7 (skin.background, skin.inactive, skin.active) will map to the new options in JW8. Note that there’s no mapping to the new skin.timeslider.rail option.
• Deprecated all JW7 skins. JW8 debuts our all-new default skin featuring a transparent control bar, tooltips, and a modern interface, which carry over to ads and audio only modes.

Accessibility
• Added tooltips that appear on hover or focus over any icon in the settings menu, which increases clarity for viewers.
• Improved support for keyboard navigation in JW8. Users can tab to advance through buttons and menu options in the player, and use the enter key in lieu of a click to take action on any focused item. The escape key can be used to close overlays and menus.

Logos
• Added a new logo position option, control-bar, which places the logo in the control bar with an optional clickthrough link. Note: currently, all logos in the control bar render in a square container. A future release will support rectangular logos.
• Deprecated the timeSliderAbove configuration option since it will be the only layout in JW8.
• Updated the default logo margins to be 20px from the sides of the player.
• Added maximum dimensions for logos. The height or width of a logo will not exceed 15% of the player’s height or width. The player will dynamically resize logos to fit within the height and width constraints so as to not obstruct the video.


Fixes

Core Player
• Fixed an issue where the copy button in the sharing menu linked to a JWP content preview page instead of the page where the player is embedded. This only occurred when no custom URL is provided in the player configuration. If a custom URL is provided, that link will be copied instead.
• Fixed an issue where the player only returned one subtitle track in Safari when multiple are present in the HLS manifest.
• Fixed a bug where HLS streams skipped ahead and incorrectly reported the position after a discontinuity in Chrome and Firefox.
• Fixed an issue where HLS streams paused or stalled when automatically upshifting quality in Chrome and Firefox.
• Fixed a bug where the casting icon would not appear in the control bar on autostarting players with pre-roll ads.

Advertising
• Updated the FreeWheel plugin to time-out quicker when it’s blocked by an adblocker.
• Fixed an issue in the Vast plugin where content might not start after a VPAID ad was skipped.
• Fixed an issue in the Vast plugin with VPAID clickthrough where the player was ignoring playerHandles=false, which resulted in both the player and the ad opening tabs, rather than just the ad handling the clickthrough action.

Affected Beta and RC Versioned Players Only
• Fixed an issue where free edition players would not play HLS streams in Flash.
• Fixed an issue where the control bar faded when focused on, preventing keyboard navigation.
• Fixed an issue with players in audio-only mode where custom colors would only appear once playback begins, and would set up with the default colors.
• Fixed a bug where controls were hidden when a player had casting configured in audio-only mode.
• Fixed an issue where the error icon did not appear on setup errors.
• Fixed an issue where rectangular logos positioned in the control bar were resized to fit within 24px square dimensions. The player will now resize logos positioned in the control bar to occupy a max width of 44px and a max height of 24px, which is consistent with the height of other control bar elements.
• Ads are once again supported in Platinum edition players, remedying their erroneous removal from prior 8.0.0 beta releases.