- Stability improvements / bugfixes
- added support for the Google Cast plugin
- updated Youtube API adding support for Lollipop
- updated supported color formats for Controls and Text overlays (RGBA, RGB, #RGBA and #RGB)
- minor bugfixes and API improvements
- bugfix - cloning a unit did not also copy over the unit manager
- added support for multiple renderers. By default, VeePlay ships with two default renderers, MediaPlayerRenderer (used automatically for 4.0.x devices) and ExoPlayerRenderer(used automatically for 4.1+ devices)
- APSMediaUnit objects now hold a renderer string property. In order to explicitly set a renderer, use the static rendererIdentifier string of the renderer class.
- bugfix - transitioning to full screen and then changing orientation could cause an exception
- Improved HLS support for 4.1+ devices
- Shorter buffering times
- Support for 3rd party renderers. In order to plug a player for rendering content, it's a question of implementing IVeeplayRenderer and registering it with the player
- Accuracy to the second when seeking
- Native support for DASH and SmoothStreaming is now possible (if interested in this feature please contact office@veeplay.co)
- Widevine DRM support is now possible (if interested in this feature please contact office@veeplay.co)
- Faster transition to higher bitrate streams (it takes about 4-6 seconds to switch streams)
- this version is a release candidate. Altough it was extensively tested over the past few weeks, it should be tested with each implementation before deploying into production
- bugfix - finishing the player during playback might cause a crash
- major internal player refactoring to allow multiple renderers, in preparation for ExoPlayer support
- bugfix: events with a high number of VAST sources might time out prematurely, causing them to be skipped
- bugfix: calling getCurrentPosition during a unit transition might have caused a crash
- increased default preload time to 10 seconds
- bugfix: calling resumePlay() before the VeePlay surface view was created would trigger an error and skipping to the next unit.
- improved stability and support for surface view state changes
-bugfix: setting an adbreak offset larger than 1 hour caused the offset to be marked as null.
- units generated by the VAST parser now contain a metadata key "source_url", populated with the URL of the VAST feed that originated that unit
- bugfix: seeking while paused caused isPlaying() to return true
- bugfix: when providing autoplay: false for a unit, the Livestream time would start upon preparation, in case duration is not available.
- kAPSMetadataCurrentAdBreakOffset metadata values are now integers
- bugfix -> using autoplay=false and an initialPlaybackTime on pre 5.0 caused the video to start from the beggining
- seekTo optimizations.
- Bugfixes addressing crashes during midroll adbreak transitions
- ActionDelegate interface: respondTo now returns a boolean
- Click tracking for action delegates is only triggered if respondTo returns true
- Bugfix for VAST fallbacks
- Added the OKHttp library from Square
- Switched VAST tracking events to the OKHttp client, solving a random behaviour caused by HttpUrlConnection in connection with some devices and some proxy servers (f.e HTC Device and Charlesproxy)
- Bugfix: Multiple tracking URLs for the same event would override each other
- Bugfix: Preventing the countdown timer to go below 0 while rebuffering
- Preferring MP4 ads over HLS ads through Google DFP
- Bugfix: When foregrounding an activity containing a player instance, the playback could have spontaneously resumed when playing a Marlin DRM encoded stream, or a normal HLS stream.
- Added a metadata field to each ad unit "source_index". This key can be used for identifying the source of an ad in an adbreak, when using multiple sources per adbreak.
- Added a metadata field (HashMap<String, Object>) for APSVastAdbreak object (should be constructed before usage). If used, it will add any keys set to the metadata of each APSMediaUnit generated by the adbreak object
- APSMediaPlayer._overlaysDisplayed is now a public field
- Unit metadata keys now contain integers exclusively for determining the offset. The values for prerolls and postrolls are static (0 and Integer.MAX_VALUE)
- Modified the onTrackingReceived header, it now only accepts two parameters: MediaEventType type and Bundle additionalInfo. The additionalInfo bundle contains by default the old parameters received by onTrackingReceived, on the "urls" and "description" keys.
- Added the CLOCK_TICK event, an event that is fired every second the player is active.
- Added two keys to the additionalInfo Bundle for the CLOCK_TICK event: "position" and "duration", containing two integers (the current position in seconds, and the current content duration, in milliseconds)
- Added two events for detecting user interaction for pausing and resuming playback. The two events are USER_PAUSE and USER_UNPAUSE and are triggered by interacting with the pause button in the controls overlay
- Fixed detecting the content position an adbreak has started at. Each ad content unit contains a metadata key called "aps_vast_adbreak_offset" that holds the offset the ad break has actually started at.
- Bugfix for statically positioned midrolls
- Bugfix for detecting playback state after seek (the player always returned false)
- Added a bugfix for a crash during player finish
- Added seek handling support: by default, the player will only play the last scheduled adbreak, when seeking. This can be configured via the APSMediaUnit#seekHandling field, or using the JSON configuration, on the content unit: "seekAdHandling": "last" (/first/all)
- Added automatic ad breaks positioning: a minimum initial offset, minimum final offset and minimum interval between ad-breaks can be set (all default to 300 seconds). Ad breaks that are not configured with an offset will be automatically scheduled based on these three parameters.
- Added the FORWARD event, for detecting forward seeks
- The SurfaceView is now secure, by default, on devices with API level > 17. This behaviour can be changed by calling APSMediaPlayer#setSecureSurfaceView(false) before initializing the player.
- Added unit and overlay metadata keys for current adbreak offset
- Unit metadata is now copied for unit clones
- Added a bugfix preventing seeking past the end of a video unit
- Added the PLAYLIST_FINISHED trackable event for detecting the end of the playback of the last unit in the playlist
- Re-implemented full-screen mode toggling
- Bug fixes for text and skip overlays
- Bugfixes affecting multiple ads in an adbreak
- Addressed a bug causing a crash when toggling full-screen mode.
- Added a more detailed error message for invalid licenses
- Units, Overlays and AdBreaks are now APSMediaEvent instances. This allows just-in-time VAST/VMAP feed retrieval, as well as banner preloading on Image overlays
- APSMediaBuilder#mediaUnits and APSMediaPlayer#playMediaUnits now accept ArrayList
- APSMediaUnit, APSMediaOverlay and APSVastAdBreak are now members of the com.appscend.media.events package
- APSMediaEvents has ben renamed to APSMediaTrackingEvents
- Minor bugfixes for DRM managers
- APSMediaEvents definitions are now an Enum instead of String constants
- Player events are no longer local broadcasts but implement a Listener model. Please implement the new APSMediaPlayerTrackingEventListener interface and review the APSMediaEvents documentation if upgrading from older versions
- Fixed a bug where events were not emitted if no tracking urls were defined
- Fixed a bug where controls were not shown when building an APSMediaUnit instance and not setting an autohide duration
- Fixed a bug preventing events to be dispatched
- Replaced JS YouTube API with the Android YouTubeAPI (if upgrading from 1.8.3 or older, please add your YouTube API key when initialising the player)
- Added support for the Marlin DRM Plugin
- Improved support for playing HLS / M3U8 streams
- Configurable livestream indicator in controls overlay
- Support for midrolls and overlays
- Support for youtu.be URLs in the Youtube Overlay Controller
- Added a configurable flag for disabling the player on rooted phones
- Added methods for explicitly entering or exiting full-screen mode
- Support for configuring actions when dismissing clicked overlays / linears
- Metadata support for units and overlays
- Corrected the aspect ratio of Webview buttons
- Configurable preferred video mime types
- Improved support for tracking royalties