Track Quality of Experience metrics from your video players directly in your existing Prometheus/Grafana stack. No custom backend, no vendor lock-in.
Built for modern observability stacks
Send metrics directly to Prometheus via OTLP or Pushgateway. Use your existing observability infrastructure.
Hash viewer IDs, no PII collection. Compliant by design with GDPR and privacy regulations.
No logs, no traces. Just lean Prometheus metrics with intelligent batching every 10 seconds.
Adapters for Video.js, HLS.js, dash.js, native HTML5, ExoPlayer (Android), and AVPlayer (iOS/tvOS).
Queue metrics when offline, flush when connection restored. Never lose valuable analytics data.
Commercial friendly license. Fork, extend, and embed in your stack with confidence.
Complete QoE observability out of the box
video_views_total{player="hlsjs"} 15234
video_unique_viewers_total 8923
video_playing_time_seconds_total 2340567
video_concurrent_viewers 342
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
video_rebuffer_percentage 1.2
video_rebuffer_frequency 0.8
video_rebuffer_duration_seconds{p95} 2.1
video_smoothness_score 0.92
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 ReferenceFits 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) │ └───────────────────┘
Player adapters collect events and calculate metrics in real-time
Metrics batched and sent via OTLP or Pushgateway every 10s
Query in Prometheus, visualize in Grafana with included dashboards
Drop-in integration with your existing players
npm install @openqoe/core @openqoe/web
const openQoE = new OpenQoE({
viewerId: 'user-123',
export: {
method: 'otlp',
endpoint: 'http://localhost:4317'
}
});
// HLS.js example
const hls = new Hls();
openQoE.attachToHLSjs(hls, video, {
videoId: 'movie-456',
videoTitle: 'Example Movie'
});
Use our pre-built dashboards or create your own with 50+ available metrics
OpenQoE is just getting started. Star the repo, contribute adapters, and help build the future of open video analytics.