Loading...

Getting Started

All Open Analytics SDKs follow the same pattern: initialize with your Eventsink URL, attach to your player, and analytics data flows automatically to your dashboard.

  • Automatic event tracking for play, pause, seek, buffering, and errors
  • Periodic heartbeat events for engagement metrics
  • Bitrate and quality change monitoring
  • Custom metadata support for content identification

Web SDK

JavaScript / TypeScript GitHub ↗

Installation

npm install @eyevinn/player-analytics-client-sdk-web

Quick Start

The PlayerAnalyticsConnector automatically captures events from your HTML5 video element:

import { PlayerAnalyticsConnector } from "@eyevinn/player-analytics-client-sdk-web";

const analytics = new PlayerAnalyticsConnector("YOUR_EVENTSINK_URL");

await analytics.init({
  sessionId: crypto.randomUUID(),
  heartbeatInterval: 30000
});

const videoElement = document.querySelector("video");
analytics.load(videoElement);

// When playback ends
analytics.reportStop();
analytics.destroy();

Features

Automatic video element binding TypeScript support Works with any HTML5 player Configurable heartbeat Custom metadata support Error tracking

Android SDK

Kotlin / Java GitHub ↗

Installation

Add JitPack repository and dependency:

// settings.gradle
maven { url 'https://jitpack.io' }

// build.gradle
implementation("com.github.Eyevinn:player-analytics-client-sdk-android:1.0.0")

Quick Start with ExoPlayer

val tracker = VideoAnalyticsTracker.Builder(context, exoPlayer)
    .setEventSinkUrl("YOUR_EVENTSINK_URL")
    .setContentTitle("Video Title")
    .setHeartbeatInterval(30_000L)
    .build()

tracker.startTracking()
exoPlayer.play()

// In onDestroy()
tracker.stopTracking("user_exit")
tracker.release()

Features

ExoPlayer integration Automatic event tracking Buffering detection Bitrate monitoring SGAI ad tracking Configurable heartbeat

iOS SDK

Swift GitHub ↗

Installation (Swift Package Manager)

File → Swift Packages → Add Package Dependency...

https://github.com/Eyevinn/player-analytics-client-sdk-swift

Quick Start with AVPlayer

import VideoStreamTracker

class VideoPlayerViewController: UIViewController {
    var player: AVPlayer!
    var logger: AVPlayerEventLogger!

    override func viewDidLoad() {
        super.viewDidLoad()
        player = AVPlayer(url: videoURL)
        logger = AVPlayerEventLogger(
            player: player,
            eventSinkUrl: URL(string: "YOUR_EVENTSINK_URL")!
        )
    }
}

Features

AVPlayer integration UIKit & SwiftUI support Automatic tracking State monitoring Error reporting Swift Package Manager