@gcorevideo/player 2.24.10 → 2.24.13
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/README.md +1 -0
- package/assets/dvr-controls/dvr_controls.scss +43 -80
- package/assets/dvr-controls/index.ejs +8 -2
- package/assets/media-control/width370.scss +1 -1
- package/dist/core.js +34 -23
- package/dist/index.css +394 -420
- package/dist/index.embed.js +107 -71
- package/dist/index.js +172 -134
- package/dist/player.d.ts +3264 -0
- package/lib/playback/dash-playback/DashPlayback.d.ts +2 -0
- package/lib/playback/dash-playback/DashPlayback.d.ts.map +1 -1
- package/lib/playback/dash-playback/DashPlayback.js +17 -11
- package/lib/playback/hls-playback/HlsPlayback.d.ts +6 -2
- package/lib/playback/hls-playback/HlsPlayback.d.ts.map +1 -1
- package/lib/playback/hls-playback/HlsPlayback.js +16 -11
- package/lib/plugins/audio-selector/AudioTracks.js +1 -1
- package/lib/plugins/bottom-gear/BottomGear.js +1 -1
- package/lib/plugins/clips/Clips.js +1 -1
- package/lib/plugins/dvr-controls/DvrControls.d.ts +3 -3
- package/lib/plugins/dvr-controls/DvrControls.d.ts.map +1 -1
- package/lib/plugins/dvr-controls/DvrControls.js +14 -12
- package/lib/plugins/media-control/MediaControl.d.ts +14 -5
- package/lib/plugins/media-control/MediaControl.d.ts.map +1 -1
- package/lib/plugins/media-control/MediaControl.js +55 -29
- package/lib/plugins/picture-in-picture/PictureInPicture.js +1 -1
- package/lib/plugins/subtitles/ClosedCaptions.js +1 -1
- package/lib/testUtils.d.ts.map +1 -1
- package/lib/testUtils.js +2 -0
- package/package.json +1 -1
- package/src/playback/dash-playback/DashPlayback.ts +20 -13
- package/src/playback/hls-playback/HlsPlayback.ts +40 -26
- package/src/plugins/audio-selector/AudioTracks.ts +1 -1
- package/src/plugins/audio-selector/__tests__/AudioTracks.test.ts +2 -2
- package/src/plugins/bottom-gear/BottomGear.ts +1 -1
- package/src/plugins/bottom-gear/__tests__/BottomGear.test.ts +2 -2
- package/src/plugins/clips/Clips.ts +1 -1
- package/src/plugins/clips/__tests__/Clips.test.ts +1 -1
- package/src/plugins/dvr-controls/DvrControls.ts +14 -14
- package/src/plugins/dvr-controls/__tests__/DvrControls.test.ts +20 -17
- package/src/plugins/dvr-controls/__tests__/__snapshots__/DvrControls.test.ts.snap +4 -2
- package/src/plugins/media-control/MediaControl.ts +69 -35
- package/src/plugins/media-control/__tests__/MediaControl.test.ts +128 -112
- package/src/plugins/media-control/__tests__/__snapshots__/MediaControl.test.ts.snap +227 -24
- package/src/plugins/picture-in-picture/PictureInPicture.ts +1 -1
- package/src/plugins/subtitles/ClosedCaptions.ts +1 -1
- package/src/plugins/subtitles/__tests__/ClosedCaptions.test.ts +1 -1
- package/src/testUtils.ts +2 -0
- package/tsconfig.tsbuildinfo +1 -1
package/README.md
CHANGED
|
@@ -1,104 +1,67 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
$bottom-panel: 40px;
|
|
1
|
+
.dvr-controls {
|
|
2
|
+
--disabled-opacity: 0.3;
|
|
3
|
+
--circle-radius: 5px;
|
|
5
4
|
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
display: flex;
|
|
6
|
+
align-items: center;
|
|
8
7
|
color: var(--player-dvr-color);
|
|
9
|
-
line-height: 32px;
|
|
10
8
|
font-size: 10px;
|
|
11
|
-
font-weight:
|
|
12
|
-
|
|
9
|
+
font-weight: 500;
|
|
10
|
+
height: var(--bottom-panel);
|
|
11
|
+
line-height: var(--bottom-panel);
|
|
12
|
+
margin-left: 0;
|
|
13
13
|
|
|
14
|
-
.live-info
|
|
15
|
-
|
|
14
|
+
.live-info,
|
|
15
|
+
.live-button {
|
|
16
|
+
font-size: 14px;
|
|
17
|
+
font-weight: 500;
|
|
18
|
+
margin-left: 20px;
|
|
19
|
+
letter-spacing: 0.8px;
|
|
16
20
|
text-transform: uppercase;
|
|
17
21
|
|
|
18
|
-
|
|
22
|
+
&::before {
|
|
23
|
+
margin-right: 8px;
|
|
19
24
|
content: "";
|
|
20
25
|
display: inline-block;
|
|
21
26
|
position: relative;
|
|
22
|
-
width:
|
|
23
|
-
height:
|
|
24
|
-
border-radius:
|
|
25
|
-
|
|
26
|
-
background-color: var(--player-live-color);
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
&.disabled {
|
|
30
|
-
opacity: $disabled-opacity;
|
|
31
|
-
|
|
32
|
-
&:before {
|
|
33
|
-
background-color: var(--player-dvr-color);
|
|
34
|
-
}
|
|
27
|
+
width: calc(var(--circle-radius)*2);
|
|
28
|
+
height: calc(var(--circle-radius)*2);
|
|
29
|
+
border-radius: var(--circle-radius);
|
|
30
|
+
background-color: var(--player-dvr-color);
|
|
35
31
|
}
|
|
36
32
|
}
|
|
37
33
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
outline: none;
|
|
41
|
-
display: none;
|
|
42
|
-
border: 0;
|
|
43
|
-
color: var(--player-dvr-color);
|
|
44
|
-
background-color: transparent;
|
|
45
|
-
height: 32px;
|
|
46
|
-
padding: 0;
|
|
47
|
-
opacity: 0.7;
|
|
48
|
-
text-transform: uppercase;
|
|
49
|
-
transition: all 0.1s ease;
|
|
34
|
+
&.disabled {
|
|
35
|
+
opacity: var(--disabled-opacity);
|
|
50
36
|
|
|
51
37
|
&:before {
|
|
52
|
-
content: "";
|
|
53
|
-
display: inline-block;
|
|
54
|
-
position: relative;
|
|
55
|
-
width: $circle-radius*2;
|
|
56
|
-
height: $circle-radius*2;
|
|
57
|
-
border-radius: $circle-radius;
|
|
58
|
-
margin-right: $circle-radius;
|
|
59
38
|
background-color: var(--player-dvr-color);
|
|
60
39
|
}
|
|
61
|
-
|
|
62
|
-
&:hover {
|
|
63
|
-
opacity: 1;
|
|
64
|
-
text-shadow: rgba(255, 255, 255, .75) 0 0 5px;
|
|
65
|
-
}
|
|
66
40
|
}
|
|
41
|
+
}
|
|
67
42
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
.live-info {
|
|
73
|
-
font-size: 14px;
|
|
74
|
-
letter-spacing: 0.8px;
|
|
75
|
-
font-weight: 500;
|
|
76
|
-
color: #fffffe;
|
|
77
|
-
margin-left: 21px;
|
|
43
|
+
.live-info {
|
|
44
|
+
text-transform: uppercase;
|
|
45
|
+
color: #fffffe;
|
|
78
46
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
border-radius: 50%;
|
|
83
|
-
margin-right: 8px;
|
|
84
|
-
background-color: #ed4f4a;
|
|
85
|
-
}
|
|
47
|
+
&::before {
|
|
48
|
+
background-color: var(--player-live-color); // TODO
|
|
49
|
+
background-color: #ed4f4a;
|
|
86
50
|
}
|
|
51
|
+
}
|
|
87
52
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
53
|
+
.live-button {
|
|
54
|
+
cursor: pointer;
|
|
55
|
+
outline: none;
|
|
56
|
+
border: 0;
|
|
57
|
+
color: var(--player-dvr-color);
|
|
58
|
+
background-color: transparent;
|
|
59
|
+
padding: 0;
|
|
60
|
+
opacity: 0.7;
|
|
61
|
+
transition: all 0.1s ease;
|
|
95
62
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
border-radius: 50%;
|
|
100
|
-
margin-right: 8px;
|
|
101
|
-
background-color: #cacaca;
|
|
102
|
-
}
|
|
63
|
+
&:hover {
|
|
64
|
+
opacity: 1;
|
|
65
|
+
text-shadow: rgba(255, 255, 255, .75) 0 0 5px;
|
|
103
66
|
}
|
|
104
67
|
}
|
|
@@ -1,2 +1,8 @@
|
|
|
1
|
-
<div class="live-info" id="
|
|
2
|
-
<button type="button"
|
|
1
|
+
<div class="live-info" id="gplayer-mc-live"><%= i18n.t('live') %></div>
|
|
2
|
+
<button type="button"
|
|
3
|
+
class="live-button"
|
|
4
|
+
aria-label="<%= i18n.t('back_to_live') %>"
|
|
5
|
+
id="gplayer-mc-back-to-live"
|
|
6
|
+
>
|
|
7
|
+
<%= i18n.t('back_to_live') %>
|
|
8
|
+
</button>
|
package/dist/core.js
CHANGED
|
@@ -12785,10 +12785,9 @@ class DashPlayback extends BasePlayback {
|
|
|
12785
12785
|
return super.render();
|
|
12786
12786
|
}
|
|
12787
12787
|
_ready() {
|
|
12788
|
-
this.
|
|
12789
|
-
|
|
12788
|
+
!this._dash && this._setup();
|
|
12789
|
+
super._ready();
|
|
12790
12790
|
}
|
|
12791
|
-
// override
|
|
12792
12791
|
_setupSrc() {
|
|
12793
12792
|
// this playback manages the src on the video element itself
|
|
12794
12793
|
}
|
|
@@ -12972,9 +12971,7 @@ class DashPlayback extends BasePlayback {
|
|
|
12972
12971
|
}
|
|
12973
12972
|
play() {
|
|
12974
12973
|
trace(`${T$3} play`, { dash: !!this._dash });
|
|
12975
|
-
|
|
12976
|
-
this._setup();
|
|
12977
|
-
}
|
|
12974
|
+
!this._dash && this._setup();
|
|
12978
12975
|
super.play();
|
|
12979
12976
|
this._startTimeUpdateTimer();
|
|
12980
12977
|
}
|
|
@@ -12990,20 +12987,22 @@ class DashPlayback extends BasePlayback {
|
|
|
12990
12987
|
stop() {
|
|
12991
12988
|
if (this._dash) {
|
|
12992
12989
|
this._stopTimeUpdateTimer();
|
|
12993
|
-
this.
|
|
12990
|
+
this.destroyInstance();
|
|
12994
12991
|
super.stop();
|
|
12995
|
-
this._dash = null;
|
|
12996
12992
|
}
|
|
12997
12993
|
}
|
|
12998
|
-
|
|
12999
|
-
this._stopTimeUpdateTimer();
|
|
12994
|
+
destroyInstance() {
|
|
13000
12995
|
if (this._dash) {
|
|
13001
12996
|
this._dash.off(DASHJS.MediaPlayer.events.ERROR, this._onDASHJSSError);
|
|
13002
12997
|
this._dash.off(DASHJS.MediaPlayer.events.PLAYBACK_ERROR, this._onPlaybackError);
|
|
13003
12998
|
this._dash.off(DASHJS.MediaPlayer.events.MANIFEST_LOADED, this.getDuration);
|
|
13004
12999
|
this._dash.reset();
|
|
13000
|
+
this._dash = null;
|
|
13005
13001
|
}
|
|
13006
|
-
|
|
13002
|
+
}
|
|
13003
|
+
destroy() {
|
|
13004
|
+
this._stopTimeUpdateTimer();
|
|
13005
|
+
this.destroyInstance();
|
|
13007
13006
|
return super.destroy();
|
|
13008
13007
|
}
|
|
13009
13008
|
_updatePlaybackType() {
|
|
@@ -13072,6 +13071,13 @@ class DashPlayback extends BasePlayback {
|
|
|
13072
13071
|
assert.ok(track, 'Invalid audio track ID');
|
|
13073
13072
|
this._dash.setCurrentTrack(track);
|
|
13074
13073
|
}
|
|
13074
|
+
load(srcUrl) {
|
|
13075
|
+
this._stopTimeUpdateTimer();
|
|
13076
|
+
this.options.src = srcUrl;
|
|
13077
|
+
// TODO destroy the instance first?
|
|
13078
|
+
this.destroyInstance();
|
|
13079
|
+
this._setup();
|
|
13080
|
+
}
|
|
13075
13081
|
checkAudioTracks() {
|
|
13076
13082
|
// @ts-ignore
|
|
13077
13083
|
const tracks = this._dash.getTracksFor('audio');
|
|
@@ -41768,7 +41774,6 @@ class HlsPlayback extends BasePlayback {
|
|
|
41768
41774
|
_extrapolatedWindowNumSegments = 0; // TODO
|
|
41769
41775
|
highDefinition = false;
|
|
41770
41776
|
_hls = null;
|
|
41771
|
-
_isReadyState = false;
|
|
41772
41777
|
_lastDuration = null;
|
|
41773
41778
|
_lastTimeUpdate = null;
|
|
41774
41779
|
_levels = null;
|
|
@@ -41785,9 +41790,15 @@ class HlsPlayback extends BasePlayback {
|
|
|
41785
41790
|
_recoveredDecodingError = false;
|
|
41786
41791
|
_segmentTargetDuration = null;
|
|
41787
41792
|
_timeUpdateTimer = null;
|
|
41793
|
+
/**
|
|
41794
|
+
* @internal
|
|
41795
|
+
*/
|
|
41788
41796
|
get name() {
|
|
41789
41797
|
return 'hls';
|
|
41790
41798
|
}
|
|
41799
|
+
/**
|
|
41800
|
+
* @internal
|
|
41801
|
+
*/
|
|
41791
41802
|
get supportedVersion() {
|
|
41792
41803
|
return { min: CLAPPR_VERSION };
|
|
41793
41804
|
}
|
|
@@ -41797,9 +41808,6 @@ class HlsPlayback extends BasePlayback {
|
|
|
41797
41808
|
get currentLevel() {
|
|
41798
41809
|
return this._currentLevel ?? AUTO;
|
|
41799
41810
|
}
|
|
41800
|
-
get isReady() {
|
|
41801
|
-
return this._isReadyState;
|
|
41802
|
-
}
|
|
41803
41811
|
set currentLevel(id) {
|
|
41804
41812
|
this._currentLevel = id;
|
|
41805
41813
|
this.trigger(Events$1.PLAYBACK_LEVEL_SWITCH_START);
|
|
@@ -41986,6 +41994,7 @@ class HlsPlayback extends BasePlayback {
|
|
|
41986
41994
|
const config = $.extend(true, {
|
|
41987
41995
|
maxBufferLength: 2,
|
|
41988
41996
|
maxMaxBufferLength: 4,
|
|
41997
|
+
autoStartLoad: false,
|
|
41989
41998
|
}, this.options.playback.hlsjsConfig);
|
|
41990
41999
|
trace(`${T$2} _createHLSInstance`, { config });
|
|
41991
42000
|
this._hls = new Hls(config);
|
|
@@ -42004,6 +42013,7 @@ class HlsPlayback extends BasePlayback {
|
|
|
42004
42013
|
assert.ok(this._hls, 'HLS.js is not initialized');
|
|
42005
42014
|
this.options.hlsPlayback.preload && this._hls.loadSource(this.options.src);
|
|
42006
42015
|
});
|
|
42016
|
+
// TODO drop?
|
|
42007
42017
|
const onPlaying = () => {
|
|
42008
42018
|
if (this._hls) {
|
|
42009
42019
|
this._hls.config.maxBufferLength =
|
|
@@ -42014,8 +42024,13 @@ class HlsPlayback extends BasePlayback {
|
|
|
42014
42024
|
this.el.removeEventListener('playing', onPlaying);
|
|
42015
42025
|
};
|
|
42016
42026
|
this.el.addEventListener('playing', onPlaying);
|
|
42017
|
-
this._hls.on(Hls.Events.MANIFEST_PARSED, () =>
|
|
42018
|
-
|
|
42027
|
+
this._hls.on(Hls.Events.MANIFEST_PARSED, () => {
|
|
42028
|
+
this._manifestParsed = true;
|
|
42029
|
+
this._hls.startLoad(-1);
|
|
42030
|
+
});
|
|
42031
|
+
this._hls.on(Hls.Events.LEVEL_LOADED, (evt, data) => {
|
|
42032
|
+
this._updatePlaybackType(evt, data);
|
|
42033
|
+
});
|
|
42019
42034
|
this._hls.on(Hls.Events.LEVEL_UPDATED, (evt, data) => this._onLevelUpdated(evt, data));
|
|
42020
42035
|
this._hls.on(Hls.Events.LEVEL_SWITCHING, (evt, data) => this._onLevelSwitch(evt, data));
|
|
42021
42036
|
this._hls.on(Hls.Events.LEVEL_SWITCHED, (evt, data) => this._onLevelSwitched(evt, data));
|
|
@@ -42058,12 +42073,8 @@ class HlsPlayback extends BasePlayback {
|
|
|
42058
42073
|
return super.render();
|
|
42059
42074
|
}
|
|
42060
42075
|
_ready() {
|
|
42061
|
-
if (this._isReadyState) {
|
|
42062
|
-
return;
|
|
42063
|
-
}
|
|
42064
42076
|
!this._hls && this._setup();
|
|
42065
|
-
|
|
42066
|
-
this.trigger(Events$1.PLAYBACK_READY, this.name);
|
|
42077
|
+
super._ready();
|
|
42067
42078
|
}
|
|
42068
42079
|
_recover(evt, data, error) {
|
|
42069
42080
|
assert(this._hls, 'HLS.js is not initialized');
|
|
@@ -43217,7 +43228,7 @@ class Player {
|
|
|
43217
43228
|
}
|
|
43218
43229
|
}
|
|
43219
43230
|
|
|
43220
|
-
var version$1 = "2.24.
|
|
43231
|
+
var version$1 = "2.24.13";
|
|
43221
43232
|
|
|
43222
43233
|
var packages = {
|
|
43223
43234
|
"node_modules/@clappr/core": {
|