Browse Source

Track buffering events as errors differently in playback metrics

pull/1802/head
Gabe Kangas 4 years ago
parent
commit
9f6151359f
No known key found for this signature in database
GPG Key ID: 9A56337728BC81EA
  1. 8
      webroot/js/components/player.js
  2. 14
      webroot/js/metrics/playback.js

8
webroot/js/components/player.js

@ -238,7 +238,7 @@ class OwncastPlayer { @@ -238,7 +238,7 @@ class OwncastPlayer {
const latency = now - segmentTime;
this.playbackMetrics.trackLatency(latency);
} catch (err) {
console.warn(err);
// console.warn(err);
}
}
@ -261,12 +261,12 @@ class OwncastPlayer { @@ -261,12 +261,12 @@ class OwncastPlayer {
}
handleWaiting(e) {
// this.playbackMetrics.incrementErrorCount(1);
this.playbackMetrics.isBuffering = true;
this.playbackMetrics.incrementErrorCount(1);
this.playbackMetrics.setIsBuffering(true);
}
handleNoLongerBuffering() {
this.playbackMetrics.isBuffering = false;
this.playbackMetrics.setIsBuffering(false);
}
log(message) {

14
webroot/js/metrics/playback.js

@ -11,6 +11,7 @@ class PlaybackMetrics { @@ -11,6 +11,7 @@ class PlaybackMetrics {
this.errors = 0;
this.qualityVariantChanges = 0;
this.isBuffering = false;
this.bufferingDurationTimer = 0;
setInterval(() => {
this.send();
@ -31,6 +32,19 @@ class PlaybackMetrics { @@ -31,6 +32,19 @@ class PlaybackMetrics {
this.qualityVariantChanges++;
}
setIsBuffering(isBuffering) {
this.isBuffering = isBuffering;
if (!isBuffering) {
clearTimeout(this.bufferingDurationTimer);
return;
}
this.bufferingDurationTimer = setTimeout(() => {
this.incrementErrorCount(1);
}, 500);
}
trackSegmentDownloadTime(seconds) {
this.segmentDownloadTime.push(seconds);
}

Loading…
Cancel
Save