Releases: jwplayer/jwplayer-sdk-documentation
Emsg support
Our metadata API events allow developers to listen for timed metadata embedded in the media file to signal the start and stop of an ad. This release adds support for parsing Event Message box events, or esmg, which carries ID3 metadata, often used in DASH streams.
3.15.1
Release Date: July 30, 2020 (Build 108)
- Fixed an issue where setting up a player with controls set to false and then calling
load()
resets the controls to true. - Fixed a bug causing the
InPlaylistTimedMetadataEvent
to not fire as expected. - Fixed an issue where calling
onPause()
before the IMA SDK setup is complete, crashes the app with a NullPointerException.
3.15.0
Release Date: June 25, 2020 (Build 107)
- Added support for triggering the
on('meta')
andon('metadataCueParsed')
methods based on in-band emsg timed metadata. - Updated to version 8.15.1 of the web player core.
- 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. - Removed trace references to advertising ID to comply with Google's new policies around children's app submissions. We recommend apps remove the additional dependency on the
jwplayer-ima component/module
as well. - Fixed a rare case where using a specific USB-C-to-HDMI adapter causes apps with JW Player to crash.
Asynchronous API
Business logic often requires a need to execute asynchronous code that requires knowledge of the next playlist item before either making an adjustment to that playlist item, or preventing its playback altogether. We've extended the API to allow for asynchronous blocking between playlist items. Loading, ads, and playback of the next playlist item can be blocked until async operation resolves.
3.14.0
Release Date: June 8, 2020 (Build 106)
Updates
- Added API to enable developers to modify a playlist item, prevent it from loading and transition instead to the following item, modify the ad block, and disable ads.
- Service improvements to increase stability.
Fixes
- Fixed an issue where the mute API did not affect Freewheel ads.
AndroidX Migration & Preview Thumbnails
Android 3.13.0 is full of new improvements! Our Android SDK now uses Android Jetpack libraries to ensure best practices, has support for preview thumbnails, and more. Check out the full list of updates below.
3.13.1
Release Date: May 19, 2020 (Build 102)
Updates
- Added support for the VAST ad client's new adWarning event 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. More information can be found in the ad warning documentation.
Fixes
- Fixed an issue where the player fails to resume DRM playback after backgrounding the app.
- Fixed a bug causing the setting
controls
to be ignored if defined in the setup configuration. - Fixed a bug where Google IMA ads could not be muted.
- Fixed an issue causing the player to pause after seeking from the play state instead of resuming playback.
- Fixed an issue causing the
onFirstFrameListener()
to fire before theonPlayListener()
event. - Fixed a bug where if the viewer pauses playback during a Google IMA or Freewheel ad and rotates the orientation of the video, the screen becomes black instead of remaining on the current ad frame.
3.13.0
Release Date: May 7, 2020 (Build 98)
Updates
- Breaking Change: As of version 3.13.0 the Android SDK now uses AndroidX (Jetpack) libraries. Please refer to the official Migrating to AndroidX guide to learn more about how you can migrate your application code.
- Added support for
PlaylistItem.startTime
property that allows developers to define the number of seconds from the start of a media asset when playback should begin. - Added a
PlaylistItem.externalMetadata
field that allows developers to add external metadata which will be surface at a specified time in the video and delivers optional custom user data. - Added the ability to use VTT files to load preview thumbnails for individual shots or scenes in a video. This allows thumbnails to display as a tooltip when the user is seeking forward or backward in the player's progress bar.
- Removed all code enabling Android Advertising ID transmission from Android SDK.
- Upgraded Android SDK to use JW Player 8.13.1.
Fixes
- Fixed an issue where 608 captions would not automatically appear on the receiver when captions were enabled on the sender before the casting session was started. The user would need to turn them off and on again during the casting session.
- Fixed an issue where
onPlay
does not fire consistently at the start of Google DAI streams.
Google DAI support
Monetize your live or VOD content with Google IMA Dynamic Ad Insertion (DAI) in our Android 3.12.0 release! Visit our developer documentation for more details on how to get started.
3.12.1
Release Date: April 10, 2020 (Build 96)
Fixes
- Fixed an issue where calling
removeButton()
did not remove the button from the player - Fixed an issue where after ad playback the audio of the content plays before the video
- Fixed an issue where the
onPlay
event doesn’t fire after skipping a FreeWheel mid-roll ad - Fixed an issue where the labels in the captions menu did not match the caption languages when casting.
- Fixed an issue where post-roll snapback does not occur when using the seek API to seek past the end of a stream that is configured with Google IMA DAI
- Fixed an issue where the player displays the wrong position in the UI when using the API to seek beyond the content duration in streams configured with Google IMA DAI
- Fixed an issue where the player control bar is visible before a Google IMA, Google IMA DAI, or FreeWheel pre-roll ad starts playing
3.12.0
Release Date: March 16, 2020 (Build 94)
Updates
- Added support for Google IMA DAI. See our Android SDK developer documentation for more details.
- Unbundled the FreeWheel SDK from the JW Player Android SDK aar
FreeWheel improvements and more!
Android 3.11 is packed with some great updates! We have exposed HLS #EXT-X-DATERANGE tags that can be used to indicate when there are temporal breaks in a live stream—great for ad stitching. Speaking of advertising, we upgraded and made improvements to our FreeWheel ad client.
3.11.0
Release Date: February 14, 2020 (Build 93)
Updates
- Upgrade FreeWheel ad support to version 6.32.0
- Added support for playlist-level configuration of FreeWheel where the
freewheelSettings
can now be nested within an individualPlaylistItem
. Use case descriptions and a code sample can be found here - Added post-roll ad support in the FreeWheel ad client
- Added a new callback for In-Playlist Timed Metadata, which supports
DATERANGE
andPROGRAM-DATE-TIME
tags. TheDATERANGE
andPROGRAM-DATE-TIME
metadata events fire when playback enters the section of an HLS stream tagged with#EXT-X-DATERANGE
or#EXT-X-PROGRAM-DATE-TIME
.
Fixes
- Fixed an issue where
onVisualQuality
is not called when a stream automatically changes bitrate
Add buttons with custom callbacks
New API methods.
3.10.0
Release Date: December 20, 2019 (Build 92)
Updates
- Added
addButton()
andremoveButton()
API methods allowing developers the ability to add or remove player buttons to the player control bar. When new buttons are added via theaddButton()
API method, they can call back to developers' custom native code. - Upgraded Android SDK to use JW Player 8.11.8
- Updated order of play events.
- Exposed
creativeAdId
andcreativeID
in theAdImpressionEvent
payload for Google IMA ads.
Fixes
- Fixed issues with misaligned vertical and horizontal webVTT captions that use cue positioning
- Fixed an issue where duplicate captions appear for playlist items that contain both side-loaded and in-stream 608 captions
- Fixed issue where streams with IcyInfo metadata cause player crash
Version 2.1
Fixes and updates.
2.2.1
Release Date: Feb 11, 2016 (Build 142)
Fixes
- Fixed an issue with seek() where calling seek() before play() would cause the seekbar to not update the playhead position during playback
2.2.0
Release Date: Feb 01, 2016 (Build 141)
New Features
- ID3 Timed Metadata
- Local Media File Playback
- Chromecast Beta
- Support for newly added JW7 API callbacks (onSeeked, onFirstFrame, onAdRequest, etc.)
Updates
- Enhanced fullscreen in various layouts (Linear, Frame, Relative)
- Improved Fragment Fullscreening
Fixes
- Fixed an issue with VAST 3.0 VMAP not working as expected
- Fixed an issue where IMA pre-roll tags did not work as expected for live streams
- Fixed a bug where dragging to seek would cause an infinite buffer state
- Fixed an issue where Autostart config option was not being honored
- Fixed an issue where a player control bar that is set to hidden would become visible in fullscreen
- Fixed an issue where ExoPlayerWrapper is null in SurfaceHolder callback
Known Issues
- Developers who are already using Google's Cast Companion Library and are not using version 2.6.1, should add -dontwarn com.longtailvideo.jwplayer.cast.* to your ProGuard configuration to avoid conflicts.
Version 2
Version 2.0 is a complete rewrite of the JW Player SDK for Android to make it easier for developers to add world-class media playback to any Android app. The migration guide with API changes and code examples, makes upgrading from 1.x to 2.0 a breeze.
2.0 also marks a significant step toward our goal of “One JW Player”. The developer-facing APIs in the SDK are native to the target platform, but they are wrappers around our flagship JW Player 7 JavaScript/HTML5 library (jwplayer.js). The core functionality of the SDK (player customization, captions, analytics, etc.) is powered by JavaScript, but all the developer-facing APIs in the SDK are native Java classes. As a result, we still achieve very high performance by doing the actual video decoding and playback in native code.
One of the many benefits of this “One JW Player” architectural change is our ability to leverage JW Player 7 features such as CSS skinning and a DPI-responsive player UI optimized for mobile.
For more information about our JW Player SDK for Android 2.0 release, please read our blog post. Thanks!
v2.0.135
Release Date: Dec 16, 2015 (Build 135)
Fixes
- Fixed an issue where calling load() or setup() immediately after setSkin(String) would throw an error
- Fixed a bug where playhead position would not update on the seek bar when calling seek() before play()
- Improved CSS skin downloading
v2.0.131
Release Date: Dec. 03, 2015 (Build 131)
Fixes
- Fixed an issue where the Video Quality button would be broken for HLS streams that contained two quality levels.
- Fixed a bug with onTime() where sometimes the webplayer truncated the last zero (e.g. returning 1.23 instead of 1.230)
- Fixed an issue where getPosition() and getDuration() always returned 0.
- Fixed an issue where several listeners in PlayerStateHandler were not registered.
v2.0.129
Release Date: Nov. 17, 2015 (Build 129)
New Features
- WebVTT & DFXP/TTML Caption Support
- Programmatic Player Instantiation & Configuration
- Player Customization
- CSS Skinning
- DPI-responsive player UI with mobile optimization
- Custom Logo Overlay
- Smooth Streaming support
- Multiple Players in a view
- JWPlayerFragment & JWPlayerSupportFragment classes
Updates
- VAST 3.0 Linear Ads, & Ad Pods
- Google IMA
- Fullscreen Handling
- Manual Quality Switching
- Captions
- Sidecar SRT
- Custom styling
- Multi-track Captions
Fixes
- Fixed an issue where Google IMA was throwing stacktraces during and after Ad-Playback.
- Fixed an issue For Google IMA Preroll Ads where there was a delay between pressing play and displaying the Ad.
- Fixed an issue where after a Google IMA Midroll Ad was played, the player restarted the video instead of resuming it at the correct position.
Known Issues
- TTML (DFXP) subtitles are working but there is no styling applied to them. We do not currently support styling them.
- Playlist icon does not display on the control bar on some phones.
Version 3.7.0
3.7.1
Release Date: September 25, 2019 (Build 77)
Fixes
- Fixed issue where an IllegalStateException is thrown after a video plays 128 times or more
3.7.0
Release Date: August 16, 2019 (Build 76)
Updates
- Exposed nextupOffsetPercentage property which allows the next up overlay to be displayed 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. When the
nextupOffsetPercentage
is set, it overridesnextupOffset
Seamlessly autogenerate Swift headers from Objective-C
For the Swift developers out there! We have updated our Objective-C headers for improved Swift header autogeneration. See it yourself in the latest iOS SDK 3.6.0 release.
3.6.3
Release Date: September 12, 2019 (Build 102)
Update
- Upgraded to Google IMA iOS version 3.9.2
- 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 callplay()
Fixes
- Fixed an issue where 608 captions can not be disabled in a playlist item containing side-loaded captions
- Fixed an issue where duplicate captions appear for playlist items that contain both side-loaded and in-stream 608 captions
- Fixed issue where VMAP ads scheduled with Google IMA in live streams cause the player to infinitely buffer
3.6.2
Release Date: September 5, 2019 (Build 101)
Fix
- Removed debug assertions from production build in
ReachabilityCallback
function to avoid uncaught exception
3.6.1
Release Date: August 7, 2019 (Build 100)
Fixes
- Fixes bug where pinch gesture recognizers were ignored in fullscreen. Now custom pinch gesture recognizers supersede our default pinch gesture recognizer which is used for zooming in and out.
- Fixed an issue where the
onControlBarVisible
callback was not firing - Fixed an issue where calling the
stop()
method would stop the player but did not return it the idle state - Fixed issue where side-loaded captions did not display during offline playback
3.6.0
Release Date: July 15, 2019 (Build 99)
Updates
- Added side-loaded caption support for offline playback
- Exposed nextupOffsetPercentage property which allows the next up overlay to be displayed 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. When the
nextupOffsetPercentage
is set, it overridesnextupOffset
- Upgraded SDK to use JW Player 8.8.6
Breaking Changes
- Annotated Objective-C headers to be Swift friendly. This may require code changes for previous Swift implementations.
- Reintroduced the required
fetchContentIdentifierForRequest:forEncryption:withCompletion:
method in theJWDrmDataSource
protocol. This method is required to play DRM encrypted streams.
Fixes
- Fixed an issue where the
onControlBarVisible
callback was not firing when settingplayer.controls:true
- Fixed warning flag by the main thread checker