@gcorevideo/player 2.22.21 → 2.22.22
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 +30 -30
- package/assets/clappr-nerd-stats/clappr-nerd-stats.scss +21 -14
- package/dist/core.js +1 -1
- package/dist/index.css +686 -678
- package/dist/index.js +49 -31
- package/dist/player.d.ts +32 -10
- package/dist/plugins/index.css +612 -604
- package/dist/plugins/index.js +48 -30
- package/docs/api/player.extendedevents.md +45 -0
- package/docs/api/player.md +21 -1
- package/docs/api/player.volumefade._constructor_.md +50 -0
- package/docs/api/player.volumefade.md +40 -1
- package/docs/api/player.volumefadesettings.md +18 -0
- package/lib/plugins/clappr-nerd-stats/NerdStats.d.ts +1 -0
- package/lib/plugins/clappr-nerd-stats/NerdStats.d.ts.map +1 -1
- package/lib/plugins/clappr-nerd-stats/NerdStats.js +13 -3
- package/lib/plugins/clappr-nerd-stats/speedtest/Speedtest.d.ts.map +1 -1
- package/lib/plugins/clappr-nerd-stats/speedtest/Speedtest.js +1 -0
- package/lib/plugins/clappr-nerd-stats/speedtest/index.js +1 -1
- package/lib/plugins/clappr-nerd-stats/utils.d.ts.map +1 -1
- package/lib/plugins/clappr-nerd-stats/utils.js +17 -15
- package/lib/plugins/clappr-stats/ClapprStats.d.ts +1 -0
- package/lib/plugins/clappr-stats/ClapprStats.d.ts.map +1 -1
- package/lib/plugins/clappr-stats/ClapprStats.js +3 -0
- package/lib/plugins/click-to-pause/ClickToPause.js +6 -7
- package/lib/plugins/volume-fade/VolumeFade.d.ts +3 -1
- package/lib/plugins/volume-fade/VolumeFade.d.ts.map +1 -1
- package/lib/plugins/volume-fade/VolumeFade.js +6 -3
- package/package.json +1 -1
- package/src/plugins/clappr-nerd-stats/NerdStats.ts +21 -8
- package/src/plugins/clappr-nerd-stats/speedtest/Speedtest.ts +1 -0
- package/src/plugins/clappr-nerd-stats/speedtest/index.ts +1 -1
- package/src/plugins/clappr-nerd-stats/utils.ts +23 -13
- package/src/plugins/clappr-stats/ClapprStats.ts +4 -0
- package/src/plugins/click-to-pause/ClickToPause.ts +6 -6
- package/src/plugins/volume-fade/VolumeFade.ts +6 -3
- package/temp/player.api.json +100 -2
- package/tsconfig.tsbuildinfo +1 -1
package/dist/plugins/index.js
CHANGED
|
@@ -10496,6 +10496,9 @@ class ClapprStats extends ContainerPlugin {
|
|
|
10496
10496
|
exportMetrics() {
|
|
10497
10497
|
return structuredClone(this.metrics);
|
|
10498
10498
|
}
|
|
10499
|
+
clearMetrics() {
|
|
10500
|
+
this.metrics = newMetrics$1();
|
|
10501
|
+
}
|
|
10499
10502
|
onBitrate(newBitrate) {
|
|
10500
10503
|
const bitrate = newBitrate.bitrate;
|
|
10501
10504
|
const now = this.now();
|
|
@@ -12271,6 +12274,7 @@ class Speedtest {
|
|
|
12271
12274
|
}
|
|
12272
12275
|
addTestPoint(server) {
|
|
12273
12276
|
this._checkServerDefinition(server);
|
|
12277
|
+
console.log('Speedtest addTestPoint %o', server);
|
|
12274
12278
|
if (this._state === 0) {
|
|
12275
12279
|
this._state = 1;
|
|
12276
12280
|
}
|
|
@@ -12567,7 +12571,7 @@ const getColor = (speedValue) => {
|
|
|
12567
12571
|
}
|
|
12568
12572
|
};
|
|
12569
12573
|
function drawSpeedTestResults() {
|
|
12570
|
-
const canvas = document.getElementById('
|
|
12574
|
+
const canvas = document.getElementById('nerd-stats-speed-test-canvas');
|
|
12571
12575
|
if (!canvas) {
|
|
12572
12576
|
return;
|
|
12573
12577
|
}
|
|
@@ -12690,7 +12694,7 @@ function rankConnectionSpeed(dlSpeed) {
|
|
|
12690
12694
|
return 0;
|
|
12691
12695
|
}
|
|
12692
12696
|
|
|
12693
|
-
const pluginHtml$4 = "<% general = metrics.general %>\n<% counters = metrics.counters %>\n<% timers = metrics.chrono %>\n<% extra = metrics.extra %>\n<% custom = metrics.custom %>\n\n<div class=\"stats-box\" id=\"nerd-stats-box\">\n <div class=\"stats-box-top\">\n <a class=\"close-button gplayer-lite-btn\" id=\"nerd-stats-close\">\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\n <g clip-path=\"url(#clip0_184_1489)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M7.41376 6.00013L13.7068 -0.292872C14.0978 -0.683872 14.0978 -1.31587 13.7068 -1.70687C13.3158 -2.09787 12.6838 -2.09787 12.2928 -1.70687L5.99976 4.58613L-0.293238 -1.70687C-0.684238 -2.09787 -1.31624 -2.09787 -1.70724 -1.70687C-2.09824 -1.31587 -2.09824 -0.683872 -1.70724 -0.292872L4.58576 6.00013L-1.70724 12.2931C-2.09824 12.6841 -2.09824 13.3161 -1.70724 13.7071C-1.51224 13.9021 -1.25624 14.0001 -1.00024 14.0001C-0.744238 14.0001 -0.488238 13.9021 -0.293238 13.7071L5.99976 7.41413L12.2928 13.7071C12.4878 13.9021 12.7438 14.0001 12.9998 14.0001C13.2558 14.0001 13.5118 13.9021 13.7068 13.7071C14.0978 13.3161 14.0978 12.6841 13.7068 12.2931L7.41376 6.00013Z\"\n fill=\"white\"/>\n </g>\n <defs>\n <clipPath id=\"clip0_184_1489\">\n <rect width=\"12\" height=\"12\" fill=\"white\"/>\n </clipPath>\n </defs>\n </svg>\n </a>\n </div>\n <div class=\"stats-box-main\">\n <ul>\n <li class=\"title\"><span><%= i18n.t('stats.general') %></span></li>\n <li>\n <%= i18n.t('stats.display_resolution') %>\n <div><span><span id=\"nerd-stats-resolution-width\"><%= general.resolution.width %></span>×<span id=\"nerd-stats-resolution-height\"><%= general.resolution.height %></span></span></div>\n </li>\n <li>\n <%= i18n.t('stats.volume') %>\n <div id=\"nerd-stats-volume\"><span><%= general.volume %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.connection_speed') %>\n <div><span id=\"dlText\"><%= custom.connectionSpeed %></span> <%= i18n.t('mbps') %></div>\n </li>\n <li class=\"canvas-wrapper\">\n <canvas id=\"speedTestCanvas\" width=\"190\" height=\"20\"></canvas>\n </li>\n <li>\n <%= i18n.t('stats.ping') %>\n <div><span id=\"pingText\"><%= custom.ping %></span> <%= i18n.t('ms') %></div>\n </li>\n <li>\n <%= i18n.t('stats.jitter') %>\n <div><span id=\"jitterText\"><%= custom.jitter %></span> <%= i18n.t('ms') %></div>\n </li>\n </ul>\n\n <ul>\n <li class=\"title\"><span><%= i18n.t('stats.counters') %></span></li>\n <li>\n <%= i18n.t('stats.plays') %>\n <div><span id=\"nerd-stats-plays\"><%= counters.play %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.pauses') %>\n <div><span id=\"nerd-stats-pauses\"><%= counters.pause %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.errors') %>\n <div><span id=\"nerd-stats-errors\"><%= counters.error %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.bufferings') %>\n <div><span id=\"nerd-stats-bufferings\"><%= counters.buffering %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.decoded_frames') %>\n <div><span id=\"nerd-stats-decoded-frames\"><%= counters.decodedFrames %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.dropped_frames') %>\n <div><span id=\"nerd-stats-dropped-frames\"><%= counters.droppedFrames %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.fps') %>\n <div><span id=\"nerd-stats-fps\"><%= counters.fps %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.bitrate_changes') %>\n <div><span id=\"nerd-stats-bitrate-changes\"><%= counters.changeLevel %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.seeks') %>\n <div><span id=\"nerd-stats-seeks\"><%= counters.seek %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.fullscreen') %>\n <div><span id=\"nerd-stats-fullscreen\"><%= counters.fullscreen %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.dvr_seeks') %>\n <div><span id=\"nerd-stats-dvr-usage\"><%= counters.dvrUsage %></span></div>\n </li>\n </ul>\n\n <ul>\n <li class=\"title\"><span><%= i18n.t('stats.duration') %></span></li>\n <li>\n <%= i18n.t('stats.startup') %>\n <div><span id=\"nerd-stats-startup-time\"><%= timers.startup %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.watching') %>\n <div><span id=\"nerd-stats-watch-time\"><%= timers.watch %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.paused') %>\n <div><span id=\"nerd-stats-pause-time\"><%= timers.pause %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.buffering') %>\n <div><span id=\"nerd-stats-buffering-time\"><%= timers.buffering %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.session') %>\n <div><span id=\"nerd-stats-session-time\"><%= timers.session %></span></div>\n </li>\n </ul>\n\n <ul>\n <li class=\"title\"><span><%= i18n.t('stats.extra') %></span></li>\n <li>\n <%= i18n.t('stats.playback') %>\n <div><span id=\"nerd-stats-playback-name\"><%= extra.playbackName %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.playback_type') %>\n <div><span id=\"nerd-stats-playback-type\"><%= extra.playbackType %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.buffer_size') %>\n <div><span id=\"nerd-stats-buffer-size\"><%= extra.buffersize %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.video_duration') %>\n <div><span id=\"nerd-stats-video-duration\"><%= extra.duration %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.current_time') %>\n <div><span id=\"nerd-stats-current-time\"><%= extra.currentTime %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.bitrate_weighted_mean') %>\n <div><span id=\"nerd-stats-bitrate-weighted-mean\"><%= extra.bitrateWeightedMean %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.bitrate_most_used') %>\n <div><span id=\"nerd-stats-bitrate-most-used\"><%= extra.bitrateMostUsed %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.watched_percentage') %>\n <div><span id=\"nerd-stats-watched-percentage\"><%= extra.watchedPercentage %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.buffering_percentage') %>\n <div><span id=\"nerd-stats-buffering-percentage\"><%= extra.bufferingPercentage %></span></div>\n </li>\n </ul>\n </div>\n <div class=\"speedtest-summary\">\n <div class=\"speedtest-summary-header\"><%= i18n.t('stats.your_internet_quality_summary') %>:</div>\n <div class=\"speedtest-summary-block\">\n <div class=\"speedtest-summary-subblock\">\n <div class=\"speedtest-summary-subblock-content\">\n <div class=\"speedtest-quality\">\n <div class=\"speedtest-quality-header\"><%= i18n.t('vod') %>: \n <span id=\"nerd-stats-quality-vod-text\"><%= custom.vodQuality %></span></div>\n <div class=\"speedtest-quality-content\" data-streaming-type=\"vod\" id=\"nerd-stats-quality-vod\">\n <div class=\"speedtest-quality-content-item\"></div>\n <div class=\"speedtest-quality-content-item\"></div>\n <div class=\"speedtest-quality-content-item\"></div>\n <div class=\"speedtest-quality-content-item\"></div>\n <div class=\"speedtest-quality-content-item\"></div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"speedtest-summary-subblock\">\n <div class=\"speedtest-summary-subblock-content\">\n <div class=\"speedtest-quality\">\n <div class=\"speedtest-quality-header\"><%= i18n.t('live') %>: \n <span id=\"nerd-stats-quality-live-text\"><%= custom.liveQuality %></span></div>\n <div class=\"speedtest-quality-content\" data-streaming-type=\"live\" id=\"nerd-stats-quality-live\">\n <div class=\"speedtest-quality-content-item\"></div>\n <div class=\"speedtest-quality-content-item\"></div>\n <div class=\"speedtest-quality-content-item\"></div>\n <div class=\"speedtest-quality-content-item\"></div>\n <div class=\"speedtest-quality-content-item\"></div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"speedtest-footer\">\n <!-- <a class=\"speedtest-footer-about-link\" href=\"\" target=\"_blank\">I am not a nerd, what's this all about?</a>-->\n <button class=\"gplayer-lite-btn speedtest-btn speedtest-footer-refresh\" type=\"button\" id=\"nerd-stats-refresh\">\n <svg width=\"12\" height=\"10\" viewBox=\"0 0 12 10\" fill=\"none\">\n <path\n d=\"M6.03968 0.124998C3.64268 0.124998 1.67268 1.9565 1.48068 4.2915H1.00018C0.925833 4.29146 0.853156 4.31353 0.791378 4.35489C0.729601 4.39625 0.681511 4.45503 0.653218 4.52378C0.624925 4.59253 0.617705 4.66814 0.632476 4.74101C0.647248 4.81387 0.683343 4.88069 0.736177 4.933L1.57618 5.766C1.64641 5.83561 1.74129 5.87467 1.84018 5.87467C1.93906 5.87467 2.03395 5.83561 2.10418 5.766L2.94418 4.933C2.99701 4.88069 3.03311 4.81387 3.04788 4.74101C3.06265 4.66814 3.05543 4.59253 3.02714 4.52378C2.99884 4.45503 2.95075 4.39625 2.88898 4.35489C2.8272 4.31353 2.75452 4.29146 2.68018 4.2915H2.23368C2.42368 2.376 4.05268 0.874998 6.03968 0.874998C6.6948 0.873639 7.33932 1.04039 7.91158 1.35931C8.48384 1.67822 8.9647 2.13863 9.30818 2.6965C9.33331 2.73978 9.36686 2.7776 9.40684 2.80771C9.44682 2.83783 9.49243 2.85963 9.54097 2.87184C9.58951 2.88405 9.64001 2.88643 9.68948 2.87881C9.73895 2.8712 9.7864 2.85377 9.82902 2.82753C9.87165 2.80129 9.90859 2.76679 9.93767 2.72605C9.96675 2.68531 9.98739 2.63916 9.99835 2.59032C10.0093 2.54148 10.0104 2.49095 10.0015 2.44168C9.99264 2.39242 9.974 2.34544 9.94668 2.3035C9.53615 1.63664 8.96146 1.08621 8.27752 0.704805C7.59359 0.323402 6.82277 0.123774 6.03968 0.124998ZM10.4207 4.2335C10.3505 4.16419 10.2558 4.12532 10.1572 4.12532C10.0585 4.12532 9.96386 4.16419 9.89368 4.2335L9.05018 5.0665C8.9972 5.11874 8.96096 5.18557 8.94608 5.25847C8.93119 5.33137 8.93833 5.40705 8.96658 5.47588C8.99483 5.54472 9.04292 5.60359 9.10473 5.64501C9.16654 5.68644 9.23927 5.70853 9.31368 5.7085H9.76318C9.57218 7.6235 7.93768 9.125 5.94118 9.125C5.28399 9.12683 4.63729 8.96035 4.06269 8.64141C3.48808 8.32247 3.00473 7.86169 2.65868 7.303C2.63281 7.26107 2.59893 7.22465 2.55899 7.19582C2.51904 7.16699 2.47381 7.14631 2.42587 7.13495C2.37793 7.1236 2.32823 7.1218 2.27959 7.12966C2.23096 7.13752 2.18435 7.15488 2.14243 7.18075C2.05776 7.233 1.99731 7.31674 1.97438 7.41355C1.95146 7.51037 1.96793 7.61233 2.02018 7.697C2.43345 8.36457 3.01076 8.91521 3.69713 9.29647C4.38349 9.67772 5.15604 9.87689 5.94118 9.875C8.34518 9.875 10.3237 8.045 10.5162 5.7085H11.0002C11.0746 5.70853 11.1473 5.68644 11.2091 5.64501C11.2709 5.60359 11.319 5.54472 11.3473 5.47588C11.3755 5.40705 11.3827 5.33137 11.3678 5.25847C11.3529 5.18557 11.3167 5.11874 11.2637 5.0665L10.4207 4.2335Z\"\n fill=\"white\"/>\n </svg>\n <%= i18n.t('stats.refresh') %>\n </button>\n </div>\n</div>\n";
|
|
12697
|
+
const pluginHtml$4 = "<% general = metrics.general %>\n<% counters = metrics.counters %>\n<% timers = metrics.chrono %>\n<% extra = metrics.extra %>\n<% custom = metrics.custom %>\n\n<div class=\"stats-box\" id=\"nerd-stats-box\">\n <div class=\"stats-box-top\">\n <a class=\"close-button gplayer-lite-btn\" id=\"nerd-stats-close\">\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\n <g clip-path=\"url(#clip0_184_1489)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M7.41376 6.00013L13.7068 -0.292872C14.0978 -0.683872 14.0978 -1.31587 13.7068 -1.70687C13.3158 -2.09787 12.6838 -2.09787 12.2928 -1.70687L5.99976 4.58613L-0.293238 -1.70687C-0.684238 -2.09787 -1.31624 -2.09787 -1.70724 -1.70687C-2.09824 -1.31587 -2.09824 -0.683872 -1.70724 -0.292872L4.58576 6.00013L-1.70724 12.2931C-2.09824 12.6841 -2.09824 13.3161 -1.70724 13.7071C-1.51224 13.9021 -1.25624 14.0001 -1.00024 14.0001C-0.744238 14.0001 -0.488238 13.9021 -0.293238 13.7071L5.99976 7.41413L12.2928 13.7071C12.4878 13.9021 12.7438 14.0001 12.9998 14.0001C13.2558 14.0001 13.5118 13.9021 13.7068 13.7071C14.0978 13.3161 14.0978 12.6841 13.7068 12.2931L7.41376 6.00013Z\"\n fill=\"white\"/>\n </g>\n <defs>\n <clipPath id=\"clip0_184_1489\">\n <rect width=\"12\" height=\"12\" fill=\"white\"/>\n </clipPath>\n </defs>\n </svg>\n </a>\n </div>\n <div class=\"stats-box-main\">\n <ul>\n <li class=\"title\"><span><%= i18n.t('stats.general') %></span></li>\n <li>\n <%= i18n.t('stats.display_resolution') %>\n <div><span><span id=\"nerd-stats-resolution-width\"><%= general.resolution.width %></span>×<span id=\"nerd-stats-resolution-height\"><%= general.resolution.height %></span></span></div>\n </li>\n <li>\n <%= i18n.t('stats.volume') %>\n <div id=\"nerd-stats-volume\"><span><%= general.volume %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.connection_speed') %>\n <div><span id=\"nerd-stats-dl-text\"><%= custom.connectionSpeed %></span> <%= i18n.t('mbps') %></div>\n </li>\n <li class=\"canvas-wrapper\">\n <canvas id=\"nerd-stats-speed-test-canvas\" width=\"190\" height=\"20\"></canvas>\n </li>\n <li>\n <%= i18n.t('stats.ping') %>\n <div><span id=\"nerd-stats-ping-text\"><%= custom.ping %></span> <%= i18n.t('ms') %></div>\n </li>\n <li>\n <%= i18n.t('stats.jitter') %>\n <div><span id=\"nerd-stats-jitter-text\"><%= custom.jitter %></span> <%= i18n.t('ms') %></div>\n </li>\n </ul>\n\n <ul>\n <li class=\"title\"><span><%= i18n.t('stats.duration') %></span></li>\n <li>\n <%= i18n.t('stats.startup') %>\n <div><span id=\"nerd-stats-startup-time\"><%= timers.startup %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.watching') %>\n <div><span id=\"nerd-stats-watch-time\"><%= timers.watch %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.paused') %>\n <div><span id=\"nerd-stats-pause-time\"><%= timers.pause %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.buffering') %>\n <div><span id=\"nerd-stats-buffering-time\"><%= timers.buffering %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.session') %>\n <div><span id=\"nerd-stats-session-time\"><%= timers.session %></span></div>\n </li>\n </ul>\n\n <ul>\n <li class=\"title\"><span><%= i18n.t('stats.counters') %></span></li>\n <li>\n <%= i18n.t('stats.plays') %>\n <div><span id=\"nerd-stats-plays\"><%= counters.play %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.pauses') %>\n <div><span id=\"nerd-stats-pauses\"><%= counters.pause %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.errors') %>\n <div><span id=\"nerd-stats-errors\"><%= counters.error %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.bufferings') %>\n <div><span id=\"nerd-stats-bufferings\"><%= counters.buffering %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.decoded_frames') %>\n <div><span id=\"nerd-stats-decoded-frames\"><%= counters.decodedFrames %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.dropped_frames') %>\n <div><span id=\"nerd-stats-dropped-frames\"><%= counters.droppedFrames %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.fps') %>\n <div><span id=\"nerd-stats-fps\"><%= counters.fps %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.bitrate_changes') %>\n <div><span id=\"nerd-stats-bitrate-changes\"><%= counters.changeLevel %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.seeks') %>\n <div><span id=\"nerd-stats-seeks\"><%= counters.seek %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.fullscreen') %>\n <div><span id=\"nerd-stats-fullscreen\"><%= counters.fullscreen %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.dvr_seeks') %>\n <div><span id=\"nerd-stats-dvr-usage\"><%= counters.dvrUsage %></span></div>\n </li>\n </ul>\n\n <ul>\n <li class=\"title\"><span><%= i18n.t('stats.extra') %></span></li>\n <li>\n <%= i18n.t('stats.playback') %>\n <div><span id=\"nerd-stats-playback-name\"><%= extra.playbackName %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.playback_type') %>\n <div><span id=\"nerd-stats-playback-type\"><%= extra.playbackType %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.buffer_size') %>\n <div><span id=\"nerd-stats-buffer-size\"><%= extra.buffersize %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.video_duration') %>\n <div><span id=\"nerd-stats-video-duration\"><%= extra.duration %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.current_time') %>\n <div><span id=\"nerd-stats-current-time\"><%= extra.currentTime %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.bitrate_weighted_mean') %>\n <div><span id=\"nerd-stats-bitrate-weighted-mean\"><%= extra.bitrateWeightedMean %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.bitrate_most_used') %>\n <div><span id=\"nerd-stats-bitrate-most-used\"><%= extra.bitrateMostUsed %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.watched_percentage') %>\n <div><span id=\"nerd-stats-watched-percentage\"><%= extra.watchedPercentage %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.buffering_percentage') %>\n <div><span id=\"nerd-stats-buffering-percentage\"><%= extra.bufferingPercentage %></span></div>\n </li>\n </ul>\n </div>\n <div class=\"speedtest-summary\">\n <div class=\"speedtest-summary-header\"><%= i18n.t('stats.your_internet_quality_summary') %>:</div>\n <div class=\"speedtest-summary-block\">\n <div class=\"speedtest-summary-subblock\">\n <div class=\"speedtest-summary-subblock-content\">\n <div class=\"speedtest-quality\">\n <div class=\"speedtest-quality-header\"><%= i18n.t('vod') %>: \n <span id=\"nerd-stats-quality-vod-text\"><%= custom.vodQuality %></span></div>\n <div class=\"speedtest-quality-content\" data-streaming-type=\"vod\" id=\"nerd-stats-quality-vod\">\n <div class=\"speedtest-quality-content-item\"></div>\n <div class=\"speedtest-quality-content-item\"></div>\n <div class=\"speedtest-quality-content-item\"></div>\n <div class=\"speedtest-quality-content-item\"></div>\n <div class=\"speedtest-quality-content-item\"></div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"speedtest-summary-subblock\">\n <div class=\"speedtest-summary-subblock-content\">\n <div class=\"speedtest-quality\">\n <div class=\"speedtest-quality-header\"><%= i18n.t('live') %>: \n <span id=\"nerd-stats-quality-live-text\"><%= custom.liveQuality %></span></div>\n <div class=\"speedtest-quality-content\" data-streaming-type=\"live\" id=\"nerd-stats-quality-live\">\n <div class=\"speedtest-quality-content-item\"></div>\n <div class=\"speedtest-quality-content-item\"></div>\n <div class=\"speedtest-quality-content-item\"></div>\n <div class=\"speedtest-quality-content-item\"></div>\n <div class=\"speedtest-quality-content-item\"></div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"speedtest-footer\">\n <!-- <a class=\"speedtest-footer-about-link\" href=\"\" target=\"_blank\">I am not a nerd, what's this all about?</a>-->\n <button class=\"gplayer-lite-btn speedtest-btn speedtest-footer-refresh\" type=\"button\" id=\"nerd-stats-refresh\">\n <svg width=\"12\" height=\"10\" viewBox=\"0 0 12 10\" fill=\"none\">\n <path\n d=\"M6.03968 0.124998C3.64268 0.124998 1.67268 1.9565 1.48068 4.2915H1.00018C0.925833 4.29146 0.853156 4.31353 0.791378 4.35489C0.729601 4.39625 0.681511 4.45503 0.653218 4.52378C0.624925 4.59253 0.617705 4.66814 0.632476 4.74101C0.647248 4.81387 0.683343 4.88069 0.736177 4.933L1.57618 5.766C1.64641 5.83561 1.74129 5.87467 1.84018 5.87467C1.93906 5.87467 2.03395 5.83561 2.10418 5.766L2.94418 4.933C2.99701 4.88069 3.03311 4.81387 3.04788 4.74101C3.06265 4.66814 3.05543 4.59253 3.02714 4.52378C2.99884 4.45503 2.95075 4.39625 2.88898 4.35489C2.8272 4.31353 2.75452 4.29146 2.68018 4.2915H2.23368C2.42368 2.376 4.05268 0.874998 6.03968 0.874998C6.6948 0.873639 7.33932 1.04039 7.91158 1.35931C8.48384 1.67822 8.9647 2.13863 9.30818 2.6965C9.33331 2.73978 9.36686 2.7776 9.40684 2.80771C9.44682 2.83783 9.49243 2.85963 9.54097 2.87184C9.58951 2.88405 9.64001 2.88643 9.68948 2.87881C9.73895 2.8712 9.7864 2.85377 9.82902 2.82753C9.87165 2.80129 9.90859 2.76679 9.93767 2.72605C9.96675 2.68531 9.98739 2.63916 9.99835 2.59032C10.0093 2.54148 10.0104 2.49095 10.0015 2.44168C9.99264 2.39242 9.974 2.34544 9.94668 2.3035C9.53615 1.63664 8.96146 1.08621 8.27752 0.704805C7.59359 0.323402 6.82277 0.123774 6.03968 0.124998ZM10.4207 4.2335C10.3505 4.16419 10.2558 4.12532 10.1572 4.12532C10.0585 4.12532 9.96386 4.16419 9.89368 4.2335L9.05018 5.0665C8.9972 5.11874 8.96096 5.18557 8.94608 5.25847C8.93119 5.33137 8.93833 5.40705 8.96658 5.47588C8.99483 5.54472 9.04292 5.60359 9.10473 5.64501C9.16654 5.68644 9.23927 5.70853 9.31368 5.7085H9.76318C9.57218 7.6235 7.93768 9.125 5.94118 9.125C5.28399 9.12683 4.63729 8.96035 4.06269 8.64141C3.48808 8.32247 3.00473 7.86169 2.65868 7.303C2.63281 7.26107 2.59893 7.22465 2.55899 7.19582C2.51904 7.16699 2.47381 7.14631 2.42587 7.13495C2.37793 7.1236 2.32823 7.1218 2.27959 7.12966C2.23096 7.13752 2.18435 7.15488 2.14243 7.18075C2.05776 7.233 1.99731 7.31674 1.97438 7.41355C1.95146 7.51037 1.96793 7.61233 2.02018 7.697C2.43345 8.36457 3.01076 8.91521 3.69713 9.29647C4.38349 9.67772 5.15604 9.87689 5.94118 9.875C8.34518 9.875 10.3237 8.045 10.5162 5.7085H11.0002C11.0746 5.70853 11.1473 5.68644 11.2091 5.64501C11.2709 5.60359 11.319 5.54472 11.3473 5.47588C11.3755 5.40705 11.3827 5.33137 11.3678 5.25847C11.3529 5.18557 11.3167 5.11874 11.2637 5.0665L10.4207 4.2335Z\"\n fill=\"white\"/>\n </svg>\n <%= i18n.t('stats.refresh') %>\n </button>\n </div>\n</div>\n";
|
|
12694
12698
|
|
|
12695
12699
|
const buttonHtml$3 = "<button class='nerd-button gplayer-lite-btn gcore-skin-text-color gear-option' id=\"nerd-stats-button\">\n <span class=\"gear-option_icon\"><%= icon %></span>\n <span class=\"gear-option_label\"><%= i18n.t('statistics') %></span>\n</button>\n";
|
|
12696
12700
|
|
|
@@ -12704,38 +12708,40 @@ const qualityClasses = [
|
|
|
12704
12708
|
'speedtest-quality-value-5',
|
|
12705
12709
|
];
|
|
12706
12710
|
const getDownloadQuality = (speedValue) => {
|
|
12711
|
+
if (!speedValue) {
|
|
12712
|
+
return 0;
|
|
12713
|
+
}
|
|
12707
12714
|
if (speedValue < 3) {
|
|
12708
12715
|
return 1;
|
|
12709
12716
|
}
|
|
12710
|
-
|
|
12717
|
+
if (speedValue < 7) {
|
|
12711
12718
|
return 2;
|
|
12712
12719
|
}
|
|
12713
|
-
|
|
12720
|
+
if (speedValue < 13) {
|
|
12714
12721
|
return 3;
|
|
12715
12722
|
}
|
|
12716
|
-
|
|
12723
|
+
if (speedValue < 25) {
|
|
12717
12724
|
return 4;
|
|
12718
12725
|
}
|
|
12719
|
-
|
|
12720
|
-
return 5;
|
|
12721
|
-
}
|
|
12726
|
+
return 5;
|
|
12722
12727
|
};
|
|
12723
12728
|
const getPingQuality = (pingValue) => {
|
|
12729
|
+
if (!pingValue) {
|
|
12730
|
+
return 0;
|
|
12731
|
+
}
|
|
12724
12732
|
if (pingValue < 20) {
|
|
12725
12733
|
return 5;
|
|
12726
12734
|
}
|
|
12727
|
-
|
|
12735
|
+
if (pingValue < 50) {
|
|
12728
12736
|
return 4;
|
|
12729
12737
|
}
|
|
12730
|
-
|
|
12738
|
+
if (pingValue < 100) {
|
|
12731
12739
|
return 3;
|
|
12732
12740
|
}
|
|
12733
|
-
|
|
12741
|
+
if (pingValue < 150) {
|
|
12734
12742
|
return 2;
|
|
12735
12743
|
}
|
|
12736
|
-
|
|
12737
|
-
return 1;
|
|
12738
|
-
}
|
|
12744
|
+
return 1;
|
|
12739
12745
|
};
|
|
12740
12746
|
const generateQualityHtml = (quality) => {
|
|
12741
12747
|
const html = [];
|
|
@@ -12752,9 +12758,9 @@ const generateQualityHtml = (quality) => {
|
|
|
12752
12758
|
};
|
|
12753
12759
|
const drawSummary = (customMetrics, vodContainer, liveContainer) => {
|
|
12754
12760
|
const { connectionSpeed, ping } = customMetrics;
|
|
12755
|
-
if (!connectionSpeed || !ping) {
|
|
12756
|
-
|
|
12757
|
-
}
|
|
12761
|
+
// if (!connectionSpeed || !ping) {
|
|
12762
|
+
// return
|
|
12763
|
+
// }
|
|
12758
12764
|
const downloadQuality = getDownloadQuality(connectionSpeed);
|
|
12759
12765
|
const pingQuality = getPingQuality(ping);
|
|
12760
12766
|
const liveQuality = Math.min(downloadQuality, pingQuality);
|
|
@@ -12973,8 +12979,11 @@ class NerdStats extends UICorePlugin {
|
|
|
12973
12979
|
}
|
|
12974
12980
|
updateMetrics(metrics) {
|
|
12975
12981
|
trace(`${T$c} updateMetrics`, { custom: this.speedtestMetrics });
|
|
12976
|
-
Object.assign(this.metrics, metrics);
|
|
12977
|
-
this.
|
|
12982
|
+
Object.assign(this.metrics, metrics); // TODO no Object.assign
|
|
12983
|
+
this.metrics.custom = {
|
|
12984
|
+
...this.speedtestMetrics,
|
|
12985
|
+
};
|
|
12986
|
+
this.updateCustomMetrics();
|
|
12978
12987
|
this.$el
|
|
12979
12988
|
.find('#nerd-stats-current-time')
|
|
12980
12989
|
.text(Formatter.formatTime(this.metrics.extra.currentTime));
|
|
@@ -13036,11 +13045,16 @@ class NerdStats extends UICorePlugin {
|
|
|
13036
13045
|
.text(Formatter.formatFps(this.metrics.counters.fps));
|
|
13037
13046
|
this.setStatsBoxSize();
|
|
13038
13047
|
drawSpeedTestResults();
|
|
13039
|
-
|
|
13048
|
+
this.updateEstimatedQuality();
|
|
13040
13049
|
if (!this.open) {
|
|
13041
13050
|
this.hide();
|
|
13042
13051
|
}
|
|
13043
13052
|
}
|
|
13053
|
+
updateCustomMetrics() {
|
|
13054
|
+
this.$el.find('#nerd-stats-dl-text').text(this.metrics.custom.connectionSpeed.toFixed(2));
|
|
13055
|
+
this.$el.find('#nerd-stats-ping-text').text(this.metrics.custom.ping.toFixed(2));
|
|
13056
|
+
this.$el.find('#nerd-stats-jitter-text').text(this.metrics.custom.jitter.toFixed(2));
|
|
13057
|
+
}
|
|
13044
13058
|
updateEstimatedQuality() {
|
|
13045
13059
|
this.estimateQuality();
|
|
13046
13060
|
this.$el
|
|
@@ -13049,6 +13063,7 @@ class NerdStats extends UICorePlugin {
|
|
|
13049
13063
|
this.$el
|
|
13050
13064
|
.find('#nerd-stats-quality-live-text')
|
|
13051
13065
|
.html(this.metrics.custom.liveQuality);
|
|
13066
|
+
drawSummary(this.speedtestMetrics, this.$el.find('#nerd-stats-quality-vod'), this.$el.find('#nerd-stats-quality-live'));
|
|
13052
13067
|
}
|
|
13053
13068
|
setStatsBoxSize() {
|
|
13054
13069
|
if (this.playerWidth >= this.statsBoxWidthThreshold) {
|
|
@@ -13092,6 +13107,7 @@ class NerdStats extends UICorePlugin {
|
|
|
13092
13107
|
this.speedtestMetrics.ping = 0;
|
|
13093
13108
|
this.speedtestMetrics.jitter = 0;
|
|
13094
13109
|
if (clapprStats) {
|
|
13110
|
+
clapprStats.clearMetrics();
|
|
13095
13111
|
this.updateMetrics(clapprStats.exportMetrics());
|
|
13096
13112
|
}
|
|
13097
13113
|
}
|
|
@@ -13171,14 +13187,13 @@ class ClickToPause extends ContainerPlugin {
|
|
|
13171
13187
|
const isDvrEnabled = this.container.isDvrEnabled();
|
|
13172
13188
|
if (isLivePlayback && !isDvrEnabled) {
|
|
13173
13189
|
this.togglePlay(true);
|
|
13190
|
+
return;
|
|
13174
13191
|
}
|
|
13175
|
-
|
|
13176
|
-
|
|
13177
|
-
this.timer =
|
|
13178
|
-
|
|
13179
|
-
|
|
13180
|
-
}, 300);
|
|
13181
|
-
}
|
|
13192
|
+
this.clearTimer();
|
|
13193
|
+
this.timer = setTimeout(() => {
|
|
13194
|
+
this.timer = null;
|
|
13195
|
+
this.togglePlay(false);
|
|
13196
|
+
}, 300);
|
|
13182
13197
|
}
|
|
13183
13198
|
settingsUpdate() {
|
|
13184
13199
|
const isLivePlayback = this.container.getPlaybackType() === Playback.LIVE;
|
|
@@ -18775,11 +18790,14 @@ var VolumeFadeEvents;
|
|
|
18775
18790
|
VolumeFadeEvents["FADE"] = "core:volume:fade";
|
|
18776
18791
|
})(VolumeFadeEvents || (VolumeFadeEvents = {}));
|
|
18777
18792
|
const DEFAULT_DURATION = 600;
|
|
18793
|
+
const DEFAULT_VOLUME_LEVEL = 80;
|
|
18778
18794
|
/**
|
|
18779
|
-
* `PLUGIN` that
|
|
18795
|
+
* `PLUGIN` that mutes the sound and fades it in when the mouse is over the player.
|
|
18780
18796
|
* @beta
|
|
18781
18797
|
*
|
|
18782
18798
|
* @remarks
|
|
18799
|
+
* When the user moves the mouse over and away from the player, the sound is unmuted and unmuted with a fade effect.
|
|
18800
|
+
*
|
|
18783
18801
|
* Depends on {@link MediaControl} plugin.
|
|
18784
18802
|
* Configuration options - {@link VolumeFadeSettings}
|
|
18785
18803
|
*/
|
|
@@ -18821,10 +18839,10 @@ class VolumeFade extends UICorePlugin {
|
|
|
18821
18839
|
this.core.activeContainer?.volume &&
|
|
18822
18840
|
!isNaN(this.core.activeContainer.volume)
|
|
18823
18841
|
? this.core.activeContainer.volume
|
|
18824
|
-
:
|
|
18842
|
+
: DEFAULT_VOLUME_LEVEL;
|
|
18825
18843
|
}
|
|
18826
18844
|
this.duration = this.options.volumeFade?.duration || DEFAULT_DURATION;
|
|
18827
|
-
// TODO check if mute must be respected
|
|
18845
|
+
// TODO check if `mute` must be respected
|
|
18828
18846
|
this.core.activeContainer?.setVolume(this.activeVolume);
|
|
18829
18847
|
this.core.activePlayback.volume(0);
|
|
18830
18848
|
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
|
2
|
+
|
|
3
|
+
[Home](./index.md) > [@gcorevideo/player](./player.md) > [ExtendedEvents](./player.extendedevents.md)
|
|
4
|
+
|
|
5
|
+
## ExtendedEvents enum
|
|
6
|
+
|
|
7
|
+
**Signature:**
|
|
8
|
+
|
|
9
|
+
```typescript
|
|
10
|
+
export declare enum ExtendedEvents
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Enumeration Members
|
|
14
|
+
|
|
15
|
+
<table><thead><tr><th>
|
|
16
|
+
|
|
17
|
+
Member
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
</th><th>
|
|
21
|
+
|
|
22
|
+
Value
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
</th><th>
|
|
26
|
+
|
|
27
|
+
Description
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
</th></tr></thead>
|
|
31
|
+
<tbody><tr><td>
|
|
32
|
+
|
|
33
|
+
MEDIACONTROL\_VOLUME
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
</td><td>
|
|
37
|
+
|
|
38
|
+
`"mediacontrol:volume"`
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
</td><td>
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
</td></tr>
|
|
45
|
+
</tbody></table>
|
package/docs/api/player.md
CHANGED
|
@@ -358,7 +358,7 @@ Description
|
|
|
358
358
|
|
|
359
359
|
</td><td>
|
|
360
360
|
|
|
361
|
-
**_(BETA)_** `PLUGIN` that
|
|
361
|
+
**_(BETA)_** `PLUGIN` that mutes the sound and fades it in when the mouse is over the player.
|
|
362
362
|
|
|
363
363
|
|
|
364
364
|
</td></tr>
|
|
@@ -409,6 +409,15 @@ Description
|
|
|
409
409
|
**_(BETA)_**
|
|
410
410
|
|
|
411
411
|
|
|
412
|
+
</td></tr>
|
|
413
|
+
<tr><td>
|
|
414
|
+
|
|
415
|
+
[ExtendedEvents](./player.extendedevents.md)
|
|
416
|
+
|
|
417
|
+
|
|
418
|
+
</td><td>
|
|
419
|
+
|
|
420
|
+
|
|
412
421
|
</td></tr>
|
|
413
422
|
<tr><td>
|
|
414
423
|
|
|
@@ -1116,6 +1125,17 @@ Localization strings for the player UI.
|
|
|
1116
1125
|
Preferred streaming media delivery protocol
|
|
1117
1126
|
|
|
1118
1127
|
|
|
1128
|
+
</td></tr>
|
|
1129
|
+
<tr><td>
|
|
1130
|
+
|
|
1131
|
+
[VolumeFadeSettings](./player.volumefadesettings.md)
|
|
1132
|
+
|
|
1133
|
+
|
|
1134
|
+
</td><td>
|
|
1135
|
+
|
|
1136
|
+
**_(BETA)_**
|
|
1137
|
+
|
|
1138
|
+
|
|
1119
1139
|
</td></tr>
|
|
1120
1140
|
<tr><td>
|
|
1121
1141
|
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
|
2
|
+
|
|
3
|
+
[Home](./index.md) > [@gcorevideo/player](./player.md) > [VolumeFade](./player.volumefade.md) > [(constructor)](./player.volumefade._constructor_.md)
|
|
4
|
+
|
|
5
|
+
## VolumeFade.(constructor)
|
|
6
|
+
|
|
7
|
+
> This API is provided as a beta preview for developers and may change based on feedback that we receive. Do not use this API in a production environment.
|
|
8
|
+
>
|
|
9
|
+
|
|
10
|
+
Constructs a new instance of the `VolumeFade` class
|
|
11
|
+
|
|
12
|
+
**Signature:**
|
|
13
|
+
|
|
14
|
+
```typescript
|
|
15
|
+
constructor(core: Core);
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Parameters
|
|
19
|
+
|
|
20
|
+
<table><thead><tr><th>
|
|
21
|
+
|
|
22
|
+
Parameter
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
</th><th>
|
|
26
|
+
|
|
27
|
+
Type
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
</th><th>
|
|
31
|
+
|
|
32
|
+
Description
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
</th></tr></thead>
|
|
36
|
+
<tbody><tr><td>
|
|
37
|
+
|
|
38
|
+
core
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
</td><td>
|
|
42
|
+
|
|
43
|
+
Core
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
</td><td>
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
</td></tr>
|
|
50
|
+
</tbody></table>
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
> This API is provided as a beta preview for developers and may change based on feedback that we receive. Do not use this API in a production environment.
|
|
8
8
|
>
|
|
9
9
|
|
|
10
|
-
`PLUGIN` that
|
|
10
|
+
`PLUGIN` that mutes the sound and fades it in when the mouse is over the player.
|
|
11
11
|
|
|
12
12
|
**Signature:**
|
|
13
13
|
|
|
@@ -16,3 +16,42 @@ export declare class VolumeFade extends UICorePlugin
|
|
|
16
16
|
```
|
|
17
17
|
**Extends:** UICorePlugin
|
|
18
18
|
|
|
19
|
+
## Remarks
|
|
20
|
+
|
|
21
|
+
When the user moves the mouse over and away from the player, the sound is unmuted and unmuted with a fade effect.
|
|
22
|
+
|
|
23
|
+
Depends on [MediaControl](./player.mediacontrol.md) plugin. Configuration options - [VolumeFadeSettings](./player.volumefadesettings.md)
|
|
24
|
+
|
|
25
|
+
## Constructors
|
|
26
|
+
|
|
27
|
+
<table><thead><tr><th>
|
|
28
|
+
|
|
29
|
+
Constructor
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
</th><th>
|
|
33
|
+
|
|
34
|
+
Modifiers
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
</th><th>
|
|
38
|
+
|
|
39
|
+
Description
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
</th></tr></thead>
|
|
43
|
+
<tbody><tr><td>
|
|
44
|
+
|
|
45
|
+
[(constructor)(core)](./player.volumefade._constructor_.md)
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
</td><td>
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
</td><td>
|
|
52
|
+
|
|
53
|
+
**_(BETA)_** Constructs a new instance of the `VolumeFade` class
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
</td></tr>
|
|
57
|
+
</tbody></table>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
|
2
|
+
|
|
3
|
+
[Home](./index.md) > [@gcorevideo/player](./player.md) > [VolumeFadeSettings](./player.volumefadesettings.md)
|
|
4
|
+
|
|
5
|
+
## VolumeFadeSettings type
|
|
6
|
+
|
|
7
|
+
> This API is provided as a beta preview for developers and may change based on feedback that we receive. Do not use this API in a production environment.
|
|
8
|
+
>
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
**Signature:**
|
|
12
|
+
|
|
13
|
+
```typescript
|
|
14
|
+
export type VolumeFadeSettings = {
|
|
15
|
+
level?: number;
|
|
16
|
+
duration?: number;
|
|
17
|
+
};
|
|
18
|
+
```
|
|
@@ -1 +1 @@
|
|
|
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;
|
|
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,mBAAmB;IAM3B,OAAO,CAAC,sBAAsB;IAgB9B,OAAO,CAAC,eAAe;IAUvB;;OAEG;IACM,MAAM;IAcf,OAAO,CAAC,MAAM;IAiBd,OAAO,CAAC,qBAAqB;IAa7B,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,kBAAkB;CAU3B"}
|
|
@@ -225,8 +225,11 @@ export class NerdStats extends UICorePlugin {
|
|
|
225
225
|
}
|
|
226
226
|
updateMetrics(metrics) {
|
|
227
227
|
trace(`${T} updateMetrics`, { custom: this.speedtestMetrics });
|
|
228
|
-
Object.assign(this.metrics, metrics);
|
|
229
|
-
this.
|
|
228
|
+
Object.assign(this.metrics, metrics); // TODO no Object.assign
|
|
229
|
+
this.metrics.custom = {
|
|
230
|
+
...this.speedtestMetrics,
|
|
231
|
+
};
|
|
232
|
+
this.updateCustomMetrics();
|
|
230
233
|
this.$el
|
|
231
234
|
.find('#nerd-stats-current-time')
|
|
232
235
|
.text(Formatter.formatTime(this.metrics.extra.currentTime));
|
|
@@ -288,11 +291,16 @@ export class NerdStats extends UICorePlugin {
|
|
|
288
291
|
.text(Formatter.formatFps(this.metrics.counters.fps));
|
|
289
292
|
this.setStatsBoxSize();
|
|
290
293
|
drawSpeedTestResults();
|
|
291
|
-
|
|
294
|
+
this.updateEstimatedQuality();
|
|
292
295
|
if (!this.open) {
|
|
293
296
|
this.hide();
|
|
294
297
|
}
|
|
295
298
|
}
|
|
299
|
+
updateCustomMetrics() {
|
|
300
|
+
this.$el.find('#nerd-stats-dl-text').text(this.metrics.custom.connectionSpeed.toFixed(2));
|
|
301
|
+
this.$el.find('#nerd-stats-ping-text').text(this.metrics.custom.ping.toFixed(2));
|
|
302
|
+
this.$el.find('#nerd-stats-jitter-text').text(this.metrics.custom.jitter.toFixed(2));
|
|
303
|
+
}
|
|
296
304
|
updateEstimatedQuality() {
|
|
297
305
|
this.estimateQuality();
|
|
298
306
|
this.$el
|
|
@@ -301,6 +309,7 @@ export class NerdStats extends UICorePlugin {
|
|
|
301
309
|
this.$el
|
|
302
310
|
.find('#nerd-stats-quality-live-text')
|
|
303
311
|
.html(this.metrics.custom.liveQuality);
|
|
312
|
+
drawSummary(this.speedtestMetrics, this.$el.find('#nerd-stats-quality-vod'), this.$el.find('#nerd-stats-quality-live'));
|
|
304
313
|
}
|
|
305
314
|
setStatsBoxSize() {
|
|
306
315
|
if (this.playerWidth >= this.statsBoxWidthThreshold) {
|
|
@@ -345,6 +354,7 @@ export class NerdStats extends UICorePlugin {
|
|
|
345
354
|
this.speedtestMetrics.ping = 0;
|
|
346
355
|
this.speedtestMetrics.jitter = 0;
|
|
347
356
|
if (clapprStats) {
|
|
357
|
+
clapprStats.clearMetrics();
|
|
348
358
|
this.updateMetrics(clapprStats.exportMetrics());
|
|
349
359
|
}
|
|
350
360
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Speedtest.d.ts","sourceRoot":"","sources":["../../../../src/plugins/clappr-nerd-stats/speedtest/Speedtest.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,MAAM,GAAG;IACnB,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AAID,KAAK,UAAU,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAA;AAE5C,MAAM,MAAM,cAAc,GAAG;IAC3B,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACrC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAA;IACzB,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,cAAc,EAAE,MAAM,CAAA;IACtB,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,CAAC,GAAG,CAAC,CAAA;IACjB,UAAU,EAAE,CAAC,GAAG,CAAC,CAAA;IACjB,YAAY,EAAE,CAAC,GAAG,CAAC,CAAA;IACnB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;CACtB,CAAA;AAED,KAAK,aAAa,GAAG,CAAC,IAAI,EAAE,cAAc,KAAK,IAAI,CAAA;AAEnD,KAAK,cAAc,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;AAIrD,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAsB;IAEpC,OAAO,CAAC,SAAS,CAAsB;IAEvC,OAAO,CAAC,mBAAmB,CAAQ;IAEnC,OAAO,CAAC,eAAe,CAAsB;IAE7C,OAAO,CAAC,WAAW,CAAe;IAElC,OAAO,CAAC,SAAS,CAAU;IAE3B,OAAO,CAAC,MAAM,CAAI;IAElB,OAAO,CAAC,OAAO,CAAuB;IAEtC,OAAO,CAAC,SAAS,CAA8B;IAE/C,OAAO,CAAC,cAAc,CAAK;IAE3B,KAAK,EAAE,UAAU,GAAG,IAAI,CAAO;IAE/B,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAO;IAErC,QAAQ;IAIR,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO;IAY9C,sBAAsB,CAAC,MAAM,EAAE,MAAM;IAiCrC,YAAY,CAAC,MAAM,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"Speedtest.d.ts","sourceRoot":"","sources":["../../../../src/plugins/clappr-nerd-stats/speedtest/Speedtest.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,MAAM,GAAG;IACnB,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AAID,KAAK,UAAU,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAA;AAE5C,MAAM,MAAM,cAAc,GAAG;IAC3B,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACrC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAA;IACzB,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,cAAc,EAAE,MAAM,CAAA;IACtB,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,CAAC,GAAG,CAAC,CAAA;IACjB,UAAU,EAAE,CAAC,GAAG,CAAC,CAAA;IACjB,YAAY,EAAE,CAAC,GAAG,CAAC,CAAA;IACnB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;CACtB,CAAA;AAED,KAAK,aAAa,GAAG,CAAC,IAAI,EAAE,cAAc,KAAK,IAAI,CAAA;AAEnD,KAAK,cAAc,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;AAIrD,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAsB;IAEpC,OAAO,CAAC,SAAS,CAAsB;IAEvC,OAAO,CAAC,mBAAmB,CAAQ;IAEnC,OAAO,CAAC,eAAe,CAAsB;IAE7C,OAAO,CAAC,WAAW,CAAe;IAElC,OAAO,CAAC,SAAS,CAAU;IAE3B,OAAO,CAAC,MAAM,CAAI;IAElB,OAAO,CAAC,OAAO,CAAuB;IAEtC,OAAO,CAAC,SAAS,CAA8B;IAE/C,OAAO,CAAC,cAAc,CAAK;IAE3B,KAAK,EAAE,UAAU,GAAG,IAAI,CAAO;IAE/B,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAO;IAErC,QAAQ;IAIR,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO;IAY9C,sBAAsB,CAAC,MAAM,EAAE,MAAM;IAiCrC,YAAY,CAAC,MAAM,EAAE,MAAM;IAa3B,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE;IAM5B,iBAAiB;IAQjB,iBAAiB,CAAC,MAAM,EAAE,MAAM;IAShC,YAAY,CAAC,MAAM,EAAE,cAAc;IA0KnC,KAAK;IAsEL,KAAK;IASL,OAAO,CAAC,UAAU;CAUnB"}
|
|
@@ -30,7 +30,7 @@ const getColor = (speedValue) => {
|
|
|
30
30
|
}
|
|
31
31
|
};
|
|
32
32
|
export function drawSpeedTestResults() {
|
|
33
|
-
const canvas = document.getElementById('
|
|
33
|
+
const canvas = document.getElementById('nerd-stats-speed-test-canvas');
|
|
34
34
|
if (!canvas) {
|
|
35
35
|
return;
|
|
36
36
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/plugins/clappr-nerd-stats/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAUpD,eAAO,MAAM,kBAAkB,eAAgB,MAAM,KAAG,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/plugins/clappr-nerd-stats/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAUpD,eAAO,MAAM,kBAAkB,eAAgB,MAAM,KAAG,MAiBvD,CAAA;AAED,eAAO,MAAM,cAAc,cAAe,MAAM,KAAG,MAiBlD,CAAA;AAED,eAAO,MAAM,mBAAmB,YAAa,MAAM,KAAG,MAerD,CAAA;AAED,eAAO,MAAM,WAAW,kBACP,gBAAgB,gBACjB,WAAW,iBACV,WAAW,SAe3B,CAAA"}
|
|
@@ -6,38 +6,40 @@ const qualityClasses = [
|
|
|
6
6
|
'speedtest-quality-value-5',
|
|
7
7
|
];
|
|
8
8
|
export const getDownloadQuality = (speedValue) => {
|
|
9
|
+
if (!speedValue) {
|
|
10
|
+
return 0;
|
|
11
|
+
}
|
|
9
12
|
if (speedValue < 3) {
|
|
10
13
|
return 1;
|
|
11
14
|
}
|
|
12
|
-
|
|
15
|
+
if (speedValue < 7) {
|
|
13
16
|
return 2;
|
|
14
17
|
}
|
|
15
|
-
|
|
18
|
+
if (speedValue < 13) {
|
|
16
19
|
return 3;
|
|
17
20
|
}
|
|
18
|
-
|
|
21
|
+
if (speedValue < 25) {
|
|
19
22
|
return 4;
|
|
20
23
|
}
|
|
21
|
-
|
|
22
|
-
return 5;
|
|
23
|
-
}
|
|
24
|
+
return 5;
|
|
24
25
|
};
|
|
25
26
|
export const getPingQuality = (pingValue) => {
|
|
27
|
+
if (!pingValue) {
|
|
28
|
+
return 0;
|
|
29
|
+
}
|
|
26
30
|
if (pingValue < 20) {
|
|
27
31
|
return 5;
|
|
28
32
|
}
|
|
29
|
-
|
|
33
|
+
if (pingValue < 50) {
|
|
30
34
|
return 4;
|
|
31
35
|
}
|
|
32
|
-
|
|
36
|
+
if (pingValue < 100) {
|
|
33
37
|
return 3;
|
|
34
38
|
}
|
|
35
|
-
|
|
39
|
+
if (pingValue < 150) {
|
|
36
40
|
return 2;
|
|
37
41
|
}
|
|
38
|
-
|
|
39
|
-
return 1;
|
|
40
|
-
}
|
|
42
|
+
return 1;
|
|
41
43
|
};
|
|
42
44
|
export const generateQualityHtml = (quality) => {
|
|
43
45
|
const html = [];
|
|
@@ -54,9 +56,9 @@ export const generateQualityHtml = (quality) => {
|
|
|
54
56
|
};
|
|
55
57
|
export const drawSummary = (customMetrics, vodContainer, liveContainer) => {
|
|
56
58
|
const { connectionSpeed, ping } = customMetrics;
|
|
57
|
-
if (!connectionSpeed || !ping) {
|
|
58
|
-
|
|
59
|
-
}
|
|
59
|
+
// if (!connectionSpeed || !ping) {
|
|
60
|
+
// return
|
|
61
|
+
// }
|
|
60
62
|
const downloadQuality = getDownloadQuality(connectionSpeed);
|
|
61
63
|
const pingQuality = getPingQuality(ping);
|
|
62
64
|
const liveQuality = Math.min(downloadQuality, pingQuality);
|