Releases: kaltura/playkit-android
v4.17.0
Changes from v4.16.0
Features
- FEC-11403 | External Web VTT Thumbnail image parsing support
Applications now can give their own external thumbnails VTT file so it will be recognized as an image track,
player will have the ability to query for ThumbnailInfo
and use the data to download the image URL, cut if needed and display it on seekbar.
on Playkit
:
After you have PKMediaEntry
whether you have it from provider or you have created it by your self
you have to populate the ExternalVttThumbnailUrl by calling,
mediaEntry.setExternalVttThumbnailUrl(VTT_URL);
When player has finished loading it's track you will be able to get the image track data and save it.
player?.addListener(this, PlayerEvent.tracksAvailable) { event ->
if (event.tracksInfo.getImageTracks().isNotEmpty()) {
isImageTrackAvailable = true
if (!event.tracksInfo.getImageTracks().isEmpty() && event.tracksInfo.getImageTracks().get(0) is DashImageTrack) {
imageTracks = (event.tracksInfo.getImageTracks() as MutableList<DashImageTrack>).toMutableList()
} else if (!event.tracksInfo.getImageTracks().isEmpty() && event.tracksInfo.getImageTracks().get(0) is ImageTrack) {
imageTracks = (event.tracksInfo.getImageTracks() as MutableList<ImageTrack>).toMutableList()
}
}
}
Getting ThumbnailInfo
:
var thumbnailInfo: ThumbnailInfo? = player?.getThumbnailInfo(positionMS)
-
FEC-11372 | HLS Widevine Offline Support
Add support on Playkit for offline playback of WV HLS.
Applications can pass to DTG - HLS WV assets for Download and Playkit will be able to play it. -
FEC-11512 | Added retry policy for player on
MediaSource
level
Applications can now pass max retry count for loading each media manifest or inner URL
if no retry is given Exo-Player default retry (3 times) will be used
player.getSettings().setPKRequestConfig(new PKRequestConfig.Builder().
setConnectTimeoutMs(10000).
setMaxRetries(5).
setCrossProtocolRedirectEnabled(true).
build());
OR
player.getSettings().setPKRequestConfig(new PKRequestConfig(true,
DefaultHttpDataSource.DEFAULT_READ_TIMEOUT_MILLIS,
DefaultHttpDataSource.DEFAULT_CONNECT_TIMEOUT_MILLIS,
5));
Bug Fixes
- FEC-11495 | Add
cdnSwitched
Interceptor Event for SmartSwitch Plugin
App can be notified on new switched CDN name
player?.addListener(this, InterceptorEvent.cdnSwitched) { event ->
Log.i(TAG, "InterceptorEvent CDN_SWITCHED " + event.cdnCode)
}
- FEC-11523 | Added additional info in AdInfo object
Added 3 new parameters to AdInfo
private List<String> adWrapperCreativeIds;
private List<String> adWrapperIds;
private List<String> adWrapperSystems;
Plugin's Version
-
implementation 'com.kaltura.playkit:playkit:4.17.0'
-
implementation 'com.kaltura.playkit:playkitproviders:4.17.0'
-
implementation 'com.kaltura.playkit:youboraplugin:4.17.0'
-
implementation 'com.kaltura.playkit:imaplugin:4.17.0'
-
implementation 'com.kaltura.playkit:fbadsplugin:4.17.0'
-
implementation 'com.kaltura.playkit:kavaplugin:4.17.0'
-
implementation 'com.kaltura.playkit:vrplugin:4.17.0'
-
implementation 'com.kaltura.playkit:googlecast:4.17.0'
ExoPlayer Version v2.14.0
v4.16.0
Changes from v4.15.0
Features
-
FEC-10339 | Prefetch Support* (kaltura/kaltura-player-android#130)
This feature let the app to download a part of the media. It will help to start the playback without any initial loading because the initial part of the media is already downloaded. Once the prefetched part of the media completes the playback then it joins with the online playback seamlessly. Prefetch Sample
*This feature is only supported in Kaltura-Player
See the migration guide to Kaltura-Player
Bug Fixes
-
FEC-11261 |
AudioCodecSettings$codecPriorityList
is not effective onTrackSelectionHelper
(#711) -
FEC-10172 | Marked
setMaxVideoSize
andsetMaxVideoBitrate
deprecated. Need to usesetABRSettings(ABRSettings)
instead.(#721) -
FEC-11339 | Avoid calling
overrideMediaVideoCodec
if there is single codec in Video Stream (#726)
Plugin's Version
-
implementation 'com.kaltura.playkit:playkit:4.16.0'
-
implementation 'com.kaltura.playkit:playkitproviders:4.16.0'
-
implementation 'com.kaltura.playkit:youboraplugin:4.16.0'
-
implementation 'com.kaltura.playkit:imaplugin:4.16.0'
-
implementation 'com.kaltura.playkit:fbadsplugin:4.16.0'
-
implementation 'com.kaltura.playkit:kavaplugin:4.16.0'
-
implementation 'com.kaltura.playkit:vrplugin:4.16.0'
-
implementation 'com.kaltura.playkit:googlecast:4.16.0'
v4.15.0
Changes from v4.14.0
Upgrades
Features
-
FEC-11079 | Added ABR selection API with Height/Width/Pixel (#712)
Example
- Height filter
player.getSettings().setABRSettings(new ABRSettings().setMinVideoHeight(min_height).setMaxVideoHeight(max_height));
- Width filter
player.getSettings().setABRSettings(new ABRSettings().setMinVideoWidth(min_width).setMaxVideoWidth(max_width));
- Pixel based filter
player.getSettings().setABRSettings(new ABRSettings().setMaxVideoWidth(max_width).setMaxVideoHeight(max_height));
- Height filter
-
FEC-10479 | Multicast integration, exposed settings on MulticastSettings (#714 #715)
By default if media URL in PKMediaEntry is with udp:// prefix player will try to play it as udp with default MulticastSettings
useExoDefaultSettings
= true
IfuseExoDefaultSettings
= false then player will use the maxPacketSize, socketTimeoutMillis and extractorMode for building the udp data source.
public class MulticastSettings {
private boolean useExoDefaultSettings = true;
// maxPacketSize The maximum datagram packet size, in bytes.
private int maxPacketSize = 3000;
// socketTimeoutMillis The socket timeout in milliseconds. A timeout of zero is interpreted
private int socketTimeoutMillis = 10000;
//Modes for the extractor. One of MODE_MULTI_PMT, MODE_SINGLE_PMT, MODE_HLS
private ExtractorMode extractorMode = ExtractorMode.MODE_MULTI_PMT;
}
Example:
`player.getSettings().setMulticastSettings(new MulticastSettings().setUseExoDefaultSettings(true));`
-
FEC-10067 | Added internal custom playback adapter (#720)
Now Application can pass
CustomPlaybackRequestAdapter
directly to player by setting the custom headers.Example
Map<String,String> headers = new HashMap<>(); headers.put("aaa", "bbb"); headers.put("ccc","ddd"); CustomPlaybackRequestAdapter customPlaybackRequestAdapter = new CustomPlaybackRequestAdapter("YOUR_APPLICATION_NAME", player); customPlaybackRequestAdapter.setHttpHeaders(headers); player.getSettings().setContentRequestAdapter(customPlaybackRequestAdapter);
Breaking change
-
FEC-11310 | Rename
PKRequestConfiguration
toPKRequestConfig
(#718)player.getSettings().setPKRequestConfig(new PKRequestConfig(true));
setAllowCrossProtocolEnabled
is deprecated and now part ofPKRequestConfig
. -
FEC-11233 | Send Kava Impression event once for each player instance in case Kava plugin is not in use.
-
FEC-11294 |
setInitialBitrateEstimate
should be passed as Long
player.getSettings().setABRSettings(new ABRSettings().setMinVideoBitrate(250000).setMaxVideoBitrate(3000000).setInitialBitrateEstimate(100000L));
Bug Fixes
-
FEC-11246 | Protect MediaItem.PlaybackProperties in ExoPlayerWrapper$onTracksChanged (#708)
-
FEC-11261 | Start using App Audio codecs priority list (#711)
Plugin's Version
-
implementation 'com.kaltura.playkit:playkit:4.15.0'
-
implementation 'com.kaltura.playkit:playkitproviders:4.15.0'
-
implementation 'com.kaltura.playkit:youboraplugin:4.15.0'
-
implementation 'com.kaltura.playkit:imaplugin:4.15.0'
-
implementation 'com.kaltura.playkit:fbadsplugin:4.15.0'
-
implementation 'com.kaltura.playkit:kavaplugin:4.15.0'
-
implementation 'com.kaltura.playkit:vrplugin:4.15.0'
-
implementation 'com.kaltura.playkit:googlecast:4.15.0'
v4.14.0
Changes from v4.13.3
Upgrades
- FEC-11197 | Upgraded Gradle & Kotlin version
Bug Fixes
-
FEC-11222 | Add Handling ExoTimeoutException as non fatal error
-
FEC-11189 | Sending Fatal Error instead of exception in case if format is null
-
FEC-11190 | Filter unknown audio tracks in format contains 1/15 even if codec is not null
-
FEC-11187 | Protect parsing error on CustomDashManifestParser
-
FEC-11165 | Add Null check for bytes in TeeDataSource
Plugin's Version
-
implementation 'com.kaltura.playkit:playkit:4.14.0'
-
implementation 'com.kaltura.playkit:playkitproviders:4.14.0'
-
implementation 'com.kaltura.playkit:youboraplugin:4.14.0'
-
implementation 'com.kaltura.playkit:imaplugin:4.14.0'
-
implementation 'com.kaltura.playkit:fbadsplugin:4.14.0'
-
implementation 'com.kaltura.playkit:kavaplugin:4.14.0'
-
implementation 'com.kaltura.playkit:vrplugin:4.14.0'
-
implementation 'com.kaltura.playkit:googlecast:4.14.0'
v4.13.3
Changes from v4.13.0
change playkit
libs repositories from jcenter()
to mavenCentral()
Plugin's Version
-
implementation 'com.kaltura.playkit:playkit:4.13.3'
-
implementation 'com.kaltura.playkit:playkitproviders:4.13.3'
-
implementation 'com.kaltura.playkit:youboraplugin:4.13.3'
-
implementation 'com.kaltura.playkit:imaplugin:4.13.3'
-
implementation 'com.kaltura.playkit:fbadsplugin:4.13.3'
-
implementation 'com.kaltura.playkit:kavaplugin:4.13.3'
-
implementation 'com.kaltura.playkit:vrplugin:4.13.3'
-
implementation 'com.kaltura.playkit:googlecast:4.13.3'
v4.13.2
v4.13.0
Changes from v4.12.0
Upgrades
FEC-10977 Upgrade ExoPlayer to 2.13.2
New features
- FEC-10771 | Add support in ImageTrack and Support Dash Thumbnails Info
App can get the the image tracks data in tracks available and select image track by its requirement
and listen to image trackChanged event
Add API to give the Image ThumnailInfo - App can pass user's seek position in ms.
player.getThumbnailInfo(position)
For more details, please refer our Sample
- FEC-10801 | Add support for Low Latency Configuration
This API is dedicated only for Live and DVRLive media.
To set the Low Latency,
playerInitOptions.setPKLowLatencyConfig(pkLowLatencyConfig
.setTargetOffsetMs(15000L).setMaxOffsetMs(12000L).setMaxPlaybackSpeed(4.0f));
To update the Low Latency,
player.updatePKLowLatencyConfig(pkLowLatencyConfig
.setTargetOffsetMs(10000L).setMaxOffsetMs(7000L).setMaxPlaybackSpeed(1.5f));
CAUTION: If you want to use this API with Live -> VOD (While changing the media) content using the same player instance then you need to destroy the player before configuring the VOD media.
-
FEC-10960 | Add API for Update and Reset ABRSettings API
API to update ABR :player.updateABRSettings(new ABRSettings().setMaxVideoBitrate(MAX_BITRATE));
API to reset ABR :player.resetABRSettings();
Application can use this API anytime during the playback and can use the reset API to reset ABR for the next media playback.
Note: If you don't set/update/reset the ABR for the next media playback then the last ABR settings will be used.
-
FEC-11064 | Expose API for configuring subtitles font
API: setCustomTypeface
Typeface font = Typeface.createFromAsset(getAssets(),"yourCustomSubtitle.ttf");
SubtitleStyleSettings ss = new SubtitleStyleSettings("CustomStyle")
.setBackgroundColor(Color.BLUE)
.setTextColor(Color.WHITE)
.setTextSizeFraction(SubtitleStyleSettings.SubtitleTextSizeFraction.SUBTITLE_FRACTION_50)
.setWindowColor(Color.YELLOW)
.setEdgeColor(Color.BLUE)
.setAssetTypeface(font)
.setCustomTypeface("casual", SubtitleStyleSettings.SubtitleSTypefaceStyle.NORMAL)
.setEdgeType(SubtitleStyleSettings.SubtitleStyleEdgeType.EDGE_TYPE_DROP_SHADOW);
Bug Fixes
- FEC-11053 | subtitles position is not update immediately after it is requested
Plugin's Version
-
implementation 'com.kaltura.playkit:playkit:4.13.0'
-
implementation 'com.kaltura.playkit:playkitproviders:4.13.0'
-
implementation 'com.kaltura.playkit:youboraplugin:4.13.0'
-
implementation 'com.kaltura.playkit:imaplugin:4.13.0'
-
implementation 'com.kaltura.playkit:fbadsplugin:4.13.0'
-
implementation 'com.kaltura.playkit:kavaplugin:4.13.0'
-
implementation 'com.kaltura.playkit:vrplugin:4.13.0'
-
implementation 'com.kaltura.playkit:googlecast:4.13.0'
v4.12.0
Changes from v4.11.2
New Features
- FEC-10923 | Exposed player config to forceWidevineL3 on L1 device
Some low end devices with L1 seem to fail in DRM playback and seem to work better on L3.
We recommend to use this API only for specific devices known with such issue and not as default behaviour for all devices.
There are 2 new APIs for this feature
- For media playback
player.getSettings().forceWidevineL3Playback(true)
- For download and offline license registration process
localAssetsManager.forceWidevineL3Playback(true)
Bug Fixes
-
FEC-10917 | Added missing support in media playback with predefined headers in online playback after ExoPlayer v2.12 upgrade
-
FEC-10370 | In case No video tracks and no audio tracks player is not firing error and black screen seen
App can expect to receive UNEXPECTED or RENDERER ERROR errors for such cases now (no audio/video/audio+ video) -
FEC-10843 | DvrLive media playback is not always starting from live edge
adde also an API for Applications that can call programatically
player.seekToLiveDefaultPosition()
in order to force live edge when needed
- FEC-10871 | Add support in setPlaybackRate API also in MediaPlayer from Android M and up
Plugin's Version
-
implementation 'com.kaltura.playkit:playkit:4.12.0'
-
implementation 'com.kaltura.playkit:playkitproviders:4.12.0'
-
implementation 'com.kaltura.playkit:youboraplugin:4.12.0'
-
implementation 'com.kaltura.playkit:imaplugin:4.12.0'
-
implementation 'com.kaltura.playkit:fbadsplugin:4.12.0'
-
implementation 'com.kaltura.playkit:kavaplugin:4.12.0'
-
implementation 'com.kaltura.playkit:vrplugin:4.12.0'
-
implementation 'com.kaltura.playkit:googlecast:4.12.0'
v4.11.2
Changes from v4.11.1
Bug Fixes
- FEC-10873 | Player is throwing fatal error when the faulty subtitle is loaded to player
Plugin's Version
-
implementation 'com.kaltura.playkit:playkit:4.11.2'
-
implementation 'com.kaltura.playkit:playkitproviders:4.11.2'
-
implementation 'com.kaltura.playkit:youboraplugin:4.11.2'
-
implementation 'com.kaltura.playkit:imaplugin:4.11.2'
-
implementation 'com.kaltura.playkit:fbadsplugin:4.11.2'
-
implementation 'com.kaltura.playkit:kavaplugin:4.11.2'
-
implementation 'com.kaltura.playkit:vrplugin:4.11.2'
-
implementation 'com.kaltura.playkit:googlecast:4.11.2'
v4.11.1
Changes from v4.11.0
Bug Fixes
- FEC-10843 - fix DvrLive media should start playback from liveEdge Playback unless start position is given, add seekToLiveDefaultPosition player API
Plugin's Version
-
implementation 'com.kaltura.playkit:playkit:4.11.1'
-
implementation 'com.kaltura.playkit:playkitproviders:4.11.1'
-
implementation 'com.kaltura.playkit:youboraplugin:4.11.1'
-
implementation 'com.kaltura.playkit:imaplugin:4.11.1'
-
implementation 'com.kaltura.playkit:fbadsplugin:4.11.1'
-
implementation 'com.kaltura.playkit:kavaplugin:4.11.1'
-
implementation 'com.kaltura.playkit:vrplugin:4.11.1'
-
implementation 'com.kaltura.playkit:googlecast:4.11.1'