@gcorevideo/player 2.25.9 → 2.26.0
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/dist/core.js +23 -78
- package/dist/index.css +1193 -1193
- package/dist/index.embed.js +89 -153
- package/dist/index.js +112 -249
- package/dist/player.d.ts +2798 -2785
- package/docs/api/player.bigmutebutton.md +0 -3
- package/docs/api/player.bottomgear.additem.md +0 -3
- package/docs/api/player.bottomgear.md +2 -5
- package/docs/api/player.bottomgear.refresh.md +0 -3
- package/docs/api/player.clapprstats._constructor_.md +0 -3
- package/docs/api/player.clapprstats.clearmetrics.md +0 -3
- package/docs/api/player.clapprstats.exportmetrics.md +1 -4
- package/docs/api/player.clapprstats.md +2 -7
- package/docs/api/player.clapprstatsbitratetrack.md +0 -3
- package/docs/api/player.clapprstatschronograph.md +0 -13
- package/docs/api/player.clapprstatscounter.md +0 -25
- package/docs/api/player.clapprstatsevents.md +1 -4
- package/docs/api/player.clapprstatsmetrics.md +0 -3
- package/docs/api/player.clapprstatssettings.md +1 -4
- package/docs/api/player.clapprstatssettings.runeach.md +0 -3
- package/docs/api/player.clicktopause.md +0 -3
- package/docs/api/player.clips.destroy.md +0 -3
- package/docs/api/player.clips.disable.md +0 -3
- package/docs/api/player.clips.enable.md +0 -3
- package/docs/api/player.clips.gettext.md +0 -3
- package/docs/api/player.clips.md +1 -16
- package/docs/api/player.clips.render.md +0 -3
- package/docs/api/player.clips.supportedversion.md +0 -3
- package/docs/api/player.clips.version.md +0 -3
- package/docs/api/player.clipspluginsettings.md +1 -4
- package/docs/api/player.clipspluginsettings.text.md +0 -3
- package/docs/api/player.closedcaptions.hide.md +0 -3
- package/docs/api/player.closedcaptions.md +6 -5
- package/docs/api/player.closedcaptions.show.md +0 -3
- package/docs/api/player.closedcaptionspluginsettings.md +0 -3
- package/docs/api/player.cmcdconfig._constructor_.md +0 -3
- package/docs/api/player.cmcdconfig.exportids.md +0 -3
- package/docs/api/player.cmcdconfig.md +2 -5
- package/docs/api/player.cmcdconfigoptions.contentid.md +0 -3
- package/docs/api/player.cmcdconfigoptions.md +2 -5
- package/docs/api/player.cmcdconfigoptions.sessionid.md +0 -3
- package/docs/api/player.dvrcontrols.md +0 -3
- package/docs/api/player.extendedevents.md +0 -7
- package/docs/api/player.favicon.md +0 -3
- package/docs/api/player.faviconpluginsettings.faviconcolor.md +0 -3
- package/docs/api/player.faviconpluginsettings.md +1 -4
- package/docs/api/player.gearevents.md +1 -4
- package/docs/api/player.md +24 -43
- package/docs/api/player.mediacontrol.defaultsettings.md +5 -1
- package/docs/api/player.mediacontrol.getavailablepopupheight.md +20 -0
- package/docs/api/player.mediacontrol.md +14 -0
- package/docs/api/player.menuoption.md +0 -3
- package/docs/api/player.nerdstats._constructor_.md +0 -3
- package/docs/api/player.nerdstats.md +1 -4
- package/docs/api/player.pictureinpicture.attributes.md +0 -3
- package/docs/api/player.pictureinpicture.md +2 -7
- package/docs/api/player.playbackrateoption.md +0 -3
- package/docs/api/player.playbackratesettings.md +0 -3
- package/docs/api/player.poster.disable.md +0 -3
- package/docs/api/player.poster.enable.md +0 -3
- package/docs/api/player.poster.md +2 -5
- package/docs/api/player.posterpluginsettings.custom.md +0 -3
- package/docs/api/player.posterpluginsettings.md +4 -7
- package/docs/api/player.posterpluginsettings.showfornoop.md +0 -3
- package/docs/api/player.posterpluginsettings.showonvideoend.md +0 -3
- package/docs/api/player.posterpluginsettings.url.md +0 -3
- package/docs/api/player.qualitylevels.events.md +0 -3
- package/docs/api/player.qualitylevels.md +0 -5
- package/docs/api/player.qualitylevelspluginsettings.labels.md +0 -3
- package/docs/api/player.qualitylevelspluginsettings.md +2 -5
- package/docs/api/player.qualitylevelspluginsettings.restrictresolution.md +0 -3
- package/docs/api/player.skiptime.container.md +0 -3
- package/docs/api/player.skiptime.md +0 -9
- package/docs/api/player.skiptime.name.md +0 -3
- package/docs/api/player.skiptime.supportedversion.md +0 -3
- package/docs/api/player.volumefadeevents.md +0 -5
- package/docs/api/player.volumefadesettings.md +0 -3
- package/docs/api/player.zeptoresult.md +0 -3
- package/lib/Player.d.ts.map +1 -1
- package/lib/Player.js +0 -29
- package/lib/playback/HTML5Video.d.ts.map +1 -1
- package/lib/playback/HTML5Video.js +0 -18
- package/lib/playback/dash-playback/DashPlayback.d.ts.map +1 -1
- package/lib/playback/dash-playback/DashPlayback.js +0 -10
- package/lib/playback/hls-playback/HlsPlayback.d.ts +0 -1
- package/lib/playback/hls-playback/HlsPlayback.d.ts.map +1 -1
- package/lib/playback/hls-playback/HlsPlayback.js +22 -20
- package/lib/plugins/big-mute-button/BigMuteButton.d.ts +1 -1
- package/lib/plugins/big-mute-button/BigMuteButton.d.ts.map +1 -1
- package/lib/plugins/big-mute-button/BigMuteButton.js +1 -3
- package/lib/plugins/bottom-gear/BottomGear.d.ts +2 -2
- package/lib/plugins/bottom-gear/BottomGear.d.ts.map +1 -1
- package/lib/plugins/bottom-gear/BottomGear.js +4 -8
- package/lib/plugins/clappr-nerd-stats/NerdStats.d.ts +1 -1
- package/lib/plugins/clappr-nerd-stats/NerdStats.d.ts.map +1 -1
- package/lib/plugins/clappr-nerd-stats/NerdStats.js +3 -5
- package/lib/plugins/clappr-stats/ClapprStats.d.ts +3 -3
- package/lib/plugins/clappr-stats/ClapprStats.js +2 -2
- package/lib/plugins/clappr-stats/types.d.ts +5 -5
- package/lib/plugins/clappr-stats/types.js +3 -3
- package/lib/plugins/click-to-pause/ClickToPause.d.ts +1 -1
- package/lib/plugins/click-to-pause/ClickToPause.d.ts.map +1 -1
- package/lib/plugins/click-to-pause/ClickToPause.js +3 -7
- package/lib/plugins/clips/Clips.d.ts +2 -2
- package/lib/plugins/clips/Clips.d.ts.map +1 -1
- package/lib/plugins/clips/Clips.js +2 -6
- package/lib/plugins/cmcd-config/CmcdConfig.d.ts +2 -2
- package/lib/plugins/cmcd-config/CmcdConfig.js +1 -1
- package/lib/plugins/context-menu/ContextMenu.d.ts +1 -1
- package/lib/plugins/dvr-controls/DvrControls.d.ts +1 -1
- package/lib/plugins/dvr-controls/DvrControls.d.ts.map +1 -1
- package/lib/plugins/dvr-controls/DvrControls.js +3 -4
- package/lib/plugins/error-screen/ErrorScreen.d.ts.map +1 -1
- package/lib/plugins/error-screen/ErrorScreen.js +0 -3
- package/lib/plugins/favicon/Favicon.d.ts +2 -2
- package/lib/plugins/favicon/Favicon.js +1 -1
- package/lib/plugins/level-selector/QualityLevels.d.ts +2 -2
- package/lib/plugins/level-selector/QualityLevels.d.ts.map +1 -1
- package/lib/plugins/level-selector/QualityLevels.js +3 -11
- package/lib/plugins/media-control/MediaControl.d.ts +2 -5
- package/lib/plugins/media-control/MediaControl.d.ts.map +1 -1
- package/lib/plugins/media-control/MediaControl.js +4 -6
- package/lib/plugins/picture-in-picture/PictureInPicture.d.ts +3 -3
- package/lib/plugins/picture-in-picture/PictureInPicture.js +3 -3
- package/lib/plugins/playback-rate/PlaybackRate.d.ts +2 -2
- package/lib/plugins/playback-rate/PlaybackRate.d.ts.map +1 -1
- package/lib/plugins/playback-rate/PlaybackRate.js +0 -10
- package/lib/plugins/poster/Poster.d.ts +2 -2
- package/lib/plugins/poster/Poster.d.ts.map +1 -1
- package/lib/plugins/poster/Poster.js +3 -19
- package/lib/plugins/seek-time/SeekTime.d.ts.map +1 -1
- package/lib/plugins/seek-time/SeekTime.js +1 -6
- package/lib/plugins/skip-time/SkipTime.d.ts +1 -1
- package/lib/plugins/skip-time/SkipTime.d.ts.map +1 -1
- package/lib/plugins/skip-time/SkipTime.js +3 -15
- package/lib/plugins/source-controller/SourceController.d.ts.map +1 -1
- package/lib/plugins/source-controller/SourceController.js +0 -5
- package/lib/plugins/spinner-three-bounce/SpinnerThreeBounce.d.ts.map +1 -1
- package/lib/plugins/spinner-three-bounce/SpinnerThreeBounce.js +2 -18
- package/lib/plugins/subtitles/ClosedCaptions.d.ts +10 -2
- package/lib/plugins/subtitles/ClosedCaptions.d.ts.map +1 -1
- package/lib/plugins/subtitles/ClosedCaptions.js +12 -2
- package/lib/plugins/volume-fade/VolumeFade.d.ts +2 -2
- package/lib/plugins/volume-fade/VolumeFade.js +1 -1
- package/lib/types.d.ts +1 -1
- package/package.json +1 -1
- package/src/Player.ts +0 -30
- package/src/playback/HTML5Video.ts +0 -18
- package/src/playback/dash-playback/DashPlayback.ts +0 -11
- package/src/playback/hls-playback/HlsPlayback.ts +22 -29
- package/src/plugins/big-mute-button/BigMuteButton.ts +1 -4
- package/src/plugins/bottom-gear/BottomGear.ts +4 -8
- package/src/plugins/clappr-nerd-stats/NerdStats.ts +3 -5
- package/src/plugins/clappr-stats/ClapprStats.ts +3 -3
- package/src/plugins/clappr-stats/types.ts +5 -5
- package/src/plugins/click-to-pause/ClickToPause.ts +3 -8
- package/src/plugins/clips/Clips.ts +4 -7
- package/src/plugins/cmcd-config/CmcdConfig.ts +2 -2
- package/src/plugins/context-menu/ContextMenu.ts +1 -1
- package/src/plugins/dvr-controls/DvrControls.ts +3 -4
- package/src/plugins/error-screen/ErrorScreen.ts +0 -3
- package/src/plugins/favicon/Favicon.ts +2 -2
- package/src/plugins/level-selector/QualityLevels.ts +4 -12
- package/src/plugins/media-control/MediaControl.ts +4 -10
- package/src/plugins/picture-in-picture/PictureInPicture.ts +3 -3
- package/src/plugins/playback-rate/PlaybackRate.ts +2 -14
- package/src/plugins/poster/Poster.ts +4 -21
- package/src/plugins/seek-time/SeekTime.ts +2 -6
- package/src/plugins/skip-time/SkipTime.ts +3 -15
- package/src/plugins/source-controller/SourceController.ts +0 -5
- package/src/plugins/spinner-three-bounce/SpinnerThreeBounce.ts +2 -18
- package/src/plugins/subtitles/ClosedCaptions.ts +13 -3
- package/src/plugins/volume-fade/VolumeFade.ts +2 -2
- package/src/types.ts +1 -1
- package/temp/player.api.json +157 -152
- package/tsconfig.tsbuildinfo +1 -1
- package/docs/api/player.mediacontrolpluginsettings.md +0 -13
|
@@ -4,9 +4,6 @@
|
|
|
4
4
|
|
|
5
5
|
## PosterPluginSettings interface
|
|
6
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
7
|
Config options for the [Poster](./player.poster.md) plugin
|
|
11
8
|
|
|
12
9
|
**Signature:**
|
|
@@ -53,7 +50,7 @@ string
|
|
|
53
50
|
|
|
54
51
|
</td><td>
|
|
55
52
|
|
|
56
|
-
|
|
53
|
+
_(Optional)_ Custom CSS background
|
|
57
54
|
|
|
58
55
|
|
|
59
56
|
</td></tr>
|
|
@@ -72,7 +69,7 @@ boolean
|
|
|
72
69
|
|
|
73
70
|
</td><td>
|
|
74
71
|
|
|
75
|
-
|
|
72
|
+
_(Optional)_ Whether to show the poster image when the playback is noop (i.e., when there is no appropriate video playback engine for current media sources set or the media sources are not set at all)
|
|
76
73
|
|
|
77
74
|
|
|
78
75
|
</td></tr>
|
|
@@ -91,7 +88,7 @@ boolean
|
|
|
91
88
|
|
|
92
89
|
</td><td>
|
|
93
90
|
|
|
94
|
-
|
|
91
|
+
_(Optional)_ Whether to show the poster after playback has ended, by default `true`
|
|
95
92
|
|
|
96
93
|
|
|
97
94
|
</td></tr>
|
|
@@ -110,7 +107,7 @@ string
|
|
|
110
107
|
|
|
111
108
|
</td><td>
|
|
112
109
|
|
|
113
|
-
|
|
110
|
+
_(Optional)_ Poster image URL
|
|
114
111
|
|
|
115
112
|
|
|
116
113
|
</td></tr>
|
|
@@ -4,9 +4,6 @@
|
|
|
4
4
|
|
|
5
5
|
## PosterPluginSettings.showForNoOp property
|
|
6
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
7
|
Whether to show the poster image when the playback is noop (i.e., when there is no appropriate video playback engine for current media sources set or the media sources are not set at all)
|
|
11
8
|
|
|
12
9
|
**Signature:**
|
|
@@ -4,9 +4,6 @@
|
|
|
4
4
|
|
|
5
5
|
## PosterPluginSettings.showOnVideoEnd property
|
|
6
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
7
|
Whether to show the poster after playback has ended, by default `true`
|
|
11
8
|
|
|
12
9
|
**Signature:**
|
|
@@ -4,9 +4,6 @@
|
|
|
4
4
|
|
|
5
5
|
## QualityLevels class
|
|
6
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
7
|
`PLUGIN` that provides a UI to select the desired quality level of the playback.
|
|
11
8
|
|
|
12
9
|
**Signature:**
|
|
@@ -80,8 +77,6 @@ Description
|
|
|
80
77
|
|
|
81
78
|
</td><td>
|
|
82
79
|
|
|
83
|
-
**_(BETA)_**
|
|
84
|
-
|
|
85
80
|
|
|
86
81
|
</td></tr>
|
|
87
82
|
</tbody></table>
|
|
@@ -4,9 +4,6 @@
|
|
|
4
4
|
|
|
5
5
|
## QualityLevelsPluginSettings.labels property
|
|
6
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
7
|
The labels to show in the level selector.
|
|
11
8
|
|
|
12
9
|
**Signature:**
|
|
@@ -4,9 +4,6 @@
|
|
|
4
4
|
|
|
5
5
|
## QualityLevelsPluginSettings interface
|
|
6
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
7
|
Configuration options for the [QualityLevels](./player.qualitylevels.md) plugin.
|
|
11
8
|
|
|
12
9
|
**Signature:**
|
|
@@ -53,7 +50,7 @@ Record<number, string>
|
|
|
53
50
|
|
|
54
51
|
</td><td>
|
|
55
52
|
|
|
56
|
-
|
|
53
|
+
_(Optional)_ The labels to show in the level selector.
|
|
57
54
|
|
|
58
55
|
|
|
59
56
|
</td></tr>
|
|
@@ -72,7 +69,7 @@ number
|
|
|
72
69
|
|
|
73
70
|
</td><td>
|
|
74
71
|
|
|
75
|
-
|
|
72
|
+
_(Optional)_ The maximum resolution to allow in the level selector.
|
|
76
73
|
|
|
77
74
|
|
|
78
75
|
</td></tr>
|
|
@@ -4,9 +4,6 @@
|
|
|
4
4
|
|
|
5
5
|
## QualityLevelsPluginSettings.restrictResolution property
|
|
6
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
7
|
The maximum resolution to allow in the level selector.
|
|
11
8
|
|
|
12
9
|
**Signature:**
|
|
@@ -4,9 +4,6 @@
|
|
|
4
4
|
|
|
5
5
|
## SkipTime class
|
|
6
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
7
|
`PLUGIN` that allows skipping time by tapping on the left or right side of the video.
|
|
11
8
|
|
|
12
9
|
**Signature:**
|
|
@@ -56,8 +53,6 @@ any
|
|
|
56
53
|
|
|
57
54
|
</td><td>
|
|
58
55
|
|
|
59
|
-
**_(BETA)_**
|
|
60
|
-
|
|
61
56
|
|
|
62
57
|
</td></tr>
|
|
63
58
|
<tr><td>
|
|
@@ -77,8 +72,6 @@ string
|
|
|
77
72
|
|
|
78
73
|
</td><td>
|
|
79
74
|
|
|
80
|
-
**_(BETA)_**
|
|
81
|
-
|
|
82
75
|
|
|
83
76
|
</td></tr>
|
|
84
77
|
<tr><td>
|
|
@@ -98,8 +91,6 @@ string
|
|
|
98
91
|
|
|
99
92
|
</td><td>
|
|
100
93
|
|
|
101
|
-
**_(BETA)_**
|
|
102
|
-
|
|
103
94
|
|
|
104
95
|
</td></tr>
|
|
105
96
|
</tbody></table>
|
|
@@ -4,9 +4,6 @@
|
|
|
4
4
|
|
|
5
5
|
## VolumeFadeEvents enum
|
|
6
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
7
|
Events emitted by the VolumeFade plugin.
|
|
11
8
|
|
|
12
9
|
**Signature:**
|
|
@@ -45,8 +42,6 @@ FADE
|
|
|
45
42
|
|
|
46
43
|
</td><td>
|
|
47
44
|
|
|
48
|
-
**_(BETA)_**
|
|
49
|
-
|
|
50
45
|
|
|
51
46
|
</td></tr>
|
|
52
47
|
</tbody></table>
|
package/lib/Player.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Player.d.ts","sourceRoot":"","sources":["../src/Player.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EACV,aAAa,EAEb,uBAAuB,EACxB,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAGtD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAEjE;;GAEG;AACH,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,WAAW,IACjD,CAAC,SAAS,WAAW,CAAC,IAAI,GACtB,CAAC,MAAM,CAAC,GACR,CAAC,SAAS,WAAW,CAAC,YAAY,GAClC,CAAC,MAAM,CAAC,GACR,CAAC,SAAS,WAAW,CAAC,UAAU,GAChC,CAAC,YAAY,CAAC,GACd,CAAC,SAAS,WAAW,CAAC,MAAM,GAC5B,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,GACnC,CAAC,SAAS,WAAW,CAAC,UAAU,GAChC,CAAC,OAAO,CAAC,GACT,CAAC,SAAS,WAAW,CAAC,KAAK,GAC3B,CAAC,aAAa,CAAC,GACf,EAAE,CAAA;AAER;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,WAAW,IAAI,CACtD,GAAG,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC,KAC1B,IAAI,CAAA;AAeT;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,KAAK,GAAG,aAAa,CAAA;AAI3D;;;;;;;GAOG;AACH,qBAAa,MAAM;IACjB,OAAO,CAAC,MAAM,CAAgC;IAE9C,OAAO,CAAC,OAAO,CAAqB;IAEpC,OAAO,CAAC,MAAM,CAA4B;IAE1C,OAAO,CAAC,KAAK,CAAQ;IAErB,OAAO,CAAC,QAAQ,CAA2B;gBAE/B,MAAM,EAAE,YAAY;IAOhC;;;;OAIG;IACH,EAAE,CAAC,CAAC,SAAS,WAAW,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAIlE;;;;OAIG;IACH,GAAG,CAAC,CAAC,SAAS,WAAW,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAInE;;;;;;;;;OASG;IACH,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC;IAIvC;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,QAAQ,CAAC,aAAa,EAAE,WAAW,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"Player.d.ts","sourceRoot":"","sources":["../src/Player.ts"],"names":[],"mappings":"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"}
|
package/lib/Player.js
CHANGED
|
@@ -93,9 +93,6 @@ export class Player {
|
|
|
93
93
|
* ```
|
|
94
94
|
*/
|
|
95
95
|
attachTo(playerElement) {
|
|
96
|
-
trace(`${T} attachTo`, {
|
|
97
|
-
player: !!this.player,
|
|
98
|
-
});
|
|
99
96
|
assert.ok(!this.player, 'Player already initialized');
|
|
100
97
|
assert.ok(playerElement, 'Player container element is required');
|
|
101
98
|
if (this.config.debug === 'all' || this.config.debug === 'clappr') {
|
|
@@ -103,9 +100,6 @@ export class Player {
|
|
|
103
100
|
}
|
|
104
101
|
const coreOpts = this.buildCoreOptions(playerElement);
|
|
105
102
|
const { core, container } = Player.getRegisteredPlugins();
|
|
106
|
-
trace(`${T} init`, {
|
|
107
|
-
registeredPlaybacks: Loader.registeredPlaybacks.map((p) => p.prototype.name),
|
|
108
|
-
});
|
|
109
103
|
coreOpts.plugins = {
|
|
110
104
|
core: Object.values(core),
|
|
111
105
|
container: Object.values(container),
|
|
@@ -117,9 +111,6 @@ export class Player {
|
|
|
117
111
|
* Destroys the player, releasing all resources and unmounting its UI from the DOM.
|
|
118
112
|
*/
|
|
119
113
|
destroy() {
|
|
120
|
-
trace(`${T} destroy`, {
|
|
121
|
-
player: !!this.player,
|
|
122
|
-
});
|
|
123
114
|
if (this.player) {
|
|
124
115
|
this.player.destroy();
|
|
125
116
|
this.player = null;
|
|
@@ -304,12 +295,6 @@ export class Player {
|
|
|
304
295
|
this.config = $.extend(true, this.config, config);
|
|
305
296
|
}
|
|
306
297
|
initPlayer(coreOptions) {
|
|
307
|
-
trace(`${T} initPlayer`, {
|
|
308
|
-
autoPlay: coreOptions.autoPlay,
|
|
309
|
-
sources: coreOptions.sources,
|
|
310
|
-
player: !!this.player,
|
|
311
|
-
// TODO selected options
|
|
312
|
-
});
|
|
313
298
|
const player = new PlayerClappr(coreOptions);
|
|
314
299
|
this.player = player;
|
|
315
300
|
this.bindCoreListeners();
|
|
@@ -442,13 +427,6 @@ export class Player {
|
|
|
442
427
|
assert.ok(this.player, 'Player is not initialized');
|
|
443
428
|
const core = this.player.core;
|
|
444
429
|
core.on(ClapprEvents.CORE_SCREEN_ORIENTATION_CHANGED, ({ orientation }) => {
|
|
445
|
-
trace(`${T} on CORE_SCREEN_ORIENTATION_CHANGED`, {
|
|
446
|
-
orientation,
|
|
447
|
-
rootNode: {
|
|
448
|
-
width: this.rootNode?.clientWidth,
|
|
449
|
-
height: this.rootNode?.clientHeight,
|
|
450
|
-
},
|
|
451
|
-
});
|
|
452
430
|
if (Browser.isiOS && this.rootNode) {
|
|
453
431
|
core?.resize({
|
|
454
432
|
width: this.rootNode.clientWidth,
|
|
@@ -457,16 +435,9 @@ export class Player {
|
|
|
457
435
|
}
|
|
458
436
|
}, null);
|
|
459
437
|
core.on(ClapprEvents.CORE_RESIZE, ({ width, height }) => {
|
|
460
|
-
trace(`${T} on CORE_RESIZE`, {
|
|
461
|
-
width,
|
|
462
|
-
height,
|
|
463
|
-
});
|
|
464
438
|
this.safeTriggerEvent(PlayerEvent.Resize, { width, height });
|
|
465
439
|
}, null);
|
|
466
440
|
core.on(ClapprEvents.CORE_FULLSCREEN, (isFullscreen) => {
|
|
467
|
-
trace(`${T} CORE_FULLSCREEN`, {
|
|
468
|
-
isFullscreen,
|
|
469
|
-
});
|
|
470
441
|
this.safeTriggerEvent(PlayerEvent.Fullscreen, isFullscreen);
|
|
471
442
|
}, null);
|
|
472
443
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HTML5Video.d.ts","sourceRoot":"","sources":["../../src/playback/HTML5Video.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAG3C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAGhD,OAAO,EAAE,UAAU,EAAE,MAAM,8CAA8C,CAAA;AAMzE,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,YAAY;IAClD,OAAO,CAAC,YAAY,CAAuB;IAE3C;;OAEG;IACM,WAAW,CAAC,SAAS,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,YAAY;
|
|
1
|
+
{"version":3,"file":"HTML5Video.d.ts","sourceRoot":"","sources":["../../src/playback/HTML5Video.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAG3C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAGhD,OAAO,EAAE,UAAU,EAAE,MAAM,8CAA8C,CAAA;AAMzE,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,YAAY;IAClD,OAAO,CAAC,YAAY,CAAuB;IAE3C;;OAEG;IACM,WAAW,CAAC,SAAS,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,YAAY;IAkBlD,UAAU;IAIV,QAAQ;IAQR,sBAAsB;IAiBtB,UAAU;IAQV,QAAQ;IAQjB,IAAI,WAAW,IAAI,UAAU,EAAE,CAgB9B;IAGD,IAAI,iBAAiB,sBAiBpB;IAED,gBAAgB,CAAC,EAAE,EAAE,MAAM;CAa5B"}
|
|
@@ -10,9 +10,6 @@ export default class HTML5Video extends BasePlayback {
|
|
|
10
10
|
* @internal
|
|
11
11
|
*/
|
|
12
12
|
createError(errorData, options) {
|
|
13
|
-
trace(`${T} createError`, {
|
|
14
|
-
errorData: { ...errorData },
|
|
15
|
-
});
|
|
16
13
|
const i18n = this.i18n ||
|
|
17
14
|
// @ts-ignore
|
|
18
15
|
(this.core && this.core.i18n) ||
|
|
@@ -26,11 +23,9 @@ export default class HTML5Video extends BasePlayback {
|
|
|
26
23
|
return super.createError(errorData, { ...options, useCodePrefix: false });
|
|
27
24
|
}
|
|
28
25
|
_onWaiting() {
|
|
29
|
-
trace(`${T} _onWaiting`);
|
|
30
26
|
super._onWaiting();
|
|
31
27
|
}
|
|
32
28
|
_onEnded() {
|
|
33
|
-
trace(`${T} _onEnded`);
|
|
34
29
|
if (this.stallTimerId) {
|
|
35
30
|
clearTimeout(this.stallTimerId);
|
|
36
31
|
this.stallTimerId = null;
|
|
@@ -38,15 +33,8 @@ export default class HTML5Video extends BasePlayback {
|
|
|
38
33
|
super._onEnded();
|
|
39
34
|
}
|
|
40
35
|
_handleBufferingEvents() {
|
|
41
|
-
trace(`${T} _handleBufferingEvents`, {
|
|
42
|
-
networkState: this.el.networkState,
|
|
43
|
-
});
|
|
44
36
|
if (!this.stallTimerId) {
|
|
45
37
|
this.stallTimerId = setTimeout(() => {
|
|
46
|
-
trace(`${T} _handleBufferingEvents stall timeout`, {
|
|
47
|
-
buffering: this.buffering,
|
|
48
|
-
ended: this.ended,
|
|
49
|
-
});
|
|
50
38
|
this.stallTimerId = null;
|
|
51
39
|
const error = this.createError({
|
|
52
40
|
code: PlaybackErrorCode.MediaSourceUnavailable,
|
|
@@ -61,7 +49,6 @@ export default class HTML5Video extends BasePlayback {
|
|
|
61
49
|
super._handleBufferingEvents();
|
|
62
50
|
}
|
|
63
51
|
_onPlaying() {
|
|
64
|
-
trace(`${T} _onPlaying`);
|
|
65
52
|
if (this.stallTimerId) {
|
|
66
53
|
clearTimeout(this.stallTimerId);
|
|
67
54
|
this.stallTimerId = null;
|
|
@@ -69,7 +56,6 @@ export default class HTML5Video extends BasePlayback {
|
|
|
69
56
|
super._onPlaying();
|
|
70
57
|
}
|
|
71
58
|
_onPause() {
|
|
72
|
-
trace(`${T} _onPause`);
|
|
73
59
|
super._onPause();
|
|
74
60
|
if (this.stallTimerId) {
|
|
75
61
|
clearTimeout(this.stallTimerId);
|
|
@@ -79,7 +65,6 @@ export default class HTML5Video extends BasePlayback {
|
|
|
79
65
|
get audioTracks() {
|
|
80
66
|
const tracks = this.el.audioTracks;
|
|
81
67
|
const supported = !!tracks;
|
|
82
|
-
trace(`${T} get audioTracks`, { supported });
|
|
83
68
|
const retval = [];
|
|
84
69
|
if (supported) {
|
|
85
70
|
for (let i = 0; i < tracks.length; i++) {
|
|
@@ -98,9 +83,6 @@ export default class HTML5Video extends BasePlayback {
|
|
|
98
83
|
get currentAudioTrack() {
|
|
99
84
|
const tracks = this.el.audioTracks;
|
|
100
85
|
const supported = !!tracks;
|
|
101
|
-
trace(`${T} get currentAudioTrack`, {
|
|
102
|
-
supported,
|
|
103
|
-
});
|
|
104
86
|
if (supported) {
|
|
105
87
|
for (let i = 0; i < tracks.length; i++) {
|
|
106
88
|
const track = tracks[i];
|
|
@@ -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,EACZ,SAAS,EACV,MAAM,yBAAyB,CAAA;AAEhC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEjD,OAAO,EAAE,UAAU,EAAE,MAAM,8CAA8C,CAAA;AAMzE,KAAK,YAAY,GACb,OAAO,QAAQ,CAAC,GAAG,GACnB,OAAO,QAAQ,CAAC,IAAI,GACpB,OAAO,QAAQ,CAAC,GAAG,GACnB,OAAO,QAAQ,CAAC,KAAK,CAAA;AAEzB,KAAK,YAAY,GAAG,MAAM,CAAA;AAE1B,KAAK,oBAAoB,GAAG;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAID,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,YAAY;IACpD,OAAO,EAAE,YAAY,EAAE,GAAG,IAAI,CAAO;IAErC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAO;IAKnC,mCAAmC,EAAE,OAAO,CAAQ;IAEpD,aAAa,EAAE,OAAO,CAAQ;IAI9B,uBAAuB,EAAE,MAAM,CAAI;IASnC,wBAAwB,EAAE,MAAM,CAAI;IAEpC,aAAa,EAAE,YAAY,CAAe;IAG1C,aAAa,EAAE,YAAY,GAAG,IAAI,CAAO;IAEzC,gBAAgB,EAAE,SAAS,CAAI;IAE/B,KAAK,EAAE,MAAM,CAAC,gBAAgB,GAAG,IAAI,CAAO;IAE5C,2BAA2B,EAAE,MAAM,CAAI;IAEvC,aAAa,EAAE,SAAS,GAAG,IAAI,CAAO;IAEtC,eAAe,EAAE,YAAY,CAA2B;IAIxD,0BAA0B,EAAE,oBAAoB,GAAG,IAAI,CAAO;IAI9D,wBAAwB,EAAE,oBAAoB,GAAG,IAAI,CAAO;IAE5D,kBAAkB,UAAQ;IAE1B,YAAY,EAAE,aAAa,GAAG,IAAI,CAAO;IAEzC,gBAAgB,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,GAAG,IAAI,CAAO;IAE9D,IAAI,IAAI,WAEP;IAED,IAAI,MAAM,IAAI,YAAY,EAAE,CAE3B;IAED,IAAI,YAAY,IAAI,MAAM,CAMzB;IAED,IAAI,OAAO,YAEV;IAED,IAAI,YAAY,CAAC,EAAE,EAAE,MAAM,EAoC1B;IAED,IAAI,UAAU,WASb;IAED,IAAI,IAAI,WAEP;IAID,IAAI,sBAAsB,WAczB;IAID,IAAI,oBAAoB,WAgBvB;IAED,IAAI,SAAS,WAKZ;gBAEW,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,GAAG;IAOzD,MAAM;IA6FN,MAAM;IAMN,MAAM;YAKW,SAAS;IAI1B,qBAAqB;IAQrB,oBAAoB;IAapB,WAAW,IAAI,SAAS;IAQxB,cAAc,IAAI,SAAS;IAO3B,kBAAkB,IAAI,SAAS;IAItB,cAAc,CAAC,UAAU,EAAE,MAAM;IAejC,IAAI,CAAC,IAAI,EAAE,SAAS;IAgB7B,eAAe;IAIf,UAAU,CAAC,MAAM,EAAE,OAAO;IAMjB,eAAe;IAgBxB,OAAO,CAAC,gBAAgB,CAGvB;IAED,OAAO,CAAC,eAAe,
|
|
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,EACZ,SAAS,EACV,MAAM,yBAAyB,CAAA;AAEhC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEjD,OAAO,EAAE,UAAU,EAAE,MAAM,8CAA8C,CAAA;AAMzE,KAAK,YAAY,GACb,OAAO,QAAQ,CAAC,GAAG,GACnB,OAAO,QAAQ,CAAC,IAAI,GACpB,OAAO,QAAQ,CAAC,GAAG,GACnB,OAAO,QAAQ,CAAC,KAAK,CAAA;AAEzB,KAAK,YAAY,GAAG,MAAM,CAAA;AAE1B,KAAK,oBAAoB,GAAG;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAID,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,YAAY;IACpD,OAAO,EAAE,YAAY,EAAE,GAAG,IAAI,CAAO;IAErC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAO;IAKnC,mCAAmC,EAAE,OAAO,CAAQ;IAEpD,aAAa,EAAE,OAAO,CAAQ;IAI9B,uBAAuB,EAAE,MAAM,CAAI;IASnC,wBAAwB,EAAE,MAAM,CAAI;IAEpC,aAAa,EAAE,YAAY,CAAe;IAG1C,aAAa,EAAE,YAAY,GAAG,IAAI,CAAO;IAEzC,gBAAgB,EAAE,SAAS,CAAI;IAE/B,KAAK,EAAE,MAAM,CAAC,gBAAgB,GAAG,IAAI,CAAO;IAE5C,2BAA2B,EAAE,MAAM,CAAI;IAEvC,aAAa,EAAE,SAAS,GAAG,IAAI,CAAO;IAEtC,eAAe,EAAE,YAAY,CAA2B;IAIxD,0BAA0B,EAAE,oBAAoB,GAAG,IAAI,CAAO;IAI9D,wBAAwB,EAAE,oBAAoB,GAAG,IAAI,CAAO;IAE5D,kBAAkB,UAAQ;IAE1B,YAAY,EAAE,aAAa,GAAG,IAAI,CAAO;IAEzC,gBAAgB,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,GAAG,IAAI,CAAO;IAE9D,IAAI,IAAI,WAEP;IAED,IAAI,MAAM,IAAI,YAAY,EAAE,CAE3B;IAED,IAAI,YAAY,IAAI,MAAM,CAMzB;IAED,IAAI,OAAO,YAEV;IAED,IAAI,YAAY,CAAC,EAAE,EAAE,MAAM,EAoC1B;IAED,IAAI,UAAU,WASb;IAED,IAAI,IAAI,WAEP;IAID,IAAI,sBAAsB,WAczB;IAID,IAAI,oBAAoB,WAgBvB;IAED,IAAI,SAAS,WAKZ;gBAEW,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,GAAG;IAOzD,MAAM;IA6FN,MAAM;IAMN,MAAM;YAKW,SAAS;IAI1B,qBAAqB;IAQrB,oBAAoB;IAapB,WAAW,IAAI,SAAS;IAQxB,cAAc,IAAI,SAAS;IAO3B,kBAAkB,IAAI,SAAS;IAItB,cAAc,CAAC,UAAU,EAAE,MAAM;IAejC,IAAI,CAAC,IAAI,EAAE,SAAS;IAgB7B,eAAe;IAIf,UAAU,CAAC,MAAM,EAAE,OAAO;IAMjB,eAAe;IAgBxB,OAAO,CAAC,gBAAgB,CAGvB;IAED,OAAO,CAAC,eAAe,CAkCtB;IAED,OAAO,CAAC,YAAY;IAiBX,aAAa;IAqBb,iBAAiB;IAW1B,IAAI,UAAU,YAQb;IAEQ,WAAW;IAgBX,IAAI;IAMJ,KAAK;IAUL,IAAI;IAQb,OAAO,CAAC,eAAe;IAgBd,OAAO;IAMhB,mBAAmB;IASnB,WAAW,CAAC,MAAM,EAAE,eAAe,EAAE;IAarC,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,gBAAgB;IAQxB,eAAe;IAIf,aAAa;IAIb,OAAO,CAAC,QAAQ;IAMhB,eAAe,CAAC,IAAI,EAAE,MAAM;IAI5B,IAAI,WAAW,IAAI,UAAU,EAAE,CAI9B;IAGD,IAAI,iBAAiB,IAAI,UAAU,GAAG,IAAI,CAOzC;IAEQ,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAQlC,IAAI,CAAC,MAAM,EAAE,MAAM;IAQ5B,OAAO,CAAC,gBAAgB;CAOzB"}
|
|
@@ -289,7 +289,6 @@ export default class DashPlayback extends BasePlayback {
|
|
|
289
289
|
trace(`${T} _onPlaybackError`, { event });
|
|
290
290
|
};
|
|
291
291
|
_onDASHJSSError = (event) => {
|
|
292
|
-
trace(`${T} _onDASHJSSError`, { event });
|
|
293
292
|
this._stopTimeUpdateTimer();
|
|
294
293
|
// Note that the other error types are deprecated
|
|
295
294
|
const e = event.error;
|
|
@@ -324,7 +323,6 @@ export default class DashPlayback extends BasePlayback {
|
|
|
324
323
|
}
|
|
325
324
|
};
|
|
326
325
|
triggerError(error) {
|
|
327
|
-
trace(`${T} triggerError`, { error });
|
|
328
326
|
// this triggers Events.ERROR to be handled by the UI
|
|
329
327
|
this.trigger(Events.PLAYBACK_ERROR, this.createError(error, {
|
|
330
328
|
useCodePrefix: false,
|
|
@@ -363,14 +361,8 @@ export default class DashPlayback extends BasePlayback {
|
|
|
363
361
|
}
|
|
364
362
|
get dvrEnabled() {
|
|
365
363
|
if (!this._dash) {
|
|
366
|
-
trace(`${T} dvrEnable no dash player instance`);
|
|
367
364
|
return false;
|
|
368
365
|
}
|
|
369
|
-
trace(`${T} get.dvrEnabled`, {
|
|
370
|
-
dvrWindowSize: this._dash?.getDVRWindowSize(),
|
|
371
|
-
minDvrSize: this._minDvrSize,
|
|
372
|
-
playbackType: this.getPlaybackType(),
|
|
373
|
-
});
|
|
374
366
|
return (this._dash?.getDVRWindowSize() >= this._minDvrSize &&
|
|
375
367
|
this.getPlaybackType() === Playback.LIVE);
|
|
376
368
|
}
|
|
@@ -388,7 +380,6 @@ export default class DashPlayback extends BasePlayback {
|
|
|
388
380
|
this.trigger(Events.PLAYBACK_PROGRESS, progress, {});
|
|
389
381
|
}
|
|
390
382
|
play() {
|
|
391
|
-
trace(`${T} play`, { dash: !!this._dash });
|
|
392
383
|
!this._dash && this._setup();
|
|
393
384
|
super.play();
|
|
394
385
|
this._startTimeUpdateTimer();
|
|
@@ -474,7 +465,6 @@ export default class DashPlayback extends BasePlayback {
|
|
|
474
465
|
}
|
|
475
466
|
// @ts-expect-error
|
|
476
467
|
get currentAudioTrack() {
|
|
477
|
-
trace(`${T} get currentAudioTrack`);
|
|
478
468
|
assert.ok(this._dash, 'DASH.js MediaPlayer is not initialized');
|
|
479
469
|
const t = this._dash.getCurrentTrackFor('audio');
|
|
480
470
|
if (!t) {
|
|
@@ -97,7 +97,6 @@ export default class HlsPlayback extends BasePlayback {
|
|
|
97
97
|
private _onLevelUpdated;
|
|
98
98
|
_onFragmentChanged(evt: HlsEvents.FRAG_CHANGED, data: FragChangedData): void;
|
|
99
99
|
_onFragmentLoaded(evt: HlsEvents.FRAG_LOADED, data: FragLoadedData): void;
|
|
100
|
-
_onSubtitleLoaded(): void;
|
|
101
100
|
_onLevelSwitch(evt: HlsEvents.LEVEL_SWITCHING, data: LevelSwitchingData): void;
|
|
102
101
|
_onLevelSwitched(evt: HlsEvents.LEVEL_SWITCHED, data: {
|
|
103
102
|
level: number;
|
|
@@ -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,EAEb,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAG7C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAGjD,OAAO,EAAE,UAAU,EAAE,MAAM,8CAA8C,CAAA;AAoCzE,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,YAAY;IACnD,OAAO,CAAC,UAAU,CAAQ;IAE1B,OAAO,CAAC,gBAAgB,CAAQ;IAEhC,OAAO,CAAC,gBAAgB,CAAwB;IAEhD,OAAO,CAAC,aAAa,CAAsB;IAE3C,OAAO,CAAC,mCAAmC,CAAQ;IAEnD,OAAO,CAAC,8BAA8B,CAAI;IAE1C,OAAO,CAAC,cAAc,CAAQ;IAE9B,OAAO,CAAC,IAAI,CAAqB;IAEjC,OAAO,CAAC,aAAa,CAAsB;IAE3C,OAAO,CAAC,eAAe,CAA4B;IAEnD,OAAO,CAAC,OAAO,CAA8B;IAE7C,OAAO,CAAC,0BAA0B,CAA+B;IAEjE,OAAO,CAAC,wBAAwB,CAA+B;IAE/D,OAAO,CAAC,eAAe,CAAQ;IAE/B,OAAO,CAAC,uBAAuB,CAAI;IAEnC,OAAO,CAAC,aAAa,CAA6C;IAElE,OAAO,CAAC,aAAa,CAA4B;IAEjD,OAAO,CAAC,wBAAwB,CAAI;IAEpC,OAAO,CAAC,gBAAgB,CAAsB;IAE9C,OAAO,CAAC,yBAAyB,CAAI;IAErC,OAAO,CAAC,yBAAyB,CAAQ;IAEzC,OAAO,CAAC,uBAAuB,CAAQ;IAEvC,OAAO,CAAC,sBAAsB,CAAsB;IAEpD,OAAO,CAAC,gBAAgB,CAAuB;IAE/C;;OAEG;IACH,IAAI,IAAI,WAEP;IAED;;OAEG;IACH,IAAI,gBAAgB;;MAEnB;IAED,IAAI,MAAM,mBAET;IAED,IAAI,YAAY,IAIK,MAAM,CAF1B;IAED,IAAI,YAAY,CAAC,EAAE,EAAE,MAAM,EAS1B;IAED,IAAI,OAAO,WAGV;IAED,IAAI,sBAAsB,SAIzB;IAED,OAAO,KAAK,UAAU,GASrB;IAED,OAAO,KAAK,IAAI,GAEf;IAID,OAAO,KAAK,sBAAsB,GAcjC;IAID,IAAI,oBAAoB,WAevB;IAED,OAAO,KAAK,SAAS,GAEpB;IAmBD,OAAO,KAAK,2BAA2B,GAMtC;IAED,IAAI,iBAAiB,kBAEpB;IAED,IAAI,cAAc;;MAEjB;IAED,IAAI,eAAe,QAKlB;IAED,IAAI,WAAW,QAEd;IAED,IAAI,gBAAgB,kBAcnB;IAED,MAAM,KAAK,KAAK,iBAEf;gBAEW,GAAG,IAAI,EAAE,GAAG,EAAE;IAU1B,OAAO,CAAC,gBAAgB;IAmDxB,OAAO,CAAC,MAAM;IAOd,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,kBAAkB;
|
|
1
|
+
{"version":3,"file":"HlsPlayback.d.ts","sourceRoot":"","sources":["../../../src/playback/hls-playback/HlsPlayback.ts"],"names":[],"mappings":"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"}
|
|
@@ -246,7 +246,6 @@ export default class HlsPlayback extends BasePlayback {
|
|
|
246
246
|
maxMaxBufferLength: 4,
|
|
247
247
|
autoStartLoad: false,
|
|
248
248
|
}, this.options.playback.hlsjsConfig);
|
|
249
|
-
trace(`${T} _createHLSInstance`, { config });
|
|
250
249
|
this._hls = new HLSJS(config);
|
|
251
250
|
}
|
|
252
251
|
_attachHLSMedia() {
|
|
@@ -288,9 +287,9 @@ export default class HlsPlayback extends BasePlayback {
|
|
|
288
287
|
this._hls.on(HLSJS.Events.FRAG_LOADED, (evt, data) => this._onFragmentLoaded(evt, data));
|
|
289
288
|
this._hls.on(HLSJS.Events.FRAG_PARSING_METADATA, (evt, data) => this._onFragmentParsingMetadata(evt, data));
|
|
290
289
|
this._hls.on(HLSJS.Events.ERROR, (evt, data) => this._onHLSJSError(evt, data));
|
|
291
|
-
// this._hls.on(HLSJS.Events.SUBTITLE_TRACK_LOADED, (
|
|
292
|
-
this.
|
|
293
|
-
|
|
290
|
+
// this._hls.on(HLSJS.Events.SUBTITLE_TRACK_LOADED, () =>
|
|
291
|
+
// this._onSubtitleLoaded(),
|
|
292
|
+
// )
|
|
294
293
|
this._hls.on(HlsEvents.AUDIO_TRACKS_UPDATED, (evt, data) => this._onAudioTracksUpdated(evt, data));
|
|
295
294
|
this._hls.on(HlsEvents.AUDIO_TRACK_SWITCHED, (evt, data) => this._onAudioTrackSwitched(evt, data));
|
|
296
295
|
this.bindCustomListeners();
|
|
@@ -621,11 +620,13 @@ export default class HlsPlayback extends BasePlayback {
|
|
|
621
620
|
this._playbackType = (data.details.live ? Playback.LIVE : Playback.VOD);
|
|
622
621
|
this._onLevelUpdated(evt, data);
|
|
623
622
|
// Live stream subtitle tracks detection hack (may not immediately available)
|
|
624
|
-
if (
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
623
|
+
// if (
|
|
624
|
+
// this._ccTracksUpdated &&
|
|
625
|
+
// this._playbackType === Playback.LIVE &&
|
|
626
|
+
// this.hasClosedCaptionsTracks
|
|
627
|
+
// ) {
|
|
628
|
+
// this._onSubtitleLoaded()
|
|
629
|
+
// }
|
|
629
630
|
if (prevPlaybackType !== this._playbackType) {
|
|
630
631
|
this._updateSettings();
|
|
631
632
|
}
|
|
@@ -778,16 +779,18 @@ export default class HlsPlayback extends BasePlayback {
|
|
|
778
779
|
_onFragmentLoaded(evt, data) {
|
|
779
780
|
this.trigger(Events.PLAYBACK_FRAGMENT_LOADED, data);
|
|
780
781
|
}
|
|
781
|
-
_onSubtitleLoaded() {
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
782
|
+
// _onSubtitleLoaded() {
|
|
783
|
+
// trace(`${T} _onSubtitleLoaded`)
|
|
784
|
+
// // This event may be triggered multiple times
|
|
785
|
+
// // Setup CC only once (disable CC by default)
|
|
786
|
+
// if (!this._ccIsSetup) {
|
|
787
|
+
// this.trigger(Events.PLAYBACK_SUBTITLE_AVAILABLE)
|
|
788
|
+
// const trackId =
|
|
789
|
+
// this._playbackType === Playback.LIVE ? -1 : this.closedCaptionsTrackId
|
|
790
|
+
// this.closedCaptionsTrackId = trackId
|
|
791
|
+
// this._ccIsSetup = true
|
|
792
|
+
// }
|
|
793
|
+
// }
|
|
791
794
|
_onLevelSwitch(evt, data) {
|
|
792
795
|
if (!this.levels.length) {
|
|
793
796
|
this._fillLevels();
|
|
@@ -851,7 +854,6 @@ export default class HlsPlayback extends BasePlayback {
|
|
|
851
854
|
this._hls.audioTrack = Number(id); // TODO or find index by .id == id?
|
|
852
855
|
}
|
|
853
856
|
_onAudioTracksUpdated(_, data) {
|
|
854
|
-
trace(`${T} onAudioTracksUpdated`);
|
|
855
857
|
this.trigger(Events.PLAYBACK_AUDIO_AVAILABLE, data.audioTracks.map(toClapprTrack));
|
|
856
858
|
}
|
|
857
859
|
_onAudioTrackSwitched(_, data) {
|
|
@@ -2,7 +2,7 @@ import { UICorePlugin } from '@clappr/core';
|
|
|
2
2
|
import '../../../assets/big-mute-button/big-mute-button.scss';
|
|
3
3
|
/**
|
|
4
4
|
* `PLUGIN` that displays a big mute button over the video when it's being played muted.
|
|
5
|
-
* @
|
|
5
|
+
* @public
|
|
6
6
|
* @remarks
|
|
7
7
|
* When pressed, it unmutes the video.
|
|
8
8
|
* @example
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BigMuteButton.d.ts","sourceRoot":"","sources":["../../../src/plugins/big-mute-button/BigMuteButton.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,YAAY,EAAS,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"BigMuteButton.d.ts","sourceRoot":"","sources":["../../../src/plugins/big-mute-button/BigMuteButton.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,YAAY,EAAS,MAAM,cAAc,CAAA;AAOpE,OAAO,sDAAsD,CAAA;AAM7D;;;;;;;;;;GAUG;AACH,qBAAa,aAAc,SAAQ,YAAY;IAC7C,OAAO,CAAC,QAAQ,CAAQ;IAExB,OAAO,CAAC,MAAM,CAAQ;IAGtB,OAAO,CAAC,YAAY,CAAQ;IAE5B;;OAEG;IACH,IAAI,IAAI,WAEP;IAED;;OAEG;IACH,IAAI,gBAAgB;;MAEnB;IAED,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAyB;IAEzD;;OAEG;IACH,IAAa,MAAM;;MAIlB;IAED;;OAEG;IACM,UAAU;IAWnB,OAAO,CAAC,WAAW;IAEnB,OAAO,CAAC,kBAAkB;IAgB1B,OAAO,CAAC,MAAM;IAmBd,OAAO,CAAC,MAAM;IAOd,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,iBAAiB;IAMzB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,SAAS;IAKjB,OAAO,CAAC,UAAU;IAKlB;;OAEG;IACM,MAAM;IAUf,OAAO,CAAC,KAAK;IAKb,OAAO,CAAC,IAAI;IAKZ,OAAO,CAAC,IAAI;IAKZ,OAAO,CAAC,OAAO;CAiBhB"}
|
|
@@ -8,7 +8,7 @@ const T = 'plugins.big_mute_button';
|
|
|
8
8
|
// TODO rewrite as a container plugin
|
|
9
9
|
/**
|
|
10
10
|
* `PLUGIN` that displays a big mute button over the video when it's being played muted.
|
|
11
|
-
* @
|
|
11
|
+
* @public
|
|
12
12
|
* @remarks
|
|
13
13
|
* When pressed, it unmutes the video.
|
|
14
14
|
* @example
|
|
@@ -108,7 +108,6 @@ export class BigMuteButton extends UICorePlugin {
|
|
|
108
108
|
* @internal
|
|
109
109
|
*/
|
|
110
110
|
render() {
|
|
111
|
-
trace(`${T} render`);
|
|
112
111
|
this.$el.html(BigMuteButton.template());
|
|
113
112
|
this.$el.find('#gplayer-big-mute-icon').append(volumeMuteIcon);
|
|
114
113
|
// TODO
|
|
@@ -128,7 +127,6 @@ export class BigMuteButton extends UICorePlugin {
|
|
|
128
127
|
this.$el.find('#gplayer-big-mute-button')?.removeClass('hide');
|
|
129
128
|
}
|
|
130
129
|
clicked(e) {
|
|
131
|
-
trace(`${T} clicked`);
|
|
132
130
|
const mediaControl = this.core.getPlugin('media_control');
|
|
133
131
|
// TODO delegate to media_control plugin
|
|
134
132
|
const localVolume = Utils.Config.restore('volume');
|
|
@@ -4,7 +4,7 @@ import '../../../assets/bottom-gear/gear-sub-menu.scss';
|
|
|
4
4
|
import { ZeptoResult } from '../../types.js';
|
|
5
5
|
/**
|
|
6
6
|
* Events triggered by the plugin
|
|
7
|
-
* @
|
|
7
|
+
* @public
|
|
8
8
|
*/
|
|
9
9
|
export declare enum GearEvents {
|
|
10
10
|
/**
|
|
@@ -14,7 +14,7 @@ export declare enum GearEvents {
|
|
|
14
14
|
}
|
|
15
15
|
/**
|
|
16
16
|
* `PLUGIN` that adds a button to extend the media controls UI with extra options.
|
|
17
|
-
* @
|
|
17
|
+
* @public
|
|
18
18
|
* @remarks
|
|
19
19
|
* The plugin renders small gear icon to the right of the media controls.
|
|
20
20
|
* It provides a base for attaching custom settings UI in the gear menu
|