Open Source • Apache 2.0 Licensed

Prometheus-Native
Video Analytics

Track Quality of Experience metrics from your video players directly in your existing Prometheus/Grafana stack. No custom backend, no vendor lock-in.

6+
Player Adapters
50+
QoE Metrics
<1%
CPU Overhead
0
Backend Required

Why OpenQoE?

Built for modern observability stacks

Zero Backend

Send metrics directly to Prometheus via OTLP or Pushgateway. Use your existing observability infrastructure.

Privacy First

Hash viewer IDs, no PII collection. Compliant by design with GDPR and privacy regulations.

Pure Metrics

No logs, no traces. Just lean Prometheus metrics with intelligent batching every 10 seconds.

Multi-Platform

Adapters for Video.js, HLS.js, dash.js, native HTML5, ExoPlayer (Android), and AVPlayer (iOS/tvOS).

Offline Safe

Queue metrics when offline, flush when connection restored. Never lose valuable analytics data.

Apache 2.0

Commercial friendly license. Fork, extend, and embed in your stack with confidence.

Industry-Standard Metrics

Complete QoE observability out of the box

Engagement
Playback Success
Startup Time
Smoothness
Video Quality
Advertising
Real-Time
# ENGAGEMENT METRICS
video_views_total{player="hlsjs"} 15234
video_unique_viewers_total 8923
video_playing_time_seconds_total 2340567
video_concurrent_viewers 342
# STARTUP TIME METRICS
video_startup_time_seconds{p95} 2.3
video_seek_latency_seconds{p95} 0.8
video_page_load_time_seconds{p95} 1.5
video_startup_time_score 0.89
# SMOOTHNESS METRICS
video_rebuffer_percentage 1.2
video_rebuffer_frequency 0.8
video_rebuffer_duration_seconds{p95} 2.1
video_smoothness_score 0.92
# QUALITY METRICS
video_weighted_average_bitrate_bps 2500000
video_upscale_percentage 5.2
video_downscale_percentage 12.3
video_quality_score 0.88

Track 50+ metrics across 7 categories with 40+ dimension labels

View Complete Metrics Reference

Simple Architecture

Fits seamlessly into your existing stack

┌─────────────────┐     ┌─────────────────┐     ┌─────────────────┐
│   Video.js      │     │   HLS.js        │     │   ExoPlayer     │
│   HTML5         │     │   dash.js       │     │   AVPlayer      │
└────────┬────────┘     └────────┬────────┘     └────────┬────────┘
         │                       │                         │
         └───────────────────────┴─────────────────────────┘
                                 │
                    ┌────────────▼────────────┐
                    │   OpenQoE Core          │
                    │  • Event Collection     │
                    │  • Metric Calculation   │
                    │  • Batching            │
                    └────────────┬────────────┘
                                 │
                    ┌────────────▼────────────┐
                    │  OpenTelemetry Metrics  │
                    │  • OTLP Protocol        │
                    │  • Prometheus Format    │
                    └────────────┬────────────┘
                                 │
                ┌────────────────┴────────────────┐
                │                                 │
     ┌──────────▼──────────┐          ┌──────────▼──────────┐
     │  OTel Collector     │          │  Prometheus         │
     │  (Recommended)      │          │  Pushgateway        │
     └──────────┬──────────┘          └──────────┬──────────┘
                │                                 │
                └─────────────┬───────────────────┘
                              │
                    ┌─────────▼─────────┐
                    │    Prometheus     │
                    │  (Time Series DB) │
                    └─────────┬─────────┘
                              │
                    ┌─────────▼─────────┐
                    │     Grafana       │
                    │  (Visualization)  │
                    └───────────────────┘
        
1. Collect

Player adapters collect events and calculate metrics in real-time

2. Export

Metrics batched and sent via OTLP or Pushgateway every 10s

3. Visualize

Query in Prometheus, visualize in Grafana with included dashboards

Get Started in Minutes

Drop-in integration with your existing players

1

Install the SDK

npm install @openqoe/core @openqoe/web
2

Initialize with Your Config

const openQoE = new OpenQoE({
  viewerId: 'user-123',
  export: {
    method: 'otlp',
    endpoint: 'http://localhost:4317'
  }
});
3

Attach to Your Player

// HLS.js example
const hls = new Hls();
openQoE.attachToHLSjs(hls, video, {
  videoId: 'movie-456',
  videoTitle: 'Example Movie'
});
4

Import Grafana Dashboards

Use our pre-built dashboards or create your own with 50+ available metrics

Join the Movement

OpenQoE is just getting started. Star the repo, contribute adapters, and help build the future of open video analytics.