@gcorevideo/player 2.28.30 → 2.28.36
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 +22 -1
- package/assets/{subtitles → cc}/style.scss +5 -0
- package/dist/core.js +17 -23
- package/dist/index.css +241 -237
- package/dist/index.embed.js +79 -59
- package/dist/index.js +137 -119
- package/docs/api/player.closedcaptionspluginsettings.md +1 -0
- package/docs/api/player.md +9 -0
- package/docs/api/player.mediacontrol.md +16 -0
- package/docs/api/player.thumbnails.md +1 -1
- package/lib/Player.d.ts.map +1 -1
- package/lib/playback/BasePlayback.d.ts +1 -0
- package/lib/playback/BasePlayback.d.ts.map +1 -1
- package/lib/playback/BasePlayback.js +3 -0
- package/lib/playback/dash-playback/DashPlayback.d.ts +1 -0
- package/lib/playback/dash-playback/DashPlayback.d.ts.map +1 -1
- package/lib/playback/dash-playback/DashPlayback.js +9 -22
- package/lib/playback/hls-playback/HlsPlayback.d.ts.map +1 -1
- package/lib/playback/hls-playback/HlsPlayback.js +4 -0
- package/lib/plugins/subtitles/ClosedCaptions.d.ts +7 -3
- package/lib/plugins/subtitles/ClosedCaptions.d.ts.map +1 -1
- package/lib/plugins/subtitles/ClosedCaptions.js +66 -42
- package/lib/testUtils.d.ts +1 -0
- package/lib/testUtils.d.ts.map +1 -1
- package/lib/testUtils.js +3 -0
- package/package.json +4 -1
- package/src/Player.ts +12 -12
- package/src/playback/BasePlayback.ts +4 -0
- package/src/playback/dash-playback/DashPlayback.ts +10 -27
- package/src/playback/hls-playback/HlsPlayback.ts +4 -0
- package/src/plugins/subtitles/ClosedCaptions.ts +75 -47
- package/src/plugins/subtitles/__tests__/ClosedCaptions.test.ts +277 -29
- package/src/plugins/subtitles/__tests__/__snapshots__/ClosedCaptions.test.ts.snap +3 -3
- package/src/testUtils.ts +3 -0
- package/tsconfig.tsbuildinfo +1 -1
- /package/assets/{subtitles → cc}/combobox.ejs +0 -0
- /package/assets/{subtitles → cc}/string.ejs +0 -0
package/README.md
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
# Gcore video player
|
|
2
|
+
|
|
2
3
|
$
|
|
3
4
|
|
|
4
5
|
## Installation
|
|
@@ -15,7 +16,7 @@ Or use a script on the CDN directly in your HTML:
|
|
|
15
16
|
|
|
16
17
|
## Usage
|
|
17
18
|
|
|
18
|
-
See the complete example app on Vercel:
|
|
19
|
+
See the complete example app on Vercel: <https://github.com/dmitritz/gcore-videoplayer-js-nuxt>
|
|
19
20
|
|
|
20
21
|
### Plain HTML example
|
|
21
22
|
|
|
@@ -83,3 +84,23 @@ See the complete example app on Vercel: [https://github.com/dmitritz/gcore-video
|
|
|
83
84
|
## Documentation
|
|
84
85
|
|
|
85
86
|
- [API reference](./docs/api/index.md)
|
|
87
|
+
|
|
88
|
+
## Development
|
|
89
|
+
|
|
90
|
+
### Log level
|
|
91
|
+
|
|
92
|
+
Detailed logs can be useful in local development while debugging or watching tests output.
|
|
93
|
+
Log level of the player core and components can be controlled by configuring a LogTracer:
|
|
94
|
+
|
|
95
|
+
```ts
|
|
96
|
+
import { LogTracer, Logger, setTracer } from '@gcorevideo/utils'
|
|
97
|
+
// ...
|
|
98
|
+
Logger.enable('*') // log everything; you can use glob-like patterns, such as 'gplayer', 'plugins.*' or 'playback.*'
|
|
99
|
+
setTracer(new LogTracer('AudioTracks.test'))
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
When debugging an app that use the player as a dependency,
|
|
103
|
+
|
|
104
|
+
```ts
|
|
105
|
+
import { LogTracer, Logger, setTracer } from '@gcorevideo/player'
|
|
106
|
+
```
|
package/dist/core.js
CHANGED
|
@@ -12807,6 +12807,9 @@ class BasePlayback extends HTML5Video$1 {
|
|
|
12807
12807
|
super._onPlaying();
|
|
12808
12808
|
this.trigger(Events$1.PLAYBACK_MEDIACONTROL_ENABLE);
|
|
12809
12809
|
}
|
|
12810
|
+
setTextTrack(id) {
|
|
12811
|
+
// noop
|
|
12812
|
+
}
|
|
12810
12813
|
}
|
|
12811
12814
|
|
|
12812
12815
|
var PlaybackEvents;
|
|
@@ -12829,6 +12832,7 @@ const T$3 = 'playback.dash';
|
|
|
12829
12832
|
class DashPlayback extends BasePlayback {
|
|
12830
12833
|
_levels = [];
|
|
12831
12834
|
_currentLevel = AUTO$1;
|
|
12835
|
+
_currentTextTrackId = -1;
|
|
12832
12836
|
// true when the actual duration is longer than hlsjs's live sync point
|
|
12833
12837
|
// when this is false playableRegionDuration will be the actual duration
|
|
12834
12838
|
// when this is true playableRegionDuration will exclude the time after the sync point
|
|
@@ -12961,7 +12965,11 @@ class DashPlayback extends BasePlayback {
|
|
|
12961
12965
|
streaming: {
|
|
12962
12966
|
text: {
|
|
12963
12967
|
defaultEnabled: false,
|
|
12964
|
-
|
|
12968
|
+
// NOTE: dispatchForManualRendering is not correctly implemented in DASH.js;
|
|
12969
|
+
// it does not work when there are multiple text tracks.
|
|
12970
|
+
// CUE_ENTER and CUE_EXIT events might be dispatched additionally
|
|
12971
|
+
// for a track, other than the currently active one.
|
|
12972
|
+
// dispatchForManualRendering: true, // TODO only when useNativeSubtitles is not true?
|
|
12965
12973
|
},
|
|
12966
12974
|
},
|
|
12967
12975
|
}, this.options.dash);
|
|
@@ -13005,24 +13013,6 @@ class DashPlayback extends BasePlayback {
|
|
|
13005
13013
|
this._dash.on(_.events.PLAYBACK_RATE_CHANGED, (e) => {
|
|
13006
13014
|
this.trigger(PlaybackEvents.PLAYBACK_RATE_CHANGED, e.playbackRate);
|
|
13007
13015
|
});
|
|
13008
|
-
this._dash.on(_.events.TRACK_CHANGE_RENDERED, (e) => {
|
|
13009
|
-
if (e.mediaType === 'audio') {
|
|
13010
|
-
this.trigger(Events$1.PLAYBACK_AUDIO_CHANGED, toClapprTrack$1(e.newMediaInfo));
|
|
13011
|
-
}
|
|
13012
|
-
});
|
|
13013
|
-
this._dash.on(_.events.CUE_ENTER, (e) => {
|
|
13014
|
-
this.oncueenter?.({
|
|
13015
|
-
end: e.end,
|
|
13016
|
-
id: e.id,
|
|
13017
|
-
start: e.start,
|
|
13018
|
-
text: e.text,
|
|
13019
|
-
});
|
|
13020
|
-
});
|
|
13021
|
-
this._dash.on(_.events.CUE_EXIT, (e) => {
|
|
13022
|
-
this.oncueexit?.({
|
|
13023
|
-
id: e.id,
|
|
13024
|
-
});
|
|
13025
|
-
});
|
|
13026
13016
|
}
|
|
13027
13017
|
render() {
|
|
13028
13018
|
this._ready();
|
|
@@ -13332,14 +13322,14 @@ class DashPlayback extends BasePlayback {
|
|
|
13332
13322
|
this._dash?.setTextTrack(this.closedCaptionsTrackId);
|
|
13333
13323
|
}
|
|
13334
13324
|
setTextTrack(id) {
|
|
13325
|
+
this._currentTextTrackId = id;
|
|
13335
13326
|
this._dash?.setTextTrack(id);
|
|
13336
13327
|
}
|
|
13337
13328
|
/**
|
|
13338
13329
|
* @override
|
|
13339
13330
|
*/
|
|
13340
13331
|
get closedCaptionsTracks() {
|
|
13341
|
-
|
|
13342
|
-
return tt;
|
|
13332
|
+
return this.getTextTracks();
|
|
13343
13333
|
}
|
|
13344
13334
|
getTextTracks() {
|
|
13345
13335
|
return this._dash?.getTracksFor('text').map((t, index) => ({
|
|
@@ -13349,7 +13339,7 @@ class DashPlayback extends BasePlayback {
|
|
|
13349
13339
|
id: index,
|
|
13350
13340
|
label: getTextTrackLabel(t) || "",
|
|
13351
13341
|
language: t.lang,
|
|
13352
|
-
mode: "hidden",
|
|
13342
|
+
mode: this._currentTextTrackId === index ? "showing" : "hidden",
|
|
13353
13343
|
},
|
|
13354
13344
|
})) || [];
|
|
13355
13345
|
}
|
|
@@ -50861,7 +50851,11 @@ class HlsPlayback extends BasePlayback {
|
|
|
50861
50851
|
this.trigger(Events$1.PLAYBACK_AUDIO_CHANGED, toClapprTrack(track));
|
|
50862
50852
|
}
|
|
50863
50853
|
setTextTrack(id) {
|
|
50854
|
+
if (id === this._hls.subtitleTrack) {
|
|
50855
|
+
return;
|
|
50856
|
+
}
|
|
50864
50857
|
this._hls.subtitleTrack = id;
|
|
50858
|
+
this.cues = [];
|
|
50865
50859
|
}
|
|
50866
50860
|
/**
|
|
50867
50861
|
* @override
|
|
@@ -51481,7 +51475,7 @@ class Player {
|
|
|
51481
51475
|
}
|
|
51482
51476
|
}
|
|
51483
51477
|
|
|
51484
|
-
var version$1 = "2.28.
|
|
51478
|
+
var version$1 = "2.28.36";
|
|
51485
51479
|
|
|
51486
51480
|
var packages = {
|
|
51487
51481
|
"node_modules/@clappr/core": {
|
package/dist/index.css
CHANGED
|
@@ -666,76 +666,6 @@
|
|
|
666
666
|
}
|
|
667
667
|
.gplayer-mc-clips .gplayer-mc-clips-text.compact {
|
|
668
668
|
max-width: 100px;
|
|
669
|
-
}.context-menu {
|
|
670
|
-
z-index: 999;
|
|
671
|
-
position: absolute;
|
|
672
|
-
top: 0;
|
|
673
|
-
left: 0;
|
|
674
|
-
text-align: center;
|
|
675
|
-
}
|
|
676
|
-
.context-menu .context-menu-list {
|
|
677
|
-
font-family: "Proxima Nova", sans-serif;
|
|
678
|
-
font-size: 12px;
|
|
679
|
-
line-height: 12px;
|
|
680
|
-
list-style-type: none;
|
|
681
|
-
text-align: left;
|
|
682
|
-
padding: 5px;
|
|
683
|
-
margin-left: auto;
|
|
684
|
-
margin-right: auto;
|
|
685
|
-
background-color: rgba(0, 0, 0, 0.75);
|
|
686
|
-
border: 1px solid #666;
|
|
687
|
-
border-radius: 4px;
|
|
688
|
-
}
|
|
689
|
-
.context-menu .context-menu-list-item button {
|
|
690
|
-
border: none;
|
|
691
|
-
background-color: transparent;
|
|
692
|
-
padding: 0;
|
|
693
|
-
color: white;
|
|
694
|
-
display: flex;
|
|
695
|
-
gap: 8px;
|
|
696
|
-
align-items: center;
|
|
697
|
-
justify-content: center;
|
|
698
|
-
cursor: pointer;
|
|
699
|
-
padding: 5px;
|
|
700
|
-
width: 100%;
|
|
701
|
-
}
|
|
702
|
-
.context-menu .context-menu-list-item_icon {
|
|
703
|
-
width: 20px;
|
|
704
|
-
height: 20px;
|
|
705
|
-
}div.player-error-screen, [data-player] div.player-error-screen {
|
|
706
|
-
color: #CCCACA;
|
|
707
|
-
position: absolute;
|
|
708
|
-
top: 0;
|
|
709
|
-
height: 100%;
|
|
710
|
-
width: 100%;
|
|
711
|
-
background-color: rgba(0, 0, 0, 0.7);
|
|
712
|
-
z-index: 2000;
|
|
713
|
-
display: flex;
|
|
714
|
-
flex-direction: column;
|
|
715
|
-
justify-content: center;
|
|
716
|
-
}
|
|
717
|
-
div.player-error-screen__content[data-error-screen], [data-player] div.player-error-screen__content[data-error-screen] {
|
|
718
|
-
font-size: 14px;
|
|
719
|
-
color: #CCCACA;
|
|
720
|
-
margin-top: 45px;
|
|
721
|
-
}
|
|
722
|
-
div.player-error-screen__title[data-error-screen], [data-player] div.player-error-screen__title[data-error-screen] {
|
|
723
|
-
font-weight: bold;
|
|
724
|
-
line-height: 30px;
|
|
725
|
-
font-size: 18px;
|
|
726
|
-
}
|
|
727
|
-
div.player-error-screen__message[data-error-screen], [data-player] div.player-error-screen__message[data-error-screen] {
|
|
728
|
-
width: 90%;
|
|
729
|
-
margin: 0 auto;
|
|
730
|
-
}
|
|
731
|
-
div.player-error-screen__code[data-error-screen], [data-player] div.player-error-screen__code[data-error-screen] {
|
|
732
|
-
font-size: 13px;
|
|
733
|
-
margin-top: 15px;
|
|
734
|
-
}
|
|
735
|
-
div.player-error-screen__reload, [data-player] div.player-error-screen__reload {
|
|
736
|
-
cursor: pointer;
|
|
737
|
-
width: 30px;
|
|
738
|
-
margin: 15px auto 0;
|
|
739
669
|
}.dvr-controls {
|
|
740
670
|
--disabled-opacity: 0.3;
|
|
741
671
|
--circle-radius: 5px;
|
|
@@ -793,149 +723,76 @@ div.player-error-screen__reload, [data-player] div.player-error-screen__reload {
|
|
|
793
723
|
.dvr-controls .live-button:hover {
|
|
794
724
|
opacity: 1;
|
|
795
725
|
text-shadow: rgba(255, 255, 255, 0.75) 0 0 5px;
|
|
796
|
-
}
|
|
797
|
-
:
|
|
798
|
-
:
|
|
799
|
-
|
|
726
|
+
}.context-menu {
|
|
727
|
+
z-index: 999;
|
|
728
|
+
position: absolute;
|
|
729
|
+
top: 0;
|
|
730
|
+
left: 0;
|
|
731
|
+
text-align: center;
|
|
800
732
|
}
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
733
|
+
.context-menu .context-menu-list {
|
|
734
|
+
font-family: "Proxima Nova", sans-serif;
|
|
735
|
+
font-size: 12px;
|
|
736
|
+
line-height: 12px;
|
|
737
|
+
list-style-type: none;
|
|
738
|
+
text-align: left;
|
|
739
|
+
padding: 5px;
|
|
740
|
+
margin-left: auto;
|
|
741
|
+
margin-right: auto;
|
|
742
|
+
background-color: rgba(0, 0, 0, 0.75);
|
|
743
|
+
border: 1px solid #666;
|
|
744
|
+
border-radius: 4px;
|
|
808
745
|
}
|
|
809
|
-
.
|
|
810
|
-
background-color: transparent;
|
|
811
|
-
color: #fff;
|
|
812
|
-
font-family: Roboto, "Open Sans", Arial, sans-serif;
|
|
813
|
-
-webkit-font-smoothing: antialiased;
|
|
746
|
+
.context-menu .context-menu-list-item button {
|
|
814
747
|
border: none;
|
|
815
|
-
|
|
748
|
+
background-color: transparent;
|
|
816
749
|
padding: 0;
|
|
750
|
+
color: white;
|
|
751
|
+
display: flex;
|
|
752
|
+
gap: 8px;
|
|
753
|
+
align-items: center;
|
|
754
|
+
justify-content: center;
|
|
755
|
+
cursor: pointer;
|
|
756
|
+
padding: 5px;
|
|
757
|
+
width: 100%;
|
|
817
758
|
}
|
|
818
|
-
.
|
|
759
|
+
.context-menu .context-menu-list-item_icon {
|
|
760
|
+
width: 20px;
|
|
819
761
|
height: 20px;
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
}
|
|
823
|
-
.multicamera[data-multicamera] button:hover {
|
|
824
|
-
color: #c9c9c9;
|
|
825
|
-
}
|
|
826
|
-
.multicamera[data-multicamera] button.changing {
|
|
827
|
-
animation: pulse 0.5s infinite alternate;
|
|
828
|
-
}
|
|
829
|
-
.multicamera[data-multicamera] button span.quality-arrow {
|
|
830
|
-
width: 9px;
|
|
831
|
-
height: 6px;
|
|
832
|
-
margin-top: 11px;
|
|
833
|
-
margin-left: 5px;
|
|
834
|
-
}
|
|
835
|
-
.multicamera[data-multicamera] > ul {
|
|
836
|
-
padding: 6px 0;
|
|
837
|
-
right: -24px;
|
|
838
|
-
width: 245px;
|
|
839
|
-
list-style-type: none;
|
|
840
|
-
position: absolute;
|
|
841
|
-
bottom: 48px;
|
|
842
|
-
border-radius: 4px;
|
|
843
|
-
display: none;
|
|
844
|
-
background-color: rgba(74, 74, 74, 0.9);
|
|
845
|
-
}
|
|
846
|
-
.multicamera[data-multicamera] > ul::after {
|
|
847
|
-
content: "";
|
|
762
|
+
}div.player-error-screen, [data-player] div.player-error-screen {
|
|
763
|
+
color: #CCCACA;
|
|
848
764
|
position: absolute;
|
|
849
|
-
top:
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
border-top: 10px solid rgba(74, 74, 74, 0.9);
|
|
855
|
-
border-right: 10px solid transparent;
|
|
856
|
-
border-left: 10px solid transparent;
|
|
857
|
-
}
|
|
858
|
-
.multicamera[data-multicamera] li {
|
|
859
|
-
font-size: 10px;
|
|
860
|
-
cursor: pointer;
|
|
861
|
-
}
|
|
862
|
-
.multicamera[data-multicamera] li .multicamera-item {
|
|
765
|
+
top: 0;
|
|
766
|
+
height: 100%;
|
|
767
|
+
width: 100%;
|
|
768
|
+
background-color: rgba(0, 0, 0, 0.7);
|
|
769
|
+
z-index: 2000;
|
|
863
770
|
display: flex;
|
|
864
|
-
|
|
771
|
+
flex-direction: column;
|
|
865
772
|
justify-content: center;
|
|
866
|
-
position: relative;
|
|
867
|
-
}
|
|
868
|
-
.multicamera[data-multicamera] li .multicamera-item[data-mulitcamera-selector-live=false] .multicamera-screenshot {
|
|
869
|
-
opacity: 0.5;
|
|
870
|
-
}
|
|
871
|
-
.multicamera[data-multicamera] li .multicamera-item[data-mulitcamera-selector-live=false] .multicamera-text {
|
|
872
|
-
opacity: 0.5;
|
|
873
|
-
}
|
|
874
|
-
.multicamera[data-multicamera] li .multicamera-item[data-mulitcamera-selector-live=false]:hover {
|
|
875
|
-
background-color: rgba(0, 0, 0, 0);
|
|
876
773
|
}
|
|
877
|
-
.
|
|
878
|
-
pointer-events: none;
|
|
879
|
-
}
|
|
880
|
-
.multicamera[data-multicamera] li .multicamera-item:hover, .multicamera[data-multicamera] li .multicamera-item.multicamera-active {
|
|
881
|
-
background-color: rgba(0, 0, 0, 0.3);
|
|
882
|
-
}
|
|
883
|
-
.multicamera[data-multicamera] li .multicamera-item .multicamera-screenshot {
|
|
884
|
-
width: 80px;
|
|
885
|
-
height: 60px;
|
|
886
|
-
}
|
|
887
|
-
.multicamera[data-multicamera] li .multicamera-item .multicamera-screenshot img {
|
|
888
|
-
width: 80px;
|
|
889
|
-
height: 60px;
|
|
890
|
-
}
|
|
891
|
-
.multicamera[data-multicamera] li .multicamera-item .multicamera-text {
|
|
892
|
-
width: 120px;
|
|
893
|
-
text-align: left;
|
|
894
|
-
margin-left: 15px;
|
|
895
|
-
}
|
|
896
|
-
.multicamera[data-multicamera] li .multicamera-item .multicamera-text .multicamera-title,
|
|
897
|
-
.multicamera[data-multicamera] li .multicamera-item .multicamera-text .multicamera-description {
|
|
898
|
-
width: 120px;
|
|
899
|
-
height: 20px;
|
|
900
|
-
font-family: Roboto, "Open Sans", Arial, sans-serif;
|
|
774
|
+
div.player-error-screen__content[data-error-screen], [data-player] div.player-error-screen__content[data-error-screen] {
|
|
901
775
|
font-size: 14px;
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
font-stretch: normal;
|
|
905
|
-
line-height: 1.43;
|
|
906
|
-
letter-spacing: normal;
|
|
907
|
-
text-align: left;
|
|
908
|
-
color: #fff;
|
|
909
|
-
text-overflow: ellipsis;
|
|
910
|
-
overflow: hidden;
|
|
911
|
-
}
|
|
912
|
-
.multicamera[data-multicamera] li .multicamera-item .multicamera-text .multicamera-description {
|
|
913
|
-
opacity: 0.6;
|
|
914
|
-
}
|
|
915
|
-
.multicamera[data-multicamera] li a {
|
|
916
|
-
color: #444;
|
|
917
|
-
padding: 2px 10px;
|
|
918
|
-
display: block;
|
|
919
|
-
text-decoration: none;
|
|
920
|
-
}
|
|
921
|
-
.multicamera[data-multicamera] li a:hover {
|
|
922
|
-
background-color: #555;
|
|
923
|
-
color: white;
|
|
776
|
+
color: #CCCACA;
|
|
777
|
+
margin-top: 45px;
|
|
924
778
|
}
|
|
925
|
-
.
|
|
926
|
-
|
|
927
|
-
|
|
779
|
+
div.player-error-screen__title[data-error-screen], [data-player] div.player-error-screen__title[data-error-screen] {
|
|
780
|
+
font-weight: bold;
|
|
781
|
+
line-height: 30px;
|
|
782
|
+
font-size: 18px;
|
|
928
783
|
}
|
|
929
|
-
.
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
order: 95;
|
|
784
|
+
div.player-error-screen__message[data-error-screen], [data-player] div.player-error-screen__message[data-error-screen] {
|
|
785
|
+
width: 90%;
|
|
786
|
+
margin: 0 auto;
|
|
933
787
|
}
|
|
934
|
-
.
|
|
935
|
-
|
|
788
|
+
div.player-error-screen__code[data-error-screen], [data-player] div.player-error-screen__code[data-error-screen] {
|
|
789
|
+
font-size: 13px;
|
|
790
|
+
margin-top: 15px;
|
|
936
791
|
}
|
|
937
|
-
.
|
|
938
|
-
|
|
792
|
+
div.player-error-screen__reload, [data-player] div.player-error-screen__reload {
|
|
793
|
+
cursor: pointer;
|
|
794
|
+
width: 30px;
|
|
795
|
+
margin: 15px auto 0;
|
|
939
796
|
}[data-player] {
|
|
940
797
|
--bottom-panel: 40px;
|
|
941
798
|
}
|
|
@@ -1557,6 +1414,149 @@ div.player-error-screen__reload, [data-player] div.player-error-screen__reload {
|
|
|
1557
1414
|
100% {
|
|
1558
1415
|
color: #B80000;
|
|
1559
1416
|
}
|
|
1417
|
+
}*,
|
|
1418
|
+
:focus,
|
|
1419
|
+
:visited {
|
|
1420
|
+
outline: none !important;
|
|
1421
|
+
}
|
|
1422
|
+
|
|
1423
|
+
.multicamera[data-multicamera] {
|
|
1424
|
+
float: right;
|
|
1425
|
+
margin-top: 4px;
|
|
1426
|
+
position: relative;
|
|
1427
|
+
margin-right: 20px;
|
|
1428
|
+
width: 20px;
|
|
1429
|
+
}
|
|
1430
|
+
.multicamera[data-multicamera] button {
|
|
1431
|
+
background-color: transparent;
|
|
1432
|
+
color: #fff;
|
|
1433
|
+
font-family: Roboto, "Open Sans", Arial, sans-serif;
|
|
1434
|
+
-webkit-font-smoothing: antialiased;
|
|
1435
|
+
border: none;
|
|
1436
|
+
font-size: 14px;
|
|
1437
|
+
padding: 0;
|
|
1438
|
+
}
|
|
1439
|
+
.multicamera[data-multicamera] button svg {
|
|
1440
|
+
height: 20px;
|
|
1441
|
+
position: relative;
|
|
1442
|
+
margin-top: 6px;
|
|
1443
|
+
}
|
|
1444
|
+
.multicamera[data-multicamera] button:hover {
|
|
1445
|
+
color: #c9c9c9;
|
|
1446
|
+
}
|
|
1447
|
+
.multicamera[data-multicamera] button.changing {
|
|
1448
|
+
animation: pulse 0.5s infinite alternate;
|
|
1449
|
+
}
|
|
1450
|
+
.multicamera[data-multicamera] button span.quality-arrow {
|
|
1451
|
+
width: 9px;
|
|
1452
|
+
height: 6px;
|
|
1453
|
+
margin-top: 11px;
|
|
1454
|
+
margin-left: 5px;
|
|
1455
|
+
}
|
|
1456
|
+
.multicamera[data-multicamera] > ul {
|
|
1457
|
+
padding: 6px 0;
|
|
1458
|
+
right: -24px;
|
|
1459
|
+
width: 245px;
|
|
1460
|
+
list-style-type: none;
|
|
1461
|
+
position: absolute;
|
|
1462
|
+
bottom: 48px;
|
|
1463
|
+
border-radius: 4px;
|
|
1464
|
+
display: none;
|
|
1465
|
+
background-color: rgba(74, 74, 74, 0.9);
|
|
1466
|
+
}
|
|
1467
|
+
.multicamera[data-multicamera] > ul::after {
|
|
1468
|
+
content: "";
|
|
1469
|
+
position: absolute;
|
|
1470
|
+
top: 100%;
|
|
1471
|
+
left: 85%;
|
|
1472
|
+
margin-left: -10px;
|
|
1473
|
+
width: 0;
|
|
1474
|
+
height: 0;
|
|
1475
|
+
border-top: 10px solid rgba(74, 74, 74, 0.9);
|
|
1476
|
+
border-right: 10px solid transparent;
|
|
1477
|
+
border-left: 10px solid transparent;
|
|
1478
|
+
}
|
|
1479
|
+
.multicamera[data-multicamera] li {
|
|
1480
|
+
font-size: 10px;
|
|
1481
|
+
cursor: pointer;
|
|
1482
|
+
}
|
|
1483
|
+
.multicamera[data-multicamera] li .multicamera-item {
|
|
1484
|
+
display: flex;
|
|
1485
|
+
padding: 10px 0;
|
|
1486
|
+
justify-content: center;
|
|
1487
|
+
position: relative;
|
|
1488
|
+
}
|
|
1489
|
+
.multicamera[data-multicamera] li .multicamera-item[data-mulitcamera-selector-live=false] .multicamera-screenshot {
|
|
1490
|
+
opacity: 0.5;
|
|
1491
|
+
}
|
|
1492
|
+
.multicamera[data-multicamera] li .multicamera-item[data-mulitcamera-selector-live=false] .multicamera-text {
|
|
1493
|
+
opacity: 0.5;
|
|
1494
|
+
}
|
|
1495
|
+
.multicamera[data-multicamera] li .multicamera-item[data-mulitcamera-selector-live=false]:hover {
|
|
1496
|
+
background-color: rgba(0, 0, 0, 0);
|
|
1497
|
+
}
|
|
1498
|
+
.multicamera[data-multicamera] li .multicamera-item[data-mulitcamera-selector-live=false] {
|
|
1499
|
+
pointer-events: none;
|
|
1500
|
+
}
|
|
1501
|
+
.multicamera[data-multicamera] li .multicamera-item:hover, .multicamera[data-multicamera] li .multicamera-item.multicamera-active {
|
|
1502
|
+
background-color: rgba(0, 0, 0, 0.3);
|
|
1503
|
+
}
|
|
1504
|
+
.multicamera[data-multicamera] li .multicamera-item .multicamera-screenshot {
|
|
1505
|
+
width: 80px;
|
|
1506
|
+
height: 60px;
|
|
1507
|
+
}
|
|
1508
|
+
.multicamera[data-multicamera] li .multicamera-item .multicamera-screenshot img {
|
|
1509
|
+
width: 80px;
|
|
1510
|
+
height: 60px;
|
|
1511
|
+
}
|
|
1512
|
+
.multicamera[data-multicamera] li .multicamera-item .multicamera-text {
|
|
1513
|
+
width: 120px;
|
|
1514
|
+
text-align: left;
|
|
1515
|
+
margin-left: 15px;
|
|
1516
|
+
}
|
|
1517
|
+
.multicamera[data-multicamera] li .multicamera-item .multicamera-text .multicamera-title,
|
|
1518
|
+
.multicamera[data-multicamera] li .multicamera-item .multicamera-text .multicamera-description {
|
|
1519
|
+
width: 120px;
|
|
1520
|
+
height: 20px;
|
|
1521
|
+
font-family: Roboto, "Open Sans", Arial, sans-serif;
|
|
1522
|
+
font-size: 14px;
|
|
1523
|
+
font-weight: normal;
|
|
1524
|
+
font-style: normal;
|
|
1525
|
+
font-stretch: normal;
|
|
1526
|
+
line-height: 1.43;
|
|
1527
|
+
letter-spacing: normal;
|
|
1528
|
+
text-align: left;
|
|
1529
|
+
color: #fff;
|
|
1530
|
+
text-overflow: ellipsis;
|
|
1531
|
+
overflow: hidden;
|
|
1532
|
+
}
|
|
1533
|
+
.multicamera[data-multicamera] li .multicamera-item .multicamera-text .multicamera-description {
|
|
1534
|
+
opacity: 0.6;
|
|
1535
|
+
}
|
|
1536
|
+
.multicamera[data-multicamera] li a {
|
|
1537
|
+
color: #444;
|
|
1538
|
+
padding: 2px 10px;
|
|
1539
|
+
display: block;
|
|
1540
|
+
text-decoration: none;
|
|
1541
|
+
}
|
|
1542
|
+
.multicamera[data-multicamera] li a:hover {
|
|
1543
|
+
background-color: #555;
|
|
1544
|
+
color: white;
|
|
1545
|
+
}
|
|
1546
|
+
.multicamera[data-multicamera] li a:hover a {
|
|
1547
|
+
color: white;
|
|
1548
|
+
text-decoration: none;
|
|
1549
|
+
}
|
|
1550
|
+
.multicamera[data-multicamera] li.current a {
|
|
1551
|
+
color: #f00;
|
|
1552
|
+
}.media-control-skin-1 .media-control-item.media-control-pip {
|
|
1553
|
+
order: 95;
|
|
1554
|
+
}
|
|
1555
|
+
.media-control-skin-1 .media-control-item.media-control-pip button {
|
|
1556
|
+
height: 20px;
|
|
1557
|
+
}
|
|
1558
|
+
.media-control-skin-1 .media-control-item.media-control-pip button svg {
|
|
1559
|
+
height: 20px;
|
|
1560
1560
|
}.player-poster {
|
|
1561
1561
|
display: flex;
|
|
1562
1562
|
justify-content: center;
|
|
@@ -1591,6 +1591,45 @@ div.player-error-screen__reload, [data-player] div.player-error-screen__reload {
|
|
|
1591
1591
|
}
|
|
1592
1592
|
.player-poster .play-wrapper svg path {
|
|
1593
1593
|
fill: #fff;
|
|
1594
|
+
}.quality-levels li.disabled {
|
|
1595
|
+
opacity: 0.5;
|
|
1596
|
+
pointer-events: none;
|
|
1597
|
+
}
|
|
1598
|
+
.quality-levels li.current {
|
|
1599
|
+
background-color: #000;
|
|
1600
|
+
}.seek-time {
|
|
1601
|
+
position: absolute;
|
|
1602
|
+
white-space: nowrap;
|
|
1603
|
+
height: 20px;
|
|
1604
|
+
line-height: 20px;
|
|
1605
|
+
font-size: 0;
|
|
1606
|
+
left: -100%;
|
|
1607
|
+
bottom: 55px;
|
|
1608
|
+
background-color: rgba(2, 2, 2, 0.5);
|
|
1609
|
+
z-index: 9999;
|
|
1610
|
+
transition: opacity 0.1s ease;
|
|
1611
|
+
}
|
|
1612
|
+
.seek-time.hidden {
|
|
1613
|
+
opacity: 0;
|
|
1614
|
+
}
|
|
1615
|
+
.seek-time .seek-time__pos {
|
|
1616
|
+
display: inline-block;
|
|
1617
|
+
color: white;
|
|
1618
|
+
font-size: 10px;
|
|
1619
|
+
padding-left: 7px;
|
|
1620
|
+
padding-right: 7px;
|
|
1621
|
+
vertical-align: top;
|
|
1622
|
+
}
|
|
1623
|
+
.seek-time .seek-time__duration {
|
|
1624
|
+
display: inline-block;
|
|
1625
|
+
color: rgba(255, 255, 255, 0.5);
|
|
1626
|
+
font-size: 10px;
|
|
1627
|
+
padding-right: 7px;
|
|
1628
|
+
vertical-align: top;
|
|
1629
|
+
}
|
|
1630
|
+
.seek-time .seek-time__duration::before {
|
|
1631
|
+
content: "|";
|
|
1632
|
+
margin-right: 7px;
|
|
1594
1633
|
}.share_plugin[data-share] {
|
|
1595
1634
|
pointer-events: auto;
|
|
1596
1635
|
z-index: 5;
|
|
@@ -1674,39 +1713,6 @@ div.player-error-screen__reload, [data-player] div.player-error-screen__reload {
|
|
|
1674
1713
|
display: inline-block;
|
|
1675
1714
|
margin-right: 5px;
|
|
1676
1715
|
cursor: pointer;
|
|
1677
|
-
}.seek-time {
|
|
1678
|
-
position: absolute;
|
|
1679
|
-
white-space: nowrap;
|
|
1680
|
-
height: 20px;
|
|
1681
|
-
line-height: 20px;
|
|
1682
|
-
font-size: 0;
|
|
1683
|
-
left: -100%;
|
|
1684
|
-
bottom: 55px;
|
|
1685
|
-
background-color: rgba(2, 2, 2, 0.5);
|
|
1686
|
-
z-index: 9999;
|
|
1687
|
-
transition: opacity 0.1s ease;
|
|
1688
|
-
}
|
|
1689
|
-
.seek-time.hidden {
|
|
1690
|
-
opacity: 0;
|
|
1691
|
-
}
|
|
1692
|
-
.seek-time .seek-time__pos {
|
|
1693
|
-
display: inline-block;
|
|
1694
|
-
color: white;
|
|
1695
|
-
font-size: 10px;
|
|
1696
|
-
padding-left: 7px;
|
|
1697
|
-
padding-right: 7px;
|
|
1698
|
-
vertical-align: top;
|
|
1699
|
-
}
|
|
1700
|
-
.seek-time .seek-time__duration {
|
|
1701
|
-
display: inline-block;
|
|
1702
|
-
color: rgba(255, 255, 255, 0.5);
|
|
1703
|
-
font-size: 10px;
|
|
1704
|
-
padding-right: 7px;
|
|
1705
|
-
vertical-align: top;
|
|
1706
|
-
}
|
|
1707
|
-
.seek-time .seek-time__duration::before {
|
|
1708
|
-
content: "|";
|
|
1709
|
-
margin-right: 7px;
|
|
1710
1716
|
}.spinner-three-bounce[data-spinner] {
|
|
1711
1717
|
position: absolute;
|
|
1712
1718
|
width: 70px;
|
|
@@ -1745,12 +1751,6 @@ div.player-error-screen__reload, [data-player] div.player-error-screen__reload {
|
|
|
1745
1751
|
40% {
|
|
1746
1752
|
transform: scale(1);
|
|
1747
1753
|
}
|
|
1748
|
-
}.quality-levels li.disabled {
|
|
1749
|
-
opacity: 0.5;
|
|
1750
|
-
pointer-events: none;
|
|
1751
|
-
}
|
|
1752
|
-
.quality-levels li.current {
|
|
1753
|
-
background-color: #000;
|
|
1754
1754
|
}.container-with-poster-clickable .mc-skip-time {
|
|
1755
1755
|
height: 0;
|
|
1756
1756
|
}
|
|
@@ -1886,6 +1886,10 @@ div.player-error-screen__reload, [data-player] div.player-error-screen__reload {
|
|
|
1886
1886
|
position: absolute;
|
|
1887
1887
|
bottom: calc(var(--bottom-panel) + 5px);
|
|
1888
1888
|
width: 100%;
|
|
1889
|
+
transition: transform 0.3s ease-out;
|
|
1890
|
+
}
|
|
1891
|
+
.container .gplayer-cc-line.media-control-cc-pulled {
|
|
1892
|
+
transform: translateY(var(--bottom-panel));
|
|
1889
1893
|
}
|
|
1890
1894
|
.container .gplayer-cc-line p {
|
|
1891
1895
|
width: auto;
|