AnalyticsEvent
Playback quality and lifecycle events for analytics integrations.
Inheritors
Types
An audio track was selected.
The video rendition in use changed (ABR switch or initial selection).
Playback reached the end of the media.
DRM keys were loaded for a session (initial license or renewal).
Video frames were dropped during elapsedMs.
A fatal playback error occurred.
The player entered or left fullscreen (reported by the view layer; headless integrations do not emit it).
The device rotated (reported by the view layer once on attach with the initial value, then on change). The vertical feed does not emit it — the feed is portrait by design. Distinct from FullscreenChanged: the two diverge on button-driven fullscreen and on tablets.
The player entered or left picture-in-picture (reported by the view layer; headless integrations do not emit it).
The SDK recovered playback silently — no Error was surfaced, but the viewer saw a short rebuffer (typically 1–4 s). Emitted so QoE pipelines can count field recoveries the app never observes.
First video frame of a load rendered. startupMs is wall time from OGPlayer.load to that frame — time-to-first-frame, the industry's primary startup metric. Emitted once per load; audio-only streams, which never render a frame, do not emit it.
Periodic playback-quality sample, emitted every 10s while playing. liveLatencyMs/atLiveEdge are populated for live streams only — the live-latency measurement rides the existing cadence.
A text track was selected (id null = subtitles off) — accessibility usage reporting.
Vertical feed: the item at index became the visible page.
Vertical feed: the active item finished a loop (loopCount so far).
Vertical feed: the item at index left the screen — the impression summary. watchTimeMs is actual watched wall-time on this item (loops included), loopCount how many times it restarted.
The viewer changed volume or mute — the muted-to-sound conversion metric for autoplay/ad measurement.
Properties
Playback-session id: a fresh UUID minted by every OGPlayer.load, stamped on each event of that session so consumers can key their pipelines without inventing their own ids. Null only for events emitted before the first load.