Events
Playback events
The events your video player should emit. These power watch time, concurrency, completion, and QoS metrics.
play_start
Fire when playback begins — after manifest load and first frame render.
typescript
rd.trackPlayStart(
{
contentId: 'aashiqana_s04e12',
contentType: 'series',
contentTitle: 'Aashiqana · S4 E12',
season: 4,
episode: 12,
durationSec: 2640,
},
{ positionSec: 0, bitrateKbps: 4500 },
);pause / resume
Emit on user-initiated pause. Don’t fire on buffering — use buffer for that.
typescript
rd.trackPause({ positionSec: 124 });
rd.trackResume({ positionSec: 124 });buffer
Fire when the player stalls mid-playback and resumes. The durationMs is the rebuffer duration — this drives the QoS rebuffer ratio.
typescript
rd.trackBuffer(
840 /* ms stalled */,
{ positionSec: 456, bitrateKbps: 2500 },
);seek
typescript
rd.trackSeek(124, 340); // from, to in secondsbitrate_change
Fire on every ABR ladder switch.
typescript
rd.trackBitrateChange(6500); // kbpsheartbeat (automatic)
The SDK fires a heartbeat every 30 seconds while playback is active. You don’t call this directly — it’s what powers concurrency counts and watch-hour totals.
complete
Fire on video end — either natural end or manual close after >90% completion.
typescript
rd.trackComplete({ positionSec: 2640, durationSec: 2640 });error
typescript
rd.trackError('MANIFEST_PARSE_FAIL', 'Unexpected token in m3u8');
rd.trackError('DRM_LICENSE_403', 'Widevine license server rejected request');Recommended event order
play_startonce, after first frame.heartbeatevery 30s (automatic).bitrate_changeper ABR switch.bufferwhenwaiting→playing.pause/resumeon user action.seekon scrub.completeon end.
Metrics you get for free
| Metric | Computed from |
|---|---|
| Concurrent viewers | distinct session_id with heartbeat in last 90s |
| Watch hours | sum of heartbeat intervals |
| Completion rate | complete / play_start per content |
| Rebuffer ratio | sum buffer_duration_ms / watch time |
| Startup time | Client timestamp delta from page_view to play_start |
| Average bitrate | weighted by time between bitrate_change events |