Skip to content

Releases: kaltura/playkit-android

v4.17.0

20 Sep 06:12
Compare
Choose a tag to compare

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

Samples

v4.16.0

15 Aug 06:15
Compare
Choose a tag to compare

Changes from v4.15.0

Features

Bug Fixes

  • FEC-11425 | Crash in ExoAnalyticsAggregator (#734)

  • FEC-11261 | AudioCodecSettings$codecPriorityList is not effective on TrackSelectionHelper (#711)

  • FEC-10172 | Marked setMaxVideoSize and setMaxVideoBitrate deprecated. Need to use setABRSettings(ABRSettings) instead.(#721)

  • FEC-11339 | Avoid calling overrideMediaVideoCodec if there is single codec in Video Stream (#726)

  • Part of FEC-10339 | Protected SubtitleStyleSettings (#737)

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'

Samples

v4.15.0

17 Jun 12:41
Compare
Choose a tag to compare

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));
  • 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
    If useExoDefaultSettings = 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 to PKRequestConfig (#718)

    player.getSettings().setPKRequestConfig(new PKRequestConfig(true));

    setAllowCrossProtocolEnabled is deprecated and now part of PKRequestConfig.

  • 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-11294 | Fixed bug in ABRSelection (#716)

  • 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'

Samples

v4.14.0

13 May 07:55
Compare
Choose a tag to compare

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'

Samples

v4.13.3

12 Apr 10:40
Compare
Choose a tag to compare

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'

Samples

v4.13.2

11 Apr 14:35
Compare
Choose a tag to compare

Changes from v4.13.0

TBD

v4.13.0

30 Mar 16:42
Compare
Choose a tag to compare

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'

Samples

v4.12.0

01 Feb 10:12
Compare
Choose a tag to compare

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

  1. For media playback

player.getSettings().forceWidevineL3Playback(true)

  1. 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'

Samples

v4.11.2

14 Jan 10:18
Compare
Choose a tag to compare

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'

Samples

v4.11.1

03 Jan 11:32
Compare
Choose a tag to compare

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'

Samples