Analytics Collector - Web

2.41.0

Released 2024-10-17

Fixed

  • Shaka, Dash.js, HTML, Hls.js: source changing was not switching metadata and impressionId properly
  • Shaka: fixed memory leak when calling player.destroy()
  • Wrong mapping of request type MANIFEST_HLS_VARIANT

Added

  • ssaiEngagementTrackingEnabled?: boolean (defaults to false) to Analytics Collector configuration, to be able to enable SSAI engagement tracking

2.40.1

Released 2024-10-04

Fixed

  • Bitmovin Player: inconsistent increasing of ssai adIndex

2.40.0

Released 2024-09-02

Added

  • Bitmovin Player: Extend ssai API with adQuartileFinished() to be able to track ad quartile events

2.39.0

Released 2024-08-27

Fixed

  • Bitmovin Player: improved heartbeat while in playing state

Changed

  • Cleanup of internal type information from bundled DTS files

2.38.0

Released 2024-08-07

Fixed

  • source related properties not being cleared on sourceChange
  • Bitmovin Player: missing version property in analytics PlayerModule (pre-packaged Bitmovin Analytics coming with Bitmovin Player)

Added

  • add version to all adapters as both an instance and a static property to retrieve the analytics collector version

2.37.1

Released 2024-07-22

Fixed

  • issues with ES5 compliance caused collector to not properly work on older devices

2.37.0

Released 2024-07-18

Fixed

  • invalid videoStartupTimes with value 0
  • Shaka: Stream format was always reported as dash
  • Dash.js: Handling of errors thrown when reading undefined player source

Added

  • BitmovinPwxAnalyticsPackage added to enable partial analytics for the Bitmovin Player Web X, including startup time, and play-pause tracking

2.36.0

Released 2024-05-29

Added

  • Bitmovin Player: New API available to provide metadata for server side inserted ads (SSAI)
  • Shaka: Tracking of video and audio codecs

2.35.0

Released 2024-05-23

Fixed

  • VideoJS: Fix manual source change transition tracking, when play() is called before source was loaded.

Added

  • Dash.js: Tracking of video and audio codecs

2.34.1

Released 2024-05-15

Fixed

  • Fix console error on invalid analytics license key provided
  • Fix console error "Error in StateMachine" (when AnalyticsDebugConfig is provided) to console warning "StateMachine error callback"
  • Bitmovin8: Fix regression with SourceChange

2.34.0

Released 2024-05-15

Fixed

  • All Players: Stop sending of initial quality change event on startup
  • Shaka, hls.js, dash.js, HTML5, AmazonIVS: Analytics data was not sent on iOS Versions < 12.2 due to missing API
  • HTML5 Players, VideoJS: Improved behaviour around source changes
  • VideoJS: Fixed tracking of video quality
  • VideoJS: Fixed error logging around missing states

Added

  • hls.js: Tracking of video and audio codecs

2.33.1

Released 2024-05-06

Fixed

  • Bitmovin Player: Improved streamFormat detection

2.33.0

Released 2024-04-30

Fixed

  • HTML5 Players: SourceChange callback is only called once on entering the SOURCE_CHANGING state

Added

  • HTML5 Native Player video element
    • HTMLVideoElementAdapter constructor has a new optional argument for source metadata to provide more fields that we can't get from the video element
    • HTMLVideoElementAdapter has a new field sessionMetadata providing functions to change language specific information about the current playback

Changed

  • Bitmovin8: Change type of player.analytics to Bitmovin8Adapter exposing only publicly available api
  • set field ad to 1 for client side ad samples

2.32.5

Released 2024-02-26

Fixed

  • Shaka, Dash.js, Hls.js, Html5: over reporting of seeks and wrong seek duration
  • Hls.js: fixed tracking if stream is a live stream

2.32.4

Released 2024-01-26

Fixed

  • VideoJS: collect player version also from VideoJS player instance (videojs v8.10.0+)

2.32.3

Released 2024-01-09

Fixed

  • Amazon IVS Player: fixed pause tracking for live streams
  • Hls.js: fixed TypeError in hlsFragLoaded listener, when downloaded fragment network details are undefined

2.32.2

Released 2023-12-04

Fixed

  • Fixed an issue in Safari where unmuted autoplay blocking could result in incorrect video start time measurement, leading to an ANALYTICS_VIDEOSTART_TIMEOUT_REACHED error.

2.32.1

Released 2023-11-14

Added

  • cookiesMaxAge?: number to Analytics Collector configuration to be able to set cookies max-age attribute. Defaults to 1 year.

2.32.0

Released 2023-10-03

Added

  • Add support to allow application to override DEVICE_TYPE and DEVICE_CLASS fields in analytics collector via analyticsConfig.deviceClass and analyticsConfig.deviceType

Changed

  • Improved detection of display sizes through taking window.devicePixelRatio into account to calculate physical pixels for screenHeight and screenWidth

Fixed

  • Hls.js: download speed was not tracked

2.31.2

Released 2023-09-13

Changed

  • Bitmovin Player: Player Startup Time is set to fixed value of 1ms.

2.31.1

Released 2023-07-18

Fixed

  • issues with enabling analytics via the Bitmovin player config

2.31.0

Released 2023-07-04

Added

  • Amazon IVS Player: VOD seek tracking

2.30.0

Released 2023-06-13

Added

  • Amazon IVS Player: quality change tracking
  • Amazon IVS Player, HTML5 native, Video.js, Dash.js, Hls.js, Shaka: droppedFrames calculation

2.29.4

Released 2023-06-01

Fixed

  • videoDuration for live streams was reported as null

2.30.0-beta.1

Released 2023-05-26

Added

  • AmazonIVSAdapter added to enable analytics for the Amazon IVS player

Fixed

  • fix ShakaAdapter to catch error from shaka.Player.load()

2.29.3

Released 2023-05-15

Fixed

  • missing declaration for PlayerModule

2.29.2

Released 2023-04-21

Fixed

  • Shaka, Dash.js player: made more resilient to errors when fetching underlying HTMLVideoElement

Removed

  • Removed Bitmovin7Adapter

2.29.1

Released 2023-02-27

Fixed

  • Only ECMAScript 5 features are used during modules bundling to enable support for older TV devices

2.29.0

Released 2023-02-16

Changed

  • Update of internal dependencies and webpack

Known Issues
This release contains update of a way declaration files are generated. All declaration files are now bundled in one file and stored in the root of the package.

This change might cause customers who are using declaration imports similar to the following one to see compile time errors:

import { CustomDataValues } from 'bitmovin-analytics/js/types/CustomDataValues';

This can be fixed by importing everything from 'bitmovin-analytics' like:

import { CustomDataValues } from 'bitmovin-analytics';

Deprecated

  • Bitmovin7Adapter

2.28.1

Released 2022-12-22

Fixed

  • URL truncation didn't comply with official limits

2.28.0

Released 2022-11-14

Added

  • Missing custom data fields to AnalyticsConfig

Fixed

  • Session data not being reset after loading new source
  • Dash.js player: tracking of errors during source loading
  • Chromecast: detection of live streams

Known Issues

  • Shaka player: tracking of errors related to manifest loading does not work for player versions before 2.5.12

2.27.3

Released 2022-09-06

Fixed

  • Shaka Player: stop reporting short nonexistent buffering events

2.27.2

Released 2022-07-14

Fixed

  • Bitmovin Player 8: tracking of videotime_start and videotime_end during ads

2.27.1

Released 2022-06-20

Changed

  • Video.js: adapter is more compatible with newer versions

Fixed

  • Video.js, Dash.js, Hls.js, Shaka: fixed spamming unmute event when user drags volume control

2.27.0

Released 2022-04-25

Added

  • getUserId to adapter API for retrieving the userId

2.26.3

Released 2022-04-22

Changed

  • Chromecast: improved player startup time tracking

2.26.2

Released 2022-04-06

Fixed

  • Shaka: tracking of videoStartuptime

2.26.1

Released 2022-03-31

Fixed

  • Shaka: tracking of errors during loading of source
  • Chromecast: fixed formatting on error data
  • Chromecast: updated tracking when new source is being played

2.26.0

Released 2022-03-09

Added

  • video.js: detection of video codec and audio codec

Changed

  • video.js: improved detection of stream type

2.25.0

Released 2022-03-01

Added

  • VideoJsAdapter: properlly release of BitmovinCollector on dispose event
  • improved releasing of resources after player shutdown

2.24.1

Released 2022-01-31

Fixed

  • Bitmovin Player: reset DRM related data on source change

2.24.0

Released 2022-01-16

Added

  • tracking of queue items transition for chromecast
  • customData26 to customData30 to the sample payload

2.23.0

Released 2021-12-14

Added

  • customData8 to customData25 to the sample payload

Changed

  • analytics instance can be attached only once to the same player instance

2.22.0

Released 2021-10-05

Added

  • BitmovinPlayer 8: HttpRequestTracking feature
  • ErrorDetailTracking feature

Fixed

  • fix missing sample startup on iOS devices because of not supported MediaSource

2.21.2

Released 2021-08-26

Fixed

  • HTML5 native, video.js: detection of streamFormat and streamURL when source URL contains queryParameters

2.21.1

Released 2021-08-11

Fixed

  • Bitmovin Player 8: incorrect state transition after ads to STARTUP state.

2.21.0

Released 2021-08-02

Added

  • Bitmovin Player: castTech types Airplay, GoogleCast, and WebSocket are now detected via player API

2.20.2

Released 2021-07-19

Fixed

  • BitmovinPlayer 8: improved stability of collector when destroying player

2.20.1

Released 2021-07-05

Fixed

  • BitmovinPlayer 8: collector gets stuck in ad event and sends samples with wrong state

2.20.0

Released 2021-05-10

Changed

  • updated setCustomData and setCustomDataOnce logic for sending additional samples

2.19.2

Released 2021-01-10

Added

  • Typings for setCustomData and setCustomDataOnce

Fixed

  • Bug where setCustomData would override already present customDataValues even if the new values are undefined

2.19.1

Released 2021-01-10

Added

  • Failed Play Attempts, due to a timeout, are now considered as an ANALYTICS_VIDEOSTART_TIMEOUT_REACHED
  • Chromecast v3 Adapter for Shaka Player

Changed

  • Collector will shut down and stop collecting after a rebufferTimeout or videoStartupFailed is detected

Fixed

  • Bug where videotime_start and videotime_end values were incorrect for errors of type ANALYTICS_QUALITY_CHANGE_THRESHOLD_EXCEEDED

2.18.0

Released 2020-10-11

Changed

  • Bitmovin 8: ignores seek events whose seek distance is less than 3 sec (e.g. keyboard triggered seeks)
  • Bitmovin 8: no seek tracking during PAUSED state
  • if cookieEnabled is false we ensure that a previously saved cookie is not being used but rather a new userID is generated for every session

Fixed

  • exception during Browser event unload for Bitmovin 7, Bitmovin 8 and VideoJS
  • negative/multiple seek events being emitted for Bitmovin 7, Bitmovin 8
  • issue with where Seeking could get stuck in loop on Bitmovin 8

2.17.2

Released 2020-07-29

Fixed

  • A bug where quality change threshold info carried over to subsequent sessions causing ANALYTICS_QUALITY_CHANGE_THRESHOLD_EXCEEDED errors to sometimes happen too soon on the new play session.

2.17.1

Released 2020-07-20

Fixed

  • Ad module wasn't initialized properly for Bitmovin8

2.17.0

Released 2020-07-19

Added

  • cookiesDomain field to the Analytics configuration, which defines at domain-level the cookie will be set

Changed

  • Bitmovin Player: tracking of video startup times when transitioning from pre-roll ads to main content

Fixed

  • video.js exception with progressive sources

2.16.0

Released 2020-07-05

Added


2.15.2

Released 2020-06-21

Fixed

  • remove persistence of drmLoadTime in every sample

2.15.0

Released 2020-06-21

Added

  • video completion tracking for Video.js
  • improved source change tracking

Changed

  • persist DRM information fields drmLoadTime and drmType in every sample

2.14.0

Released 2020-06-07

Added

  • completed and completedTotal to sample to track video completion
  • Bitmovin, Dash.js, Shaka, hls.js: video completion tracking

Fixed

  • Dash.js: attachSource from Dash MediaPlayer now resets the impressionId correctly.
  • Dash.js, Hls.js, Shaka: track correct videoTimeEnd for the playing event if seek occurs during playing
  • Bitmovin8AnalyticsStateMachine didn't call manualSourceChange on Tizen devices

2.13.0

Released 2020-05-24

Added

  • Configuration field customUserId that is an alias for userId to avoid confusion. Both fields will populate the CUSTOM_USER_ID metric.
  • Sending out an additional closed sample when a user unloads the page to be able to track STREAM_EXIT events

Changed

  • Hlsjs: Improved error rate reporting by ignoring warning errors that did not prevent stream playback.

Fixed

  • A rare bug in Dash.js where the state machine could end up stuck in startup if a PLAY event is encountered before the READY event.

2.12.0

Released 2020-04-13

Added

  • Playback start failure and reason tracking for video.js, shaka, dash.js and hls.js

2.11.0

Released 2020-03-22

Added

  • To improve accuracy and timeliness of reported rebuffering events we introduced a incremental heartbeat that sends out events after 3s, 5s, 10s, 30s, 60s.

2.10.0

Released 2020-03-19

Added

  • Hlsjs: audio- and subtitle language tracking

Fixed

  • Shaka: wait until player initialized media element before attaching analytics

2.9.0

Released 2020-02-19

Added

  • Tracking of playback start failures and their reason

Fixed

  • window onclose handler was overwritten by the advertising module

2.8.1

Released 2019-12-19

Fixed

  • Hlsjs: error events were not registered by analytics HlsAdapter
  • Hlsjs: isLive check throws unhandled error and cancled sending of sample

2.8.0

Released 2019-12-08

Added

  • Bandwidth measurements for hls.js

Changed

  • log level to warning of failed license calls due to Do Not Track enabled

2.7.1

Released 2019-10-28

Fixed

  • Issue with userId cookie not being set to root path
  • Incorrect userId cookie expiry

2.7.0

Released 2019-10-27

Added

  • Subtitle tracking in VideoJS (subtitleEnabled and subtitleLanguage)
  • Audio language tracking in VideoJS

2.6.0

Released 2019-10-13

Added

  • New boolean configuration field called isLive to indicate if the upcoming stream is a live stream. Will be overriden once playback metadata is available.

Removed

  • Unused config variables ads and cast

2.5.2

Released 2019-08-28

Added

  • API to indicate a source change in VideoJS

Fixed

  • Crash on IE11 due to a missing polyfill for String.endsWith not being available.
  • When changing sources, the collector config was lost if none was passed
  • Origin from collectorConfig was not updated after a manual sourceChange

Known Issues

  • VideoJS cannot correctly detect autoplay
  • VideoJS doesn't support correct startup time tracking for source changes
  • VideoJS: Metadata from the first source change is ignored

2.5.1

Released 2019-08-18

Added

  • API to indicate a source change in VideoJS

Changed

  • VideoJS rebuffering measurement method to be more accurate

Fixed

  • Metadata supplied in first player.load SourceConfig after initial setup is now updated correctly
  • droppedFrames was incorrectly measued and was always 0
  • For VideoJS player: Prevent exception when the HLS RESOLUTION is undefined

2.5.0

Released 2019-08-04

Added

  • origin to Analytics Collector configuration to set the origin on samples for devices that do not send the origin header in requests.
  • cookiesEnabled=true|false to Analytics Collector configuration to disable cookies. Defaults to true. If cookies are disabled, userId is not persisted across collector sessions.
  • For Bitmovin Player v7 and v8: The selected audio language is available as audioLanguage in the sample.
  • For Bitmovin Player v7 and v8: Sample now contains subtitleEnabled and subtitleLanguage.

Fixed

  • timeInViewport wasn't calculated correctly if ad playback was initially started outside of the viewport.

2.4.3

Released 2019-06-25

Added

  • Exception handling for very rare cases where sending a post request via XMLHttpRequest failed because the containing iFrame was already detached

2.4.2

Released 2019-05-16

Added

  • If using deferred license loading via the Player+Analytics bundling mechanism, the license key wasn't being updated in the samples.

2.4.1

Released 2019-05-13

Added

  • Ability to prevent initialization of the Analytics Module for Bitmovin Player v8 by setting analytics: false in the config.

Fixed

  • window.setInterval leak when player.destroy was called in the adstarted callback.
  • Removed confusing console.error on license responses that didn't specify an analytics key.

2.4.0

Released 2019-05-05

Added

  • TypeScript declaration files
  • Ability to enable/disable the collector for specific sessions on each call of player.load
  • Starting with Bitmovin Player v8.10, Analytics will get the analytics license key automatically from the player, if a default license is specified in the dashboard.

Fixed

  • Collector Sessions that initially started with enabled: false did not report playerStartupTime, pageLoadTime, startupTime. They now get sent with the first enabled startup sample.

2.3.0

Released 2019-04-14

Added

  • Added tracking of used audioCodec and videoCodec
  • Tracking of the client's supported video codecs

Fixed

  • possible crash of ad module on Safari related to the viewport tracker

2.2.0

Released 2019-03-24

Added

  • Added config to analytics configuration
  • Configure backend url via analyticsConfig.config.backendUrl
  • Error segment tracking
  • Sample now contains errorData JSON with additional information for Bitmovin 8 errors.
  • Bitmovin Player v8.3 compatibility
  • Improvements to the Ad Module with 8.3 (FallbackIndex and Waterfall level)

2.1.1

Released 2019-01-16

Added

  • version property on all analytics instances to get analytics collector version
  • player.analytics.version property to get analytics collector version
  • window.bitmovin.analytics.version property to get analytics collector version

Fixed

  • Bitmovin collector no longer pollutes the global scope when used in a requirejs/es6 context

2.1.0

Released 2019-01-13

Added

  • Added ads tracking (Bitmovin 8 only)
  • Added bandwith measurements
  • Sample now sends web in a platform field
  • AdSample now sends web in in the platform field
  • Sample now contains a sequenceNumber field

Changed

  • Bitmovin7Adapter now checks if another analytics collector is already registered up

Fixed

  • Looping a video (Calling .play() after playbackFinished occured) did not correctly generate a new impressionId

2.0.0

Released 2018-10-23

Added

  • AnalyticsPlayerModule class
  • Analytics.version returns the version of the analytics collector
  • Added support for native HTML5 Video playback via the HTMLVideoElementAdapter
  • Added specific adapter classes for each supported player technology
  • Bitmovin8Adapter
  • Bitmovin7Adapter
  • VideojsAdapter
  • ShakaAdapter
  • HlsAdapter
  • DashjsAdapter
  • HTMLVideoElementAdapter

Changed

  • Setup API has been reworked to use JavaScript classes and specific adapters per player technology

Removed

  • .augment syntax removed in favor of ES6 classes
  • .register syntax removed in favor of ES6 classes
  • window.bitmovin.analytics
  • window.bitmovin.analytics.Players
  • window.bitmovin.analytics.CdnProviders
  • window.bitmovin.analytics.PlayerModule
  • window.bitmovin.analytics.version
  • Automatic Player detection is deprecated in favor of explicit Adapter creation

Fixed

  • Video Bitrate is now correctly reported before the first quality change events in all adapters
  • Player version reporting has been improved.
  • Fixed incorrect handling of videoWindowWidth and videoPlaybackWidth in HLS.js and Shaka.
  • When loading a new video with Bitmovin Player v7 and v8, a new impression id was assigned before the last sample of the old impression has been sent to the server.
  • Fixed error being thrown when hls.destroy() is called because of a not correctly cleared timeout.

Known Issues

  • getPlayerVersion will return unkown for video.js if included via npm or requirejs
  • Not calling player.load in the same code-path after new bitmovin.player.Player() will skew the PLAYER_STARTUPTIME metric.
  • Bitrate Information is not collected when using Native Safari Playback using the HTMLVideoElementAdapter. This is due to the limitations of the Browser and not a bug.
  • The HTML5 adapters and the VideoJs adapter won't assign a new impression id on Analytics.sourceChange()
  • Destroying a Shaka instance will not correctly clear all event handlers on the VideoElement. Re-Using the VideoElement with another Shaka instance will lead to the impression being tracked twice

1.7.4

Released 2018-10-23

Fixed

  • Player detection for Shaka when loaded via require and window.Shaka is not available.
  • Player detection for HLS.js when loaded via require and window.HLS is not available.
  • Beta-Support for Shaka 2.3.7
  • Beta-Support for HLS.js 0.7.11

Known Issues

  • Shaka/HLS Adapter: Video width/heigth/bitrate is only available after the first videoQuality change event.

1.7.3

Released 2018-10-04

Fixed

  • pageLoadType was not correctly detected for subsequent sessions in the same player
  • playerStartupTime was reported as NULL instead of 0 for subsequent sessions in the same player
  • Internal improvements and refactorings

1.7.2

Released 2018-09-20

Fixed

  • isLive detection was broken in subsequent sessions on the same player

1.7.1

Released 2018-09-09

Added

  • added default export for es6 style imports

1.7.0

Released 2018-09-06

Added

Removed

  • Bitmovin Player v6 support
  • Chromecast receiver side support

1.6.0

Released 2018-04-22

Added

  • DASH.js support
  • HLS.js support
  • Shaka player support
  • HTML5 media element support

Changed

  • various internal refactorings
  • added source-maps to the NPM package

Fixed

  • inaccuracies in seek time tracking
  • video.js adapter bugfixes