Analytics Collector - Web
2.42.1
Released 2024-12-12
Fixed
- For setup samples, set the
isLive
value to theisLive
value from the Analytics Config, if available.
2.42.0
Released 2024-11-26
Added
- Limit for the number of samples sent per impression
HTMLVideoElementAdapter
: add sanitization to session metadata APIaudioLanguage
is sanitized to be valid string with max length 50 characters (if longer, then it is cut off)subtitleEnabled
is sanitized to be valid booleansubtitleLanguage
is sanitized to be valid string with max length 100 characters (if longer, then it is cut off)
Fixed
- Bitmovin Player: Fix sanitization and validation of ssai API function arguments, invalid arguments are ignored and produce an error log
- Quality changes being reported one sample too early
- Shaka: source changing was producing more
startup
samples
2.41.0
Released 2024-10-17
Fixed
- Shaka, Dash.js, HTML, Hls.js: source changing was not switching
metadata
andimpressionId
properly - Shaka: fixed memory leak when calling
player.destroy()
- Wrong mapping of request type
MANIFEST_HLS_VARIANT
Added
ssaiEngagementTrackingEnabled?: boolean
(defaults tofalse
) 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 analyticsPlayerModule
(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 value0
- 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"
(whenAnalyticsDebugConfig
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 elementHTMLVideoElementAdapter
has a new fieldsessionMetadata
providing functions to change language specific information about the current playback
Changed
- Bitmovin8: Change type of
player.analytics
toBitmovin8Adapter
exposing only publicly available api - set field
ad
to1
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 cookiesmax-age
attribute. Defaults to 1 year.
2.32.0
Released 2023-10-03
Added
- Add support to allow application to override
DEVICE_TYPE
andDEVICE_CLASS
fields in analytics collector viaanalyticsConfig.deviceClass
andanalyticsConfig.deviceType
Changed
- Improved detection of display sizes through taking
window.devicePixelRatio
into account to calculate physical pixels forscreenHeight
andscreenWidth
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 asnull
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 fromshaka.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
andvideotime_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 theuserId
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
tocustomData30
to the sample payload
2.23.0
Released 2021-12-14
Added
customData8
tocustomData25
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 supportedMediaSource
2.21.2
Released 2021-08-26
Fixed
HTML5 native
,video.js
: detection ofstreamFormat
andstreamURL
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
typesAirplay, 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
andsetCustomDataOnce
logic for sending additional samples
2.19.2
Released 2021-01-10
Added
- Typings for
setCustomData
andsetCustomDataOnce
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
orvideoStartupFailed
is detected
Fixed
- Bug where
videotime_start
andvideotime_end
values were incorrect for errors of typeANALYTICS_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
- maximum threshold for quality change events
error
sample sent if quality change threshold has been exceeded (ANALYTICS_QUALITY_CHANGE_THRESHOLD_EXCEEDED)error
sample sent if continuous buffering exceeds threshold (ANALYTICS_BUFFERING_TIMEOUT_REACHED)
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
anddrmType
in every sample
2.14.0
Released 2020-06-07
Added
completed
andcompletedTotal
to sample to track video completion- Bitmovin, Dash.js, Shaka, hls.js: video completion tracking
Fixed
- Dash.js:
attachSource
from Dash MediaPlayer now resets theimpressionId
correctly. - Dash.js, Hls.js, Shaka: track correct
videoTimeEnd
for the playing event if seek occurs during playing Bitmovin8AnalyticsStateMachine
didn't callmanualSourceChange
on Tizen devices
2.13.0
Released 2020-05-24
Added
- Configuration field
customUserId
that is an alias foruserId
to avoid confusion. Both fields will populate theCUSTOM_USER_ID
metric. - Sending out an additional
closed
sample when a user unloads the page to be able to trackSTREAM_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 theREADY
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 toDo 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
andsubtitleLanguage
) - 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
andcast
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
fromcollectorConfig
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 always0
- 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 totrue
. 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
andsubtitleLanguage
.
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 whenplayer.destroy
was called in theadstarted
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
andvideoCodec
- 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 versionplayer.analytics.version
property to get analytics collector versionwindow.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()
afterplaybackFinished
occured) did not correctly generate a new impressionId
2.0.0
Released 2018-10-23
Added
AnalyticsPlayerModule
classAnalytics.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 classeswindow.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
andvideoPlaybackWidth
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 returnunkown
for video.js if included via npm or requirejs- Not calling
player.load
in the same code-path afternew bitmovin.player.Player()
will skew thePLAYER_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 playerplayerStartupTime
was reported asNULL
instead of0
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
- Bitmovin Player v8 Support
title
configuration attribute- introduced new "embedded" configuration API
- DRM performance tracking
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
Updated 6 days ago