@gcorevideo/player 2.22.17 → 2.22.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/clappr-nerd-stats/clappr-nerd-stats.ejs +76 -78
- package/assets/clappr-nerd-stats/clappr-nerd-stats.scss +10 -7
- package/dist/core.js +5 -7
- package/dist/index.css +1350 -1349
- package/dist/index.js +234 -89
- package/dist/plugins/index.css +666 -665
- package/dist/plugins/index.js +231 -83
- package/lib/playback/dash-playback/DashPlayback.d.ts +0 -1
- package/lib/playback/dash-playback/DashPlayback.d.ts.map +1 -1
- package/lib/playback/dash-playback/DashPlayback.js +4 -5
- package/lib/playback/hls-playback/HlsPlayback.d.ts +1 -1
- package/lib/playback/hls-playback/HlsPlayback.d.ts.map +1 -1
- package/lib/playback/hls-playback/HlsPlayback.js +0 -1
- package/lib/playback.types.d.ts +2 -3
- package/lib/playback.types.d.ts.map +1 -1
- package/lib/plugins/clappr-nerd-stats/NerdStats.d.ts +13 -10
- package/lib/plugins/clappr-nerd-stats/NerdStats.d.ts.map +1 -1
- package/lib/plugins/clappr-nerd-stats/NerdStats.js +171 -120
- package/lib/plugins/clappr-nerd-stats/formatter.d.ts +5 -0
- package/lib/plugins/clappr-nerd-stats/formatter.d.ts.map +1 -1
- package/lib/plugins/clappr-nerd-stats/formatter.js +56 -24
- package/lib/plugins/clappr-nerd-stats/speedtest/index.d.ts +2 -2
- package/lib/plugins/clappr-nerd-stats/speedtest/index.d.ts.map +1 -1
- package/lib/plugins/clappr-nerd-stats/speedtest/types.d.ts +1 -1
- package/lib/plugins/clappr-nerd-stats/speedtest/types.d.ts.map +1 -1
- package/lib/plugins/clappr-nerd-stats/types.d.ts +3 -0
- package/lib/plugins/clappr-nerd-stats/types.d.ts.map +1 -1
- package/lib/plugins/clappr-nerd-stats/utils.d.ts +7 -0
- package/lib/plugins/clappr-nerd-stats/utils.d.ts.map +1 -0
- package/lib/plugins/clappr-nerd-stats/utils.js +67 -0
- package/lib/plugins/clappr-stats/types.d.ts +0 -1
- package/lib/plugins/clappr-stats/types.d.ts.map +1 -1
- package/lib/plugins/clappr-stats/utils.d.ts +1 -1
- package/lib/plugins/clappr-stats/utils.d.ts.map +1 -1
- package/lib/plugins/clappr-stats/utils.js +0 -1
- package/lib/plugins/seek-time/SeekTime.d.ts +1 -1
- package/lib/plugins/seek-time/SeekTime.d.ts.map +1 -1
- package/lib/plugins/seek-time/SeekTime.js +3 -4
- package/package.json +1 -1
- package/src/playback/dash-playback/DashPlayback.ts +5 -7
- package/src/playback/hls-playback/HlsPlayback.ts +2 -4
- package/src/playback.types.ts +2 -3
- package/src/plugins/clappr-nerd-stats/NerdStats.ts +212 -139
- package/src/plugins/clappr-nerd-stats/formatter.ts +91 -47
- package/src/plugins/clappr-nerd-stats/speedtest/index.ts +2 -2
- package/src/plugins/clappr-nerd-stats/speedtest/types.ts +1 -1
- package/src/plugins/clappr-nerd-stats/types.ts +43 -3
- package/src/plugins/clappr-nerd-stats/utils.ts +75 -0
- package/src/plugins/clappr-stats/types.ts +39 -40
- package/src/plugins/clappr-stats/utils.ts +3 -4
- package/src/plugins/seek-time/SeekTime.ts +4 -5
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -45,7 +45,6 @@ export default class DashPlayback extends BasePlayback {
|
|
|
45
45
|
private _setupSrc;
|
|
46
46
|
_startTimeUpdateTimer(): void;
|
|
47
47
|
_stopTimeUpdateTimer(): void;
|
|
48
|
-
getProgramDateTime(): number;
|
|
49
48
|
getDuration(): TimeValue;
|
|
50
49
|
getCurrentTime(): TimeValue;
|
|
51
50
|
getStartTimeOffset(): TimeValue;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DashPlayback.d.ts","sourceRoot":"","sources":["../../../src/playback/dash-playback/DashPlayback.ts"],"names":[],"mappings":"AAKA,OAAO,EAAe,QAAQ,EAAyB,MAAM,cAAc,CAAA;AAG3E,OAAO,MAAM,EAAE,EAIb,KAAK,WAAW,IAAI,eAAe,EAEnC,aAAa,EACd,MAAM,QAAQ,CAAA;AAEf,OAAO,EAGL,YAAY,EACZ,YAAY,
|
|
1
|
+
{"version":3,"file":"DashPlayback.d.ts","sourceRoot":"","sources":["../../../src/playback/dash-playback/DashPlayback.ts"],"names":[],"mappings":"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"}
|
|
@@ -35,7 +35,6 @@ export default class DashPlayback extends BasePlayback {
|
|
|
35
35
|
_playbackType = Playback.VOD;
|
|
36
36
|
// #EXT-X-PLAYLIST-TYPE
|
|
37
37
|
_playlistType = null;
|
|
38
|
-
// #EXT-X-PROGRAM-DATE-TIME
|
|
39
38
|
_programDateTime = 0;
|
|
40
39
|
_dash = null;
|
|
41
40
|
_extrapolatedWindowDuration = 0;
|
|
@@ -223,9 +222,9 @@ export default class DashPlayback extends BasePlayback {
|
|
|
223
222
|
clearInterval(this._timeUpdateTimer);
|
|
224
223
|
}
|
|
225
224
|
}
|
|
226
|
-
getProgramDateTime() {
|
|
227
|
-
|
|
228
|
-
}
|
|
225
|
+
// getProgramDateTime() {
|
|
226
|
+
// return this._programDateTime
|
|
227
|
+
// }
|
|
229
228
|
// the duration on the video element itself should not be used
|
|
230
229
|
// as this does not necesarily represent the duration of the stream
|
|
231
230
|
// https://github.com/clappr/clappr/issues/668#issuecomment-157036678
|
|
@@ -344,7 +343,7 @@ export default class DashPlayback extends BasePlayback {
|
|
|
344
343
|
const update = {
|
|
345
344
|
current: this.getCurrentTime(),
|
|
346
345
|
total: this.getDuration(),
|
|
347
|
-
firstFragDateTime: this.getProgramDateTime(),
|
|
346
|
+
// firstFragDateTime: this.getProgramDateTime(), // TODO figure out if needed
|
|
348
347
|
};
|
|
349
348
|
const isSame = this._lastTimeUpdate &&
|
|
350
349
|
update.current === this._lastTimeUpdate.current &&
|
|
@@ -80,7 +80,7 @@ export default class HlsPlayback extends BasePlayback {
|
|
|
80
80
|
private _updateSettings;
|
|
81
81
|
private _onHLSJSError;
|
|
82
82
|
private _keyIsDenied;
|
|
83
|
-
|
|
83
|
+
_onTimeUpdate(): void;
|
|
84
84
|
_onDurationChange(): void;
|
|
85
85
|
_onProgress(): void;
|
|
86
86
|
load(url: string): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HlsPlayback.d.ts","sourceRoot":"","sources":["../../../src/playback/hls-playback/HlsPlayback.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,EACZ,MAAM,IAAI,SAAS,EAInB,KAAK,eAAe,EACpB,KAAK,cAAc,EAInB,KAAK,kBAAkB,EAIxB,MAAM,QAAQ,CAAA;AAEf,OAAO,EAIL,YAAY,
|
|
1
|
+
{"version":3,"file":"HlsPlayback.d.ts","sourceRoot":"","sources":["../../../src/playback/hls-playback/HlsPlayback.ts"],"names":[],"mappings":"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"}
|
|
@@ -528,7 +528,6 @@ export default class HlsPlayback extends BasePlayback {
|
|
|
528
528
|
const update = {
|
|
529
529
|
current: this.getCurrentTime(),
|
|
530
530
|
total: this.getDuration(),
|
|
531
|
-
firstFragDateTime: this.getProgramDateTime(),
|
|
532
531
|
};
|
|
533
532
|
const isSame = this._lastTimeUpdate &&
|
|
534
533
|
update.current === this._lastTimeUpdate.current &&
|
package/lib/playback.types.d.ts
CHANGED
|
@@ -39,10 +39,9 @@ export type TimeProgress = {
|
|
|
39
39
|
/**
|
|
40
40
|
* For the plugin development
|
|
41
41
|
* @beta
|
|
42
|
+
* @deprecated Use TimePosition instead
|
|
42
43
|
*/
|
|
43
|
-
export type TimeUpdate = TimePosition
|
|
44
|
-
firstFragDateTime: number;
|
|
45
|
-
};
|
|
44
|
+
export type TimeUpdate = TimePosition;
|
|
46
45
|
/**
|
|
47
46
|
* A level of quality within a media source/representation.
|
|
48
47
|
* @public
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"playback.types.d.ts","sourceRoot":"","sources":["../src/playback.types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,CAAA;AAE9B;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,OAAO,EAAE,SAAS,CAAA;IAClB;;OAEG;IACH,KAAK,EAAE,SAAS,CAAA;CACjB;AAED;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB;;OAEG;IACH,KAAK,EAAE,SAAS,CAAA;IAChB;;OAEG;IACH,OAAO,EAAE,SAAS,CAAA;IAClB;;OAEG;IACH,KAAK,EAAE,SAAS,CAAA;CACjB,CAAA;AAED
|
|
1
|
+
{"version":3,"file":"playback.types.d.ts","sourceRoot":"","sources":["../src/playback.types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,CAAA;AAE9B;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,OAAO,EAAE,SAAS,CAAA;IAClB;;OAEG;IACH,KAAK,EAAE,SAAS,CAAA;CACjB;AAED;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB;;OAEG;IACH,KAAK,EAAE,SAAS,CAAA;IAChB;;OAEG;IACH,OAAO,EAAE,SAAS,CAAA;IAClB;;OAEG;IACH,KAAK,EAAE,SAAS,CAAA;CACjB,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG,YAAY,CAAA;AAErC;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAA;IACb;;OAEG;IACH,KAAK,EAAE,MAAM,CAAA;IACb;;OAEG;IACH,MAAM,EAAE,MAAM,CAAA;IACd;;OAEG;IACH,OAAO,EAAE,MAAM,CAAA;CAChB;AAED;;;GAGG;AACH,oBAAY,iBAAiB;IAC3B;;OAEG;IACH,OAAO,kBAAkB;IACzB;;OAEG;IACH,sBAAsB,6BAA6B;IACnD;;OAEG;IACH,uBAAuB,+BAA+B;CACvD;AAED;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAA;AAElD;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG,WAAW,GAAG,MAAM,GAAG,UAAU,CAAA;AAEnE;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,IAAI,EAAE,iBAAiB,CAAA;IACvB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAA;IACnB;;OAEG;IACH,KAAK,EAAE,UAAU,CAAA;IACjB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAA;IACf;;;;;;OAMG;IACH,MAAM,EAAE,MAAM,CAAA;IACd;;OAEG;IACH,KAAK,EAAE,mBAAmB,CAAA;IAE1B;;OAEG;IACH,EAAE,CAAC,EAAE;QACH,KAAK,EAAE,MAAM,CAAA;QACb,OAAO,EAAE,MAAM,CAAA;QACf,IAAI,CAAC,EAAE,MAAM,CAAA;KACd,CAAA;CACF"}
|
|
@@ -18,9 +18,9 @@ import '../../../assets/clappr-nerd-stats/clappr-nerd-stats.scss';
|
|
|
18
18
|
*/
|
|
19
19
|
export declare class NerdStats extends UICorePlugin {
|
|
20
20
|
private container;
|
|
21
|
-
private
|
|
21
|
+
private speedtestMetrics;
|
|
22
22
|
private metrics;
|
|
23
|
-
private
|
|
23
|
+
private open;
|
|
24
24
|
private shortcut;
|
|
25
25
|
private iconPosition;
|
|
26
26
|
private static readonly buttonTemplate;
|
|
@@ -39,17 +39,17 @@ export declare class NerdStats extends UICorePlugin {
|
|
|
39
39
|
* @internal
|
|
40
40
|
*/
|
|
41
41
|
get attributes(): {
|
|
42
|
-
'data-clappr-nerd-stats': string;
|
|
43
42
|
class: string;
|
|
44
43
|
};
|
|
45
44
|
/**
|
|
46
45
|
* @internal
|
|
47
46
|
*/
|
|
48
47
|
get events(): {
|
|
49
|
-
|
|
50
|
-
'click
|
|
51
|
-
'click
|
|
48
|
+
click: string;
|
|
49
|
+
'click #nerd-stats-close': string;
|
|
50
|
+
'click #nerd-stats-refresh': string;
|
|
52
51
|
};
|
|
52
|
+
private clicked;
|
|
53
53
|
private get statsBoxElem();
|
|
54
54
|
private get statsBoxWidthThreshold();
|
|
55
55
|
private get playerWidth();
|
|
@@ -60,6 +60,7 @@ export declare class NerdStats extends UICorePlugin {
|
|
|
60
60
|
*/
|
|
61
61
|
bindEvents(): void;
|
|
62
62
|
private onCoreReady;
|
|
63
|
+
private onActiveContainerChanged;
|
|
63
64
|
/**
|
|
64
65
|
* @internal
|
|
65
66
|
*/
|
|
@@ -68,16 +69,18 @@ export declare class NerdStats extends UICorePlugin {
|
|
|
68
69
|
private show;
|
|
69
70
|
private hide;
|
|
70
71
|
private onPlayerResize;
|
|
71
|
-
private
|
|
72
|
-
private
|
|
72
|
+
private updateResolution;
|
|
73
|
+
private estimateQuality;
|
|
73
74
|
private updateMetrics;
|
|
75
|
+
private updateEstimatedQuality;
|
|
74
76
|
private setStatsBoxSize;
|
|
75
77
|
/**
|
|
76
78
|
* @internal
|
|
77
79
|
*/
|
|
78
80
|
render(): this;
|
|
79
|
-
private
|
|
80
|
-
private
|
|
81
|
+
private attach;
|
|
82
|
+
private clearSpeedtestMetrics;
|
|
81
83
|
private refreshSpeedTest;
|
|
84
|
+
private formatPlaybackName;
|
|
82
85
|
}
|
|
83
86
|
//# sourceMappingURL=NerdStats.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NerdStats.d.ts","sourceRoot":"","sources":["../../../src/plugins/clappr-nerd-stats/NerdStats.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"NerdStats.d.ts","sourceRoot":"","sources":["../../../src/plugins/clappr-nerd-stats/NerdStats.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EAGZ,IAAI,EAGL,MAAM,cAAc,CAAA;AAuBrB,OAAO,0DAA0D,CAAA;AAiCjE;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,SAAU,SAAQ,YAAY;IACzC,OAAO,CAAC,SAAS,CAAyB;IAE1C,OAAO,CAAC,gBAAgB,CAIvB;IAED,OAAO,CAAC,OAAO,CAAwB;IAEvC,OAAO,CAAC,IAAI,CAAQ;IAEpB,OAAO,CAAC,QAAQ,CAAU;IAE1B,OAAO,CAAC,YAAY,CAAc;IAElC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAuB;IAE7D;;OAEG;IACH,IAAI,IAAI,WAEP;IAED;;OAEG;IACH,IAAI,gBAAgB;;MAEnB;IAED,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAuB;IAEvD;;OAEG;IACH,IAAa,UAAU;;MAItB;IAED;;OAEG;IACH,IAAa,MAAM;;;;MAMlB;IAED,OAAO,CAAC,OAAO;IAKf,OAAO,KAAK,YAAY,GAEvB;IAED,OAAO,KAAK,sBAAsB,GAEjC;IAED,OAAO,KAAK,WAAW,GAEtB;IAED,OAAO,KAAK,YAAY,GAEvB;gBAEW,IAAI,EAAE,IAAI;IAgBtB;;OAEG;IACM,UAAU;IAUnB,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,wBAAwB;IAiChC;;OAEG;IACM,OAAO;IAKhB,OAAO,CAAC,MAAM,CAMb;IAED,OAAO,CAAC,IAAI;IAgBZ,OAAO,CAAC,IAAI;IAMZ,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,gBAAgB;IAaxB,OAAO,CAAC,eAAe;IA8BvB,OAAO,CAAC,aAAa;IAmFrB,OAAO,CAAC,sBAAsB;IAU9B,OAAO,CAAC,eAAe;IAUvB;;OAEG;IACM,MAAM;IAcf,OAAO,CAAC,MAAM;IAiBd,OAAO,CAAC,qBAAqB;IAY7B,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,kBAAkB;CAU3B"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { UICorePlugin, Events, template } from '@clappr/core';
|
|
1
|
+
import { UICorePlugin, Events, template, Playback, } from '@clappr/core';
|
|
2
2
|
import { reportError, trace } from '@gcorevideo/utils';
|
|
3
3
|
import Mousetrap from 'mousetrap';
|
|
4
4
|
import assert from 'assert';
|
|
@@ -12,72 +12,12 @@ import pluginHtml from '../../../assets/clappr-nerd-stats/clappr-nerd-stats.ejs'
|
|
|
12
12
|
import buttonHtml from '../../../assets/clappr-nerd-stats/button.ejs';
|
|
13
13
|
import statsIcon from '../../../assets/icons/new/stats.svg';
|
|
14
14
|
import { GearEvents } from '../bottom-gear/BottomGear.js';
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
'
|
|
19
|
-
'
|
|
20
|
-
'
|
|
21
|
-
];
|
|
22
|
-
const getDownloadQuality = (speedValue) => {
|
|
23
|
-
if (speedValue < 3) {
|
|
24
|
-
return 1;
|
|
25
|
-
}
|
|
26
|
-
else if (speedValue < 7) {
|
|
27
|
-
return 2;
|
|
28
|
-
}
|
|
29
|
-
else if (speedValue < 13) {
|
|
30
|
-
return 3;
|
|
31
|
-
}
|
|
32
|
-
else if (speedValue < 25) {
|
|
33
|
-
return 4;
|
|
34
|
-
}
|
|
35
|
-
else {
|
|
36
|
-
return 5;
|
|
37
|
-
}
|
|
38
|
-
};
|
|
39
|
-
const getPingQuality = (pingValue) => {
|
|
40
|
-
if (pingValue < 20) {
|
|
41
|
-
return 5;
|
|
42
|
-
}
|
|
43
|
-
else if (pingValue < 50) {
|
|
44
|
-
return 4;
|
|
45
|
-
}
|
|
46
|
-
else if (pingValue < 100) {
|
|
47
|
-
return 3;
|
|
48
|
-
}
|
|
49
|
-
else if (pingValue < 150) {
|
|
50
|
-
return 2;
|
|
51
|
-
}
|
|
52
|
-
else {
|
|
53
|
-
return 1;
|
|
54
|
-
}
|
|
55
|
-
};
|
|
56
|
-
const generateQualityHtml = (quality) => {
|
|
57
|
-
const html = [];
|
|
58
|
-
const qualityClassName = qualityClasses[quality - 1];
|
|
59
|
-
for (let i = 0; i < qualityClasses.length; i++) {
|
|
60
|
-
if (i < quality) {
|
|
61
|
-
html.push(`<div class="speedtest-quality-content-item ${qualityClassName}"></div>`);
|
|
62
|
-
}
|
|
63
|
-
else {
|
|
64
|
-
html.push('<div class="speedtest-quality-content-item"></div>');
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
return html.join('');
|
|
68
|
-
};
|
|
69
|
-
const drawSummary = (customMetrics, vodContainer, liveContainer) => {
|
|
70
|
-
const { connectionSpeed, ping } = customMetrics;
|
|
71
|
-
if (!connectionSpeed || !ping) {
|
|
72
|
-
return;
|
|
73
|
-
}
|
|
74
|
-
const downloadQuality = getDownloadQuality(connectionSpeed);
|
|
75
|
-
const pingQuality = getPingQuality(ping);
|
|
76
|
-
const liveQuality = Math.min(downloadQuality, pingQuality);
|
|
77
|
-
const vodHtml = generateQualityHtml(downloadQuality);
|
|
78
|
-
const liveHtml = generateQualityHtml(liveQuality);
|
|
79
|
-
vodContainer.html(vodHtml);
|
|
80
|
-
liveContainer.html(liveHtml);
|
|
15
|
+
import { drawSummary, getPingQuality } from './utils.js';
|
|
16
|
+
import { getDownloadQuality } from './utils.js';
|
|
17
|
+
const PLAYBACK_NAMES = {
|
|
18
|
+
dash: 'DASH.js',
|
|
19
|
+
hls: 'HLS.js',
|
|
20
|
+
html5_video: 'Native',
|
|
81
21
|
};
|
|
82
22
|
const T = 'plugins.nerd_stats';
|
|
83
23
|
/**
|
|
@@ -98,13 +38,13 @@ const T = 'plugins.nerd_stats';
|
|
|
98
38
|
*/
|
|
99
39
|
export class NerdStats extends UICorePlugin {
|
|
100
40
|
container = null;
|
|
101
|
-
|
|
41
|
+
speedtestMetrics = {
|
|
102
42
|
connectionSpeed: 0,
|
|
103
43
|
ping: 0,
|
|
104
44
|
jitter: 0,
|
|
105
45
|
};
|
|
106
46
|
metrics = newMetrics();
|
|
107
|
-
|
|
47
|
+
open = false;
|
|
108
48
|
shortcut;
|
|
109
49
|
iconPosition;
|
|
110
50
|
static buttonTemplate = template(buttonHtml);
|
|
@@ -126,7 +66,6 @@ export class NerdStats extends UICorePlugin {
|
|
|
126
66
|
*/
|
|
127
67
|
get attributes() {
|
|
128
68
|
return {
|
|
129
|
-
'data-clappr-nerd-stats': '',
|
|
130
69
|
class: 'clappr-nerd-stats',
|
|
131
70
|
};
|
|
132
71
|
}
|
|
@@ -135,13 +74,17 @@ export class NerdStats extends UICorePlugin {
|
|
|
135
74
|
*/
|
|
136
75
|
get events() {
|
|
137
76
|
return {
|
|
138
|
-
|
|
139
|
-
'click
|
|
140
|
-
'click
|
|
77
|
+
click: 'clicked',
|
|
78
|
+
'click #nerd-stats-close': 'hide',
|
|
79
|
+
'click #nerd-stats-refresh': 'refreshSpeedTest',
|
|
141
80
|
};
|
|
142
81
|
}
|
|
82
|
+
clicked(e) {
|
|
83
|
+
e.stopPropagation();
|
|
84
|
+
e.preventDefault();
|
|
85
|
+
}
|
|
143
86
|
get statsBoxElem() {
|
|
144
|
-
return '
|
|
87
|
+
return this.$el.find('#nerd-stats-box');
|
|
145
88
|
}
|
|
146
89
|
get statsBoxWidthThreshold() {
|
|
147
90
|
return 720;
|
|
@@ -160,7 +103,7 @@ export class NerdStats extends UICorePlugin {
|
|
|
160
103
|
];
|
|
161
104
|
this.iconPosition =
|
|
162
105
|
core.options.clapprNerdStats?.iconPosition ?? 'bottom-right';
|
|
163
|
-
this.
|
|
106
|
+
this.speedtestMetrics = {
|
|
164
107
|
connectionSpeed: 0,
|
|
165
108
|
ping: 0,
|
|
166
109
|
jitter: 0,
|
|
@@ -172,20 +115,38 @@ export class NerdStats extends UICorePlugin {
|
|
|
172
115
|
*/
|
|
173
116
|
bindEvents() {
|
|
174
117
|
this.listenToOnce(this.core, Events.CORE_READY, this.onCoreReady);
|
|
118
|
+
this.listenTo(this.core, Events.CORE_RESIZE, this.onPlayerResize);
|
|
119
|
+
this.listenTo(this.core, Events.CORE_ACTIVE_CONTAINER_CHANGED, this.onActiveContainerChanged);
|
|
175
120
|
}
|
|
176
121
|
onCoreReady() {
|
|
177
122
|
const bottomGear = this.core.getPlugin('bottom_gear');
|
|
178
123
|
assert(bottomGear, 'bottom_gear plugin is required');
|
|
179
|
-
this.listenTo(bottomGear, GearEvents.RENDERED, this.
|
|
124
|
+
this.listenTo(bottomGear, GearEvents.RENDERED, this.attach);
|
|
125
|
+
Mousetrap.bind(this.shortcut, this.toggle);
|
|
126
|
+
this.updateResolution();
|
|
127
|
+
}
|
|
128
|
+
onActiveContainerChanged() {
|
|
180
129
|
this.container = this.core.activeContainer;
|
|
181
130
|
const clapprStats = this.container?.getPlugin('clappr_stats');
|
|
182
131
|
assert(clapprStats, 'clappr-stats not available. Please, include it as a plugin of your Clappr instance.\n' +
|
|
183
132
|
'For more info, visit: https://github.com/clappr/clappr-stats.');
|
|
184
|
-
Mousetrap.bind(this.shortcut, this.toggle);
|
|
185
|
-
this.listenTo(this.core, Events.CORE_RESIZE, this.onPlayerResize);
|
|
186
133
|
this.listenTo(clapprStats, ClapprStatsEvents.REPORT, this.updateMetrics);
|
|
134
|
+
this.listenTo(this.core.activeContainer, Events.CONTAINER_VOLUME, () => {
|
|
135
|
+
this.metrics.general.volume = this.container?.volume ?? 0;
|
|
136
|
+
this.$el
|
|
137
|
+
.find('#nerd-stats-volume')
|
|
138
|
+
.text(Formatter.formatVolume(this.metrics.general.volume));
|
|
139
|
+
});
|
|
140
|
+
this.listenTo(this.core.activePlayback, Events.PLAYBACK_LOADEDMETADATA, () => {
|
|
141
|
+
this.$el
|
|
142
|
+
.find('#nerd-stats-playback-type')
|
|
143
|
+
.text(this.formatPlaybackName(this.core.activePlayback.getPlaybackType()));
|
|
144
|
+
});
|
|
187
145
|
this.updateMetrics(clapprStats.exportMetrics());
|
|
188
|
-
this
|
|
146
|
+
this.$el
|
|
147
|
+
.find('#nerd-stats-playback-name')
|
|
148
|
+
.text(PLAYBACK_NAMES[this.core.activePlayback.name] ?? '-');
|
|
149
|
+
this.core.activeContainer.$el.append(this.$el);
|
|
189
150
|
}
|
|
190
151
|
/**
|
|
191
152
|
* @internal
|
|
@@ -195,7 +156,7 @@ export class NerdStats extends UICorePlugin {
|
|
|
195
156
|
return super.destroy();
|
|
196
157
|
}
|
|
197
158
|
toggle = () => {
|
|
198
|
-
if (this.
|
|
159
|
+
if (this.open) {
|
|
199
160
|
this.hide();
|
|
200
161
|
}
|
|
201
162
|
else {
|
|
@@ -203,10 +164,11 @@ export class NerdStats extends UICorePlugin {
|
|
|
203
164
|
}
|
|
204
165
|
};
|
|
205
166
|
show() {
|
|
206
|
-
this
|
|
207
|
-
this.
|
|
167
|
+
this.$el.show();
|
|
168
|
+
this.statsBoxElem.scrollTop(this.statsBoxElem.scrollTop());
|
|
169
|
+
this.open = true;
|
|
208
170
|
this.refreshSpeedTest();
|
|
209
|
-
initSpeedTest(this.
|
|
171
|
+
initSpeedTest(this.speedtestMetrics)
|
|
210
172
|
.then(() => {
|
|
211
173
|
startSpeedtest();
|
|
212
174
|
})
|
|
@@ -216,21 +178,28 @@ export class NerdStats extends UICorePlugin {
|
|
|
216
178
|
});
|
|
217
179
|
}
|
|
218
180
|
hide() {
|
|
219
|
-
this
|
|
220
|
-
this.
|
|
181
|
+
this.$el.hide();
|
|
182
|
+
this.open = false;
|
|
221
183
|
stopSpeedtest();
|
|
222
184
|
}
|
|
223
185
|
onPlayerResize() {
|
|
224
186
|
this.setStatsBoxSize();
|
|
187
|
+
this.updateResolution();
|
|
225
188
|
}
|
|
226
|
-
|
|
227
|
-
this.metrics.general = {
|
|
228
|
-
|
|
229
|
-
|
|
189
|
+
updateResolution() {
|
|
190
|
+
this.metrics.general.resolution = {
|
|
191
|
+
width: this.playerWidth,
|
|
192
|
+
height: this.playerHeight,
|
|
230
193
|
};
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
194
|
+
this.$el
|
|
195
|
+
.find('#nerd-stats-resolution-width')
|
|
196
|
+
.text(this.metrics.general.resolution.width);
|
|
197
|
+
this.$el
|
|
198
|
+
.find('#nerd-stats-resolution-height')
|
|
199
|
+
.text(this.metrics.general.resolution.height);
|
|
200
|
+
}
|
|
201
|
+
estimateQuality() {
|
|
202
|
+
trace(`${T} estimateQuality`);
|
|
234
203
|
const videoQualityNames = [
|
|
235
204
|
'SD (480p)',
|
|
236
205
|
'HD (720p)',
|
|
@@ -238,9 +207,9 @@ export class NerdStats extends UICorePlugin {
|
|
|
238
207
|
'2K (1440p)',
|
|
239
208
|
'4K (2160p)',
|
|
240
209
|
];
|
|
241
|
-
const { connectionSpeed, ping } = this.
|
|
210
|
+
const { connectionSpeed, ping } = this.speedtestMetrics;
|
|
242
211
|
if (!connectionSpeed || !ping) {
|
|
243
|
-
const calculatingText = '
|
|
212
|
+
const calculatingText = this.core.i18n.t('stats.calculating');
|
|
244
213
|
this.metrics.custom.vodQuality = calculatingText;
|
|
245
214
|
this.metrics.custom.liveQuality = calculatingText;
|
|
246
215
|
return;
|
|
@@ -255,44 +224,109 @@ export class NerdStats extends UICorePlugin {
|
|
|
255
224
|
prefix + videoQualityNames[liveQuality - 1];
|
|
256
225
|
}
|
|
257
226
|
updateMetrics(metrics) {
|
|
227
|
+
trace(`${T} updateMetrics`, { custom: this.speedtestMetrics });
|
|
258
228
|
Object.assign(this.metrics, metrics);
|
|
259
|
-
this.
|
|
260
|
-
this
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
229
|
+
this.updateEstimatedQuality();
|
|
230
|
+
this.$el
|
|
231
|
+
.find('#nerd-stats-current-time')
|
|
232
|
+
.text(Formatter.formatTime(this.metrics.extra.currentTime));
|
|
233
|
+
this.$el
|
|
234
|
+
.find('#nerd-stats-video-duration')
|
|
235
|
+
.text(Formatter.formatTime(this.metrics.extra.duration));
|
|
236
|
+
this.$el
|
|
237
|
+
.find('#nerd-stats-buffer-size')
|
|
238
|
+
.text(Formatter.formatTime(this.metrics.extra.buffersize));
|
|
239
|
+
this.$el
|
|
240
|
+
.find('#nerd-stats-bitrate-weighted-mean')
|
|
241
|
+
.text(Formatter.formatBitrate(this.metrics.extra.bitrateWeightedMean));
|
|
242
|
+
this.$el
|
|
243
|
+
.find('#nerd-stats-bitrate-most-used')
|
|
244
|
+
.text(Formatter.formatBitrate(this.metrics.extra.bitrateMostUsed));
|
|
245
|
+
this.$el
|
|
246
|
+
.find('#nerd-stats-watched-percentage')
|
|
247
|
+
.text(Formatter.formatPercentage(this.metrics.extra.watchedPercentage));
|
|
248
|
+
this.$el
|
|
249
|
+
.find('#nerd-stats-buffering-percentage')
|
|
250
|
+
.text(Formatter.formatPercentage(this.metrics.extra.bufferingPercentage));
|
|
251
|
+
this.$el
|
|
252
|
+
.find('#nerd-stats-startup-time')
|
|
253
|
+
.text(Formatter.formatTime(this.metrics.chrono.startup));
|
|
254
|
+
this.$el
|
|
255
|
+
.find('#nerd-stats-watch-time')
|
|
256
|
+
.text(Formatter.formatTime(this.metrics.chrono.watch));
|
|
257
|
+
this.$el
|
|
258
|
+
.find('#nerd-stats-pause-time')
|
|
259
|
+
.text(Formatter.formatTime(this.metrics.chrono.pause));
|
|
260
|
+
this.$el
|
|
261
|
+
.find('#nerd-stats-buffering-time')
|
|
262
|
+
.text(Formatter.formatTime(this.metrics.chrono.buffering));
|
|
263
|
+
this.$el
|
|
264
|
+
.find('#nerd-stats-session-time')
|
|
265
|
+
.text(Formatter.formatTime(this.metrics.chrono.session));
|
|
266
|
+
this.$el.find('#nerd-stats-plays').text(this.metrics.counters.play);
|
|
267
|
+
this.$el.find('#nerd-stats-pauses').text(this.metrics.counters.pause);
|
|
268
|
+
this.$el.find('#nerd-stats-errors').text(this.metrics.counters.error);
|
|
269
|
+
this.$el
|
|
270
|
+
.find('#nerd-stats-bufferings')
|
|
271
|
+
.text(this.metrics.counters.buffering);
|
|
272
|
+
this.$el
|
|
273
|
+
.find('#nerd-stats-decoded-frames')
|
|
274
|
+
.text(this.metrics.counters.decodedFrames);
|
|
275
|
+
this.$el
|
|
276
|
+
.find('#nerd-stats-dropped-frames')
|
|
277
|
+
.text(this.metrics.counters.droppedFrames);
|
|
278
|
+
this.$el
|
|
279
|
+
.find('#nerd-stats-bitrate-changes')
|
|
280
|
+
.text(this.metrics.counters.changeLevel);
|
|
281
|
+
this.$el.find('#nerd-stats-seeks').text(this.metrics.counters.seek);
|
|
282
|
+
this.$el
|
|
283
|
+
.find('#nerd-stats-fullscreen')
|
|
284
|
+
.text(this.metrics.counters.fullscreen);
|
|
285
|
+
this.$el.find('#nerd-stats-dvr-usage').text(this.metrics.counters.dvrUsage);
|
|
286
|
+
this.$el
|
|
287
|
+
.find('#nerd-stats-fps')
|
|
288
|
+
.text(Formatter.formatFps(this.metrics.counters.fps));
|
|
266
289
|
this.setStatsBoxSize();
|
|
267
290
|
drawSpeedTestResults();
|
|
268
|
-
drawSummary(this.
|
|
269
|
-
|
|
270
|
-
if (!this.showing) {
|
|
291
|
+
drawSummary(this.speedtestMetrics, this.$el.find('#nerd-stats-quality-vod'), this.$el.find('#nerd-stats-quality-live'));
|
|
292
|
+
if (!this.open) {
|
|
271
293
|
this.hide();
|
|
272
294
|
}
|
|
273
295
|
}
|
|
296
|
+
updateEstimatedQuality() {
|
|
297
|
+
this.estimateQuality();
|
|
298
|
+
this.$el
|
|
299
|
+
.find('#nerd-stats-quality-vod-text')
|
|
300
|
+
.html(this.metrics.custom.vodQuality);
|
|
301
|
+
this.$el
|
|
302
|
+
.find('#nerd-stats-quality-live-text')
|
|
303
|
+
.html(this.metrics.custom.liveQuality);
|
|
304
|
+
}
|
|
274
305
|
setStatsBoxSize() {
|
|
275
306
|
if (this.playerWidth >= this.statsBoxWidthThreshold) {
|
|
276
|
-
this
|
|
277
|
-
this
|
|
307
|
+
this.statsBoxElem.addClass('wide');
|
|
308
|
+
this.statsBoxElem.removeClass('narrow');
|
|
278
309
|
}
|
|
279
310
|
else {
|
|
280
|
-
this
|
|
281
|
-
this
|
|
311
|
+
this.statsBoxElem.removeClass('wide');
|
|
312
|
+
this.statsBoxElem.addClass('narrow');
|
|
282
313
|
}
|
|
283
314
|
}
|
|
284
315
|
/**
|
|
285
316
|
* @internal
|
|
286
317
|
*/
|
|
287
318
|
render() {
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
319
|
+
this.$el
|
|
320
|
+
.html(NerdStats.template({
|
|
321
|
+
metrics: Formatter.format(this.metrics ?? newMetrics()),
|
|
322
|
+
iconPosition: this.iconPosition,
|
|
323
|
+
i18n: this.core.i18n,
|
|
324
|
+
}))
|
|
325
|
+
.hide();
|
|
292
326
|
return this;
|
|
293
327
|
}
|
|
294
|
-
|
|
295
|
-
trace(`${T}
|
|
328
|
+
attach() {
|
|
329
|
+
trace(`${T} attach`);
|
|
296
330
|
const gear = this.core.getPlugin('bottom_gear');
|
|
297
331
|
gear
|
|
298
332
|
.addItem('nerd_stats')
|
|
@@ -305,11 +339,11 @@ export class NerdStats extends UICorePlugin {
|
|
|
305
339
|
this.toggle();
|
|
306
340
|
});
|
|
307
341
|
}
|
|
308
|
-
|
|
342
|
+
clearSpeedtestMetrics() {
|
|
309
343
|
const clapprStats = this.container?.getPlugin('clappr_stats');
|
|
310
|
-
this.
|
|
311
|
-
this.
|
|
312
|
-
this.
|
|
344
|
+
this.speedtestMetrics.connectionSpeed = 0;
|
|
345
|
+
this.speedtestMetrics.ping = 0;
|
|
346
|
+
this.speedtestMetrics.jitter = 0;
|
|
313
347
|
if (clapprStats) {
|
|
314
348
|
this.updateMetrics(clapprStats.exportMetrics());
|
|
315
349
|
}
|
|
@@ -317,7 +351,7 @@ export class NerdStats extends UICorePlugin {
|
|
|
317
351
|
refreshSpeedTest() {
|
|
318
352
|
stopSpeedtest();
|
|
319
353
|
setTimeout(() => {
|
|
320
|
-
this.
|
|
354
|
+
this.clearSpeedtestMetrics();
|
|
321
355
|
clearSpeedTestResults();
|
|
322
356
|
drawSpeedTestResults();
|
|
323
357
|
}, 200);
|
|
@@ -325,11 +359,28 @@ export class NerdStats extends UICorePlugin {
|
|
|
325
359
|
startSpeedtest();
|
|
326
360
|
}, 800);
|
|
327
361
|
}
|
|
362
|
+
formatPlaybackName(playbackType) {
|
|
363
|
+
switch (playbackType) {
|
|
364
|
+
case Playback.VOD:
|
|
365
|
+
return this.core.i18n.t('vod');
|
|
366
|
+
case Playback.LIVE:
|
|
367
|
+
return this.core.i18n.t('live');
|
|
368
|
+
default:
|
|
369
|
+
return '-';
|
|
370
|
+
}
|
|
371
|
+
}
|
|
328
372
|
}
|
|
329
373
|
function newMetrics() {
|
|
330
374
|
return {
|
|
331
375
|
...newBaseMetrics(),
|
|
332
|
-
general: {
|
|
376
|
+
general: {
|
|
377
|
+
displayResolution: '',
|
|
378
|
+
resolution: {
|
|
379
|
+
width: 0,
|
|
380
|
+
height: 0,
|
|
381
|
+
},
|
|
382
|
+
volume: 0,
|
|
383
|
+
},
|
|
333
384
|
custom: {
|
|
334
385
|
connectionSpeed: 0,
|
|
335
386
|
ping: 0,
|
|
@@ -3,6 +3,11 @@ type MetricsValue = number | string;
|
|
|
3
3
|
type Metrics = Partial<Record<MetricsKind, Partial<Record<MetricsType, MetricsValue>>>>;
|
|
4
4
|
export default class Formatter {
|
|
5
5
|
static format(metrics: Metrics): Metrics;
|
|
6
|
+
static formatVolume(volume: number): string;
|
|
7
|
+
static formatTime(time: number): string;
|
|
8
|
+
static formatFps(fps: number): string;
|
|
9
|
+
static formatPercentage(percentage: number): string;
|
|
10
|
+
static formatBitrate(bitrate: number): string;
|
|
6
11
|
}
|
|
7
12
|
export {};
|
|
8
13
|
//# sourceMappingURL=formatter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatter.d.ts","sourceRoot":"","sources":["../../../src/plugins/clappr-nerd-stats/formatter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"formatter.d.ts","sourceRoot":"","sources":["../../../src/plugins/clappr-nerd-stats/formatter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAc,WAAW,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAsFnE,KAAK,YAAY,GAAG,MAAM,GAAG,MAAM,CAAA;AACnC,KAAK,OAAO,GAAG,OAAO,CACpB,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC,CAChE,CAAA;AAED,MAAM,CAAC,OAAO,OAAO,SAAS;IAC5B,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO;IAkCxC,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAI3C,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAMvC,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAIrC,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IAMnD,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;CAK9C"}
|