For many publishers with premium or co-sponsored content, the blurry first few seconds of a video — before the player determines the viewer’s bandwidth and moves to a higher quality if network conditions allow — can negatively impact both viewer experience and brand integrity. In JW 8.3, the player solves this problem with intelligence by maintaining quality levels across both videos in a playlist and play sessions, providing a consistent playback experience as viewers consume more content. With a waterfall of fallbacks, including a new configuration option to provide an estimate for first-time viewers, this release takes a critical step toward ensuring that publishers no longer have to make a choice between quality and speed.
We’ve also added a feature under GDPR compliance for data transparency to assist customers whose viewers request access to their data. In order for JW Player to provide the data we collect, viewers must provide publishers with their Client ID. Publishers can instruct viewers to find their Client ID by right clicking (or long pressing on iOS and Android) on a JW Player running 8.3.0 or above, and selecting the “About this video” option from the menu. The viewer's Client ID appears in the lower right corner of the video information overlay.
Release Date: June 5, 2018
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.
Release Date: May 21, 2018
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"
Release Date: May 16, 2018
Improved media notifications on Android by including poster images and publisher domain names.
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.
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).
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 buffering in very low-bandwidth situations.
Fixed an issue with the VAST admanager where setting the offset 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.
Release Date: May 3, 2018
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 JW Player 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 JW Player.
Added a new localization, localization.videoInfo, which can be used to localize "About this video" text in the right click menu.
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.
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.
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.