[object Object] Icon

Encoding
Learn how to create, start, manage and modify Encodings

[object Object] Icon

Player
Learn how to create, start, manage and modify Players

[object Object] Icon

Analytics
Learn how to create, start, manage and modify Analyticss

Player Web Releases

9/11/2018

8.0.0

Added

  • Modules & Modules API
  • Analytics module included per default in full player build
  • PlayerEvent.ModuleReady when a public API of a module becomes available
  • Config.ui to disable UI or pass UIConfig to player-managed UI via the UI module
  • ViewMode API: getViewMode, isViewModeAvailable, setViewMode & PlayerEvent.ViewModeChanged
  • SourceConfig.subtitleTracks[] to specify external subtitle tracks
  • player.getContainer retrieves the HTMLElement the player is embedded in
  • PlayerEvent.DownloadFinished.timeToFirstByte event property
  • PlayerAPI.getSource(): SourceConfig | null
  • PlayerSubtitlesAPI in player.subtitles namespace
  • PlayerErrorCode, PlayerError, ModuleName and PlayerModuleMissingError exports
  • TypeScript type definition files
  • PlayerEvent.DownloadFinished is now also fired for ad manifests

Changed

  • The new and more performant ABR logic v3 is now activated by default
  • No Player API call returns the player object anymore
  • player.play() now returns a promise which resolves when playback actually starts
  • PlayerAPI.unload(): Promise<void> return value
  • HTTP header array structure to simple headers object
  • No PlayerEvent.Paused before PlayerEvent.PlaybackFinished
  • native-flash configuration moved from config.drm.access to config.nativeflash
  • player.setVolume() now no longer changes the muted state
  • Remove player.setLastSegment()
  • Remove preferred_audio_codec_order and preferred_video_codec_order tweaks (use PlaybackConfig.audioCodecPriority/videoCodecPriority)
  • PlayerAPI.getThumb() was renamed to PlayerAPI.getThumbnail(), Thumbnail property w was renamed to width and h to height, property i was dropped.
  • player.isPlaying() only returns true once playback has actually started on the media element
  • Converted Player to class (instantiate with new), setup method removed and logic moved into constructor
  • Moved Event and LogLevel exports out of Player object to root namespace
  • Stall events not triggered anymore on initial play and seek/timeShift
  • Change SourceConfig.tracks[] to SourceConfig.thumbnailTrack
  • PlayerEvent.PlayerResize renamed to PlayerEvent.PlayerResized
  • Take SEEK_TO_END_OFFSET into account when applying startOffset
  • Renamed PlayerAPINotAvailableException to PlayerAPINotAvailableError
  • VR starting position (0°) to be in the center of the video frame instead of the left edge
  • Every advertising-related error now has only the AdError event associated with it and not a mix of Warning and AdError
  • Completely reworked the AdvertisingConfig and advertising-related player functions. The new Advertising API is available in the ads namespace on a player instance after a source has been loaded.
  • Smooth Streaming manifest errors are now fired as SOURCE_MANIFEST_INVALID
  • Unknown mime types in the manifest will only cause a warning log message instead of an error.
  • WarningMessages became WarningCode enum
  • ErrorMessages became ErrorCode enum
  • Rename getDroppedFrames to getDroppedVideoFrames
  • ImaAdBreak.vastResponse now holds a Promise that resolves with the loaded ad manifest
  • Rename bitmovin-player.zip to bitmovinplayer.zip on the CDN

Removed

  • addEventHandler and removeEventHandler methods (use on and off instead)
  • PlayerAPI.fireEvent
  • config.style.ux flag to toggle UI (use config.ui instead, which can also be used to pass a configuration to the default UI)
  • Fullscreen & Picture-in-Picture API (please use ViewMode API instead)
  • Save & restore user settings
  • The player will not create a figure element around the video anymore, removed player.getFigure API call (use player.getContainer instead)
  • config.source (the source has been separated from the player config)
  • search_real_end configuration tweak
  • getAvailableLicenseServers and getAvailableImpressionServers

Fixed

  • PlayReady header parsing
  • Player not being able to play back content in WebKit browsers without play-promise such as Samsung Tizen SmartTVs
  • Missing PlayerEvent.Metadata from raw AAC audio segments
  • DRM playback using WebKit-prefixed Encrypted Media Extensions (EME)
  • PlayerEvent.PlaybackFinished being fired before post-roll ads finished
  • VR events not being fired
  • Playback not starting after initial play call on Safari
  • Loading a new source after playing back a DRM protected source
  • Handling of unexpected behavior of the HTMLVideoElement's play promise introduced in Edge 17
  • VMAP manifest parsing in Edge
  • Calling play and pause in load().then in Edge left the video playing

Known Issues

  • Ad playback is only supported via Google IMA SDK at the moment
  • HTTP Headers are not sent for Widevine DRM license requests (PlayReady is not affected)

10/8/2018

7.8.6

Fixed

  • Player signaled stalling events during a period switch although it had enough data to continue playback
  • Init segment not downloaded when timeshifting during init segment request
  • .prod.js builds were broken

Security

  • Fixed XSS vulnerability

10/2/2018

7.8.5

Fixed

  • Detection of PlayPromise in Safari
  • Single file subtitles from a multi-period manifest were not cleaned up on period switch and were not re-activated after switching
  • Transition from non-DRM to DRM period
  • Flash renderer overlaying UI
  • Start time calculation on live streams
  • Line breaks being converted to <br /> tags when parsing TTML
  • Improved initial time calculation for MultiPeriod SegmentTemplate live streams
  • Unsmooth audio track switching
  • Player could get stuck when loading new DRM source before proper playback of another DRM source
  • Performance improvements on low performance devices

9/13/2018

7.8.4

Added

  • sdkSettings property to the adSetup object which is passed to the AdvertisingConfig.setup callback
  • ON_AIRPLAY_CHANGED event
  • isAirplayEnabled getter

Fixed

  • Filtering of supported representations depending on codec in case of muxed content
  • Endless buffering after VAST post-roll ad
  • Loading a new source after playing back a DRM protected source
  • Abort any ongoing seek/timeShift if the player is destroyed
  • Playback not starting after pre-roll ads when using the IMA ad client
  • Fragmented subtitles not playing with Smooth Manifests

9/2/2018

7.8.3

Added

  • Support for fragmented subtitles in HLS live streams
  • Error event if no DRM init data (PSSH) is available for the used DRM key system

Fixed

  • Subtitles from previous playback remained active
  • Duplicated ON_METADATA_PARSED events fired for VoD assets with multi-period/EXT-X-DISCONTINUITY
  • ClearKey DRM fix for browsers without EME supporting it
  • Subtitles disappear on iOS with VR and fullscreen enabled
  • A/V sync issues after seeking in Smooth Streams
  • Recognize av01 codec as video mime type
  • Parsing of TTML with custom namespaces Collapse

8/26/2018

7.8.2

Added

  • Throw warning when dropping all audio/video AdaptationSet's due to unsupported codecs

Fixed

  • Parsing senc box from fMP4 having a 16-byte initialization vector
  • DRM playback using WebKit-prefixed EME
  • Persistent poster on audio-only stream
  • Only the first player instance would fire a ON_CAST_AVAILABLE event
  • DASH ClearKey DRM with 16-byte initialization vector
  • Missing video quality change events for multi-bitrate progressive sources
  • Missing audio after quality switches
  • Timeshifting or manifest updates in live streams resulted in subtitles not being downloaded and displayed anymore
  • Improve startup performance on Samsung Tizen TVs with SegmentBase DASH streams
  • Missing onCueExit events for subtitles in Safari's native HLS implementation
  • Missing subtitle cues when quickly switching back and forth between fragmented subtitles
  • Triggering ON_VIDEO_DOWNLOAD_QUALITY_CHANGE event when setting the video quality via player API
  • Missing AudioQuality in getAvailableAudio due to incorrect audio rendition grouping
  • Player not ready exception occurring when calling play with pre-roll ads or seeking over a mid-roll ad

8/12/2018

7.8.1

Fixed

  • Playback did not start for non-Safari WebKit browsers without play Promise, like on Samsung Tizen Smart TVs
  • Missing ON_METADATA events for raw AAC audio segments
  • Adaptation configuration not working anymore in sub objects
  • Playback being stuck on stalls before buffer gaps
  • No recovery when there is no future common buffer of audio and video

8/1/2018

7.8.0

Added

  • Multi-codec support for HLS
  • Seamless period switching when mime types and codecs remain unchanged
  • Pre-buffering across multiple periods and discontinuities instead of just the next one
  • Detection of fMP4/CMAF container format from media segments in HLS
  • Support for specifying DRM robustness levels
  • Support for the EXT-X-START tag in HLS
  • Support for setting DRM service certificates
  • Reduce requests by caching fMP4 initialization segments
  • Preview of new ABR logic (not enabled per default)
  • Parse CEA-608 captions on demand

Fixed

  • Subtitles that only become available in a later period not being correctly added
  • Seeking inside periods with active subtitles
  • Multi-period subtitles
  • Initial timeshifts for HLS playback in Safari
  • Period switching for live-streams with very short periods
  • CEA-608 captions for encodes having multiple caption SEI messages within one SEI NAL unit
  • Subtitles not being displayed after switching into fullscreen on iOS
  • Duplicate ON_METADATA_PARSED events
  • Duplicate EventStream Events
  • SegmentTemplate live stream handling
  • Duplicate fragmented subtitle cues after re-selection
  • Trigger error 3036 only when no usable Widevine key is found
  • Concurrent segment requests
  • Replay after ON_PLAYBACK_FINISHED in IE11
  • Fullscreen when using config.style.[width|height]
  • Segment-index calculation for SegmentTemplate live-streams
  • Preferred codec handling for non-DASH streams
  • network.preprocessHttpResponse was not called on every status code response

10/7/2018

7.7.7

Security

  • Fixed XSS vulnerability

9/5/2018

7.7.6

Fixed

  • Playback did not start for non-Safari WebKit browsers without play Promise, like on Samsung Tizen Smart TVs
  • Preferred codec selection for streams where the codec info is only present on AdaptationSet and not on Representation level
  • DRM playback using WebKit-prefixed Encrypted Media Extensions (EME)
  • DASH ClearKey DRM with 16-byte initialization vector
  • Loading a new source after playing back a DRM protected source

Give us feedback