@picsa/capacitor-video-player 7.1.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.
Files changed (89) hide show
  1. package/CapacitorVideoPlayer.podspec +17 -0
  2. package/LICENSE +21 -0
  3. package/android/build.gradle +71 -0
  4. package/android/src/main/AndroidManifest.xml +3 -0
  5. package/android/src/main/java/com/jeep/plugin/capacitor/capacitorvideoplayer/CapacitorVideoPlayer.java +71 -0
  6. package/android/src/main/java/com/jeep/plugin/capacitor/capacitorvideoplayer/CapacitorVideoPlayerPlugin.java +1256 -0
  7. package/android/src/main/java/com/jeep/plugin/capacitor/capacitorvideoplayer/FullscreenExoPlayerFragment.java +1595 -0
  8. package/android/src/main/java/com/jeep/plugin/capacitor/capacitorvideoplayer/Notifications/MyRunnable.java +21 -0
  9. package/android/src/main/java/com/jeep/plugin/capacitor/capacitorvideoplayer/Notifications/NotificationCenter.java +61 -0
  10. package/android/src/main/java/com/jeep/plugin/capacitor/capacitorvideoplayer/PickerVideo/AdapterVideoList.java +47 -0
  11. package/android/src/main/java/com/jeep/plugin/capacitor/capacitorvideoplayer/PickerVideo/ModelVideo.java +49 -0
  12. package/android/src/main/java/com/jeep/plugin/capacitor/capacitorvideoplayer/PickerVideo/PickerVideoFragment.java +119 -0
  13. package/android/src/main/java/com/jeep/plugin/capacitor/capacitorvideoplayer/PickerVideo/VideoRecyclerViewHolder.java +65 -0
  14. package/android/src/main/java/com/jeep/plugin/capacitor/capacitorvideoplayer/Utilities/FilesUtils.java +101 -0
  15. package/android/src/main/java/com/jeep/plugin/capacitor/capacitorvideoplayer/Utilities/FragmentUtils.java +32 -0
  16. package/android/src/main/res/.gitkeep +0 -0
  17. package/android/src/main/res/drawable/bg_round_rect_white_50.xml +9 -0
  18. package/android/src/main/res/drawable/bg_rounded_rectangle_white_corner_rounded.xml +10 -0
  19. package/android/src/main/res/drawable/exo_close_btn.xml +12 -0
  20. package/android/src/main/res/drawable/gradient_transparent_middle.xml +12 -0
  21. package/android/src/main/res/drawable/ic_arrow_left.xml +5 -0
  22. package/android/src/main/res/drawable/ic_baseline_lq.xml +7 -0
  23. package/android/src/main/res/drawable/ic_exo_icon_fastforward.xml +35 -0
  24. package/android/src/main/res/drawable/ic_exo_icon_pause.xml +26 -0
  25. package/android/src/main/res/drawable/ic_exo_icon_play.xml +36 -0
  26. package/android/src/main/res/drawable/ic_exo_icon_rewind.xml +35 -0
  27. package/android/src/main/res/drawable/ic_expand.xml +5 -0
  28. package/android/src/main/res/drawable/ic_fit.xml +5 -0
  29. package/android/src/main/res/drawable/ic_image_background.xml +12 -0
  30. package/android/src/main/res/drawable/ic_img_16_9_background.xml +10 -0
  31. package/android/src/main/res/drawable/ic_img_9_16_background.xml +10 -0
  32. package/android/src/main/res/drawable/ic_outline_lock.xml +5 -0
  33. package/android/src/main/res/drawable/ic_outline_lock_open.xml +5 -0
  34. package/android/src/main/res/drawable/ic_pip_white.xml +5 -0
  35. package/android/src/main/res/drawable/ic_views.xml +18 -0
  36. package/android/src/main/res/drawable/ic_zoom.xml +5 -0
  37. package/android/src/main/res/layout/bridge_layout_main.xml +15 -0
  38. package/android/src/main/res/layout/exo_playback_control_view.xml +289 -0
  39. package/android/src/main/res/layout/exoplayer_layout_youtube.xml +361 -0
  40. package/android/src/main/res/layout/fragment_fs_exoplayer.xml +50 -0
  41. package/android/src/main/res/layout/fragment_picker_video.xml +21 -0
  42. package/android/src/main/res/layout/row_video.xml +76 -0
  43. package/android/src/main/res/values/colors.xml +14 -0
  44. package/android/src/main/res/values/strings.xml +3 -0
  45. package/android/src/main/res/values/styles.xml +3 -0
  46. package/dist/docs.json +831 -0
  47. package/dist/esm/definitions.d.ts +322 -0
  48. package/dist/esm/definitions.js +2 -0
  49. package/dist/esm/definitions.js.map +1 -0
  50. package/dist/esm/index.d.ts +4 -0
  51. package/dist/esm/index.js +7 -0
  52. package/dist/esm/index.js.map +1 -0
  53. package/dist/esm/web-utils/video-types.d.ts +16 -0
  54. package/dist/esm/web-utils/video-types.js +15 -0
  55. package/dist/esm/web-utils/video-types.js.map +1 -0
  56. package/dist/esm/web-utils/videoplayer.d.ts +30 -0
  57. package/dist/esm/web-utils/videoplayer.js +315 -0
  58. package/dist/esm/web-utils/videoplayer.js.map +1 -0
  59. package/dist/esm/web.d.ts +123 -0
  60. package/dist/esm/web.js +675 -0
  61. package/dist/esm/web.js.map +1 -0
  62. package/dist/plugin.cjs.js +1017 -0
  63. package/dist/plugin.cjs.js.map +1 -0
  64. package/dist/plugin.js +1019 -0
  65. package/dist/plugin.js.map +1 -0
  66. package/ios/Plugin/CapacitorVideoPlayer.swift +64 -0
  67. package/ios/Plugin/CapacitorVideoPlayerPlugin.h +10 -0
  68. package/ios/Plugin/CapacitorVideoPlayerPlugin.m +22 -0
  69. package/ios/Plugin/CapacitorVideoPlayerPlugin.swift +632 -0
  70. package/ios/Plugin/Extensions/CapacitorVideoPlayerPlugin.AVPlayerViewController.swift +59 -0
  71. package/ios/Plugin/Extensions/CapacitorVideoPlayerPlugin.File.swift +126 -0
  72. package/ios/Plugin/Extensions/CapacitorVideoPlayerPlugin.Fullscreen.swift +94 -0
  73. package/ios/Plugin/Extensions/CapacitorVideoPlayerPlugin.Notifications.swift +140 -0
  74. package/ios/Plugin/Extensions/CapacitorVideoPlayerPlugin.Observers.swift +180 -0
  75. package/ios/Plugin/Info.plist +24 -0
  76. package/ios/Plugin/VideoPicker/VideoHelper.swift +127 -0
  77. package/ios/Plugin/VideoPicker/VideoPickerViewController.swift +144 -0
  78. package/ios/Plugin/VideoPlayer/Extensions/AVURLAsset.swift +18 -0
  79. package/ios/Plugin/VideoPlayer/Extensions/AllOrientationAVPlayerController.swift +12 -0
  80. package/ios/Plugin/VideoPlayer/Extensions/CMTime.swift +23 -0
  81. package/ios/Plugin/VideoPlayer/Extensions/LandscapeAVPlayerController.swift +12 -0
  82. package/ios/Plugin/VideoPlayer/Extensions/Notification.Name.swift +18 -0
  83. package/ios/Plugin/VideoPlayer/Extensions/PortraitAVPlayerController.swift +12 -0
  84. package/ios/Plugin/VideoPlayer/Extensions/View.swift +54 -0
  85. package/ios/Plugin/VideoPlayer/FullScreenVideoPlayerView.swift +601 -0
  86. package/ios/Plugin/VideoPlayer/Models/Video.swift +28 -0
  87. package/ios/Plugin/VideoPlayer/Models/VideoModel.swift +42 -0
  88. package/package.json +92 -0
  89. package/readme.md +190 -0
@@ -0,0 +1,315 @@
1
+ import Hls from 'hls.js';
2
+ import { videoTypes } from './video-types';
3
+ export class VideoPlayer {
4
+ constructor(mode, url, playerId, rate, exitOnEnd, loopOnEnd, container, zIndex, width, height) {
5
+ this.pipMode = false;
6
+ this._videoType = null;
7
+ this._videoContainer = null;
8
+ this._firstReadyToPlay = true;
9
+ this._isEnded = false;
10
+ this._videoRate = 1.0;
11
+ this._videoExitOnEnd = true;
12
+ this._videoLoopOnEnd = false;
13
+ this._url = url;
14
+ this._container = container;
15
+ this._mode = mode;
16
+ this._width = width ? width : 320;
17
+ this._height = height ? height : 180;
18
+ this._mode = mode;
19
+ this._videoRate = rate;
20
+ this._zIndex = zIndex ? zIndex : 1;
21
+ this._playerId = playerId;
22
+ this._videoExitOnEnd = exitOnEnd;
23
+ this._videoLoopOnEnd = loopOnEnd;
24
+ }
25
+ async initialize() {
26
+ // get the video type
27
+ this._videoType = this._getVideoType();
28
+ if (this._videoType) {
29
+ // style the container
30
+ if (this._mode === 'fullscreen') {
31
+ this._container.style.position = 'absolute';
32
+ this._container.style.width = '100vw';
33
+ this._container.style.height = '100vh';
34
+ }
35
+ if (this._mode === 'embedded') {
36
+ this._container.style.position = 'relative';
37
+ this._container.style.width = this._width.toString() + 'px';
38
+ this._container.style.height = this._height.toString() + 'px';
39
+ }
40
+ this._container.style.left = '0';
41
+ this._container.style.top = '0';
42
+ this._container.style.display = 'flex';
43
+ this._container.style.alignItems = 'center';
44
+ this._container.style.justifyContent = 'center';
45
+ this._container.style.backgroundColor = '#000000';
46
+ this._container.style.zIndex = this._zIndex.toString();
47
+ const width = this._mode === 'fullscreen' ? window.innerWidth /*this._container.offsetWidth*/ : this._width;
48
+ const height = this._mode === 'fullscreen' ? window.innerHeight /*this._container.offsetHeight*/ : this._height;
49
+ const xmlns = 'http://www.w3.org/2000/svg';
50
+ const svg = document.createElementNS(xmlns, 'svg');
51
+ svg.setAttributeNS(null, 'width', width.toString());
52
+ svg.setAttributeNS(null, 'height', height.toString());
53
+ const viewbox = '0 0 ' + width.toString() + ' ' + height.toString();
54
+ svg.setAttributeNS(null, 'viewBox', viewbox);
55
+ svg.style.zIndex = (this._zIndex + 1).toString();
56
+ const rect = document.createElementNS(xmlns, 'rect');
57
+ rect.setAttributeNS(null, 'x', '0');
58
+ rect.setAttributeNS(null, 'y', '0');
59
+ rect.setAttributeNS(null, 'width', width.toString());
60
+ rect.setAttributeNS(null, 'height', height.toString());
61
+ rect.setAttributeNS(null, 'fill', '#000000');
62
+ svg.appendChild(rect);
63
+ this._container.appendChild(svg);
64
+ const heightVideo = (width * this._height) / this._width;
65
+ this._videoContainer = document.createElement('div');
66
+ this._videoContainer.style.position = 'absolute';
67
+ this._videoContainer.style.left = '0';
68
+ this._videoContainer.style.width = width.toString() + 'px';
69
+ this._videoContainer.style.height = heightVideo.toString() + 'px';
70
+ this._videoContainer.style.zIndex = (this._zIndex + 2).toString();
71
+ this._container.appendChild(this._videoContainer);
72
+ /* Create Video Element */
73
+ const isCreated = await this.createVideoElement(width, heightVideo);
74
+ if (!isCreated) {
75
+ this._createEvent('Exit', this._playerId, 'Video Error: failed to create the Video Element');
76
+ }
77
+ }
78
+ else {
79
+ console.error('Url Error: type not supported');
80
+ this._createEvent('Exit', this._playerId, 'Url Error: type not supported');
81
+ }
82
+ return;
83
+ }
84
+ async createVideoElement(width, height) {
85
+ this.videoEl = document.createElement('video');
86
+ this.videoEl.controls = true;
87
+ this.videoEl.style.zIndex = (this._zIndex + 3).toString();
88
+ this.videoEl.style.width = `${width.toString()}px`;
89
+ this.videoEl.style.height = `${height.toString()}px`;
90
+ this.videoEl.playbackRate = this._videoRate;
91
+ this._videoContainer.appendChild(this.videoEl);
92
+ // set the player
93
+ const isSet = await this._setPlayer();
94
+ if (isSet) {
95
+ this.videoEl.onended = async () => {
96
+ this._isEnded = true;
97
+ this.isPlaying = false;
98
+ if (this.videoEl) {
99
+ this.videoEl.currentTime = 0;
100
+ }
101
+ if (this._videoExitOnEnd) {
102
+ if (this._mode === 'fullscreen') {
103
+ this._closeFullscreen();
104
+ }
105
+ this._createEvent('Ended', this._playerId);
106
+ }
107
+ else {
108
+ if (this._videoLoopOnEnd && this.videoEl != null) {
109
+ await this.videoEl.play();
110
+ }
111
+ }
112
+ };
113
+ this.videoEl.oncanplay = async () => {
114
+ if (this._firstReadyToPlay) {
115
+ this._createEvent('Ready', this._playerId);
116
+ if (this.videoEl != null) {
117
+ this.videoEl.muted = false;
118
+ if (this._mode === 'fullscreen')
119
+ await this.videoEl.play();
120
+ this._firstReadyToPlay = false;
121
+ }
122
+ }
123
+ };
124
+ this.videoEl.onplay = () => {
125
+ this.isPlaying = true;
126
+ if (this._firstReadyToPlay)
127
+ this._firstReadyToPlay = false;
128
+ this._createEvent('Play', this._playerId);
129
+ };
130
+ this.videoEl.onplaying = () => {
131
+ this._createEvent('Playing', this._playerId);
132
+ };
133
+ this.videoEl.onpause = () => {
134
+ this.isPlaying = false;
135
+ this._createEvent('Pause', this._playerId);
136
+ };
137
+ if (this._mode === 'fullscreen') {
138
+ // create the video player exit button
139
+ const exitEl = document.createElement('button');
140
+ exitEl.textContent = 'X';
141
+ exitEl.style.position = 'absolute';
142
+ exitEl.style.left = '1%';
143
+ exitEl.style.top = '5%';
144
+ exitEl.style.width = '5vmin';
145
+ exitEl.style.padding = '0.5%';
146
+ exitEl.style.fontSize = '1.2rem';
147
+ exitEl.style.background = 'rgba(51,51,51,.4)';
148
+ exitEl.style.color = '#fff';
149
+ exitEl.style.visibility = 'hidden';
150
+ exitEl.style.zIndex = (this._zIndex + 4).toString();
151
+ exitEl.style.border = '1px solid rgba(51,51,51,.4)';
152
+ exitEl.style.borderRadius = '20px';
153
+ this._videoContainer.onclick = async () => {
154
+ this._initial = await this._doHide(exitEl, 3000);
155
+ };
156
+ this._videoContainer.ontouchstart = async () => {
157
+ this._initial = await this._doHide(exitEl, 3000);
158
+ };
159
+ this._videoContainer.onmousemove = async () => {
160
+ this._initial = await this._doHide(exitEl, 3000);
161
+ };
162
+ exitEl.onclick = () => {
163
+ this._createEvent('Exit', this._playerId);
164
+ };
165
+ exitEl.ontouchstart = () => {
166
+ this._createEvent('Exit', this._playerId);
167
+ };
168
+ this._videoContainer.appendChild(exitEl);
169
+ this._initial = await this._doHide(exitEl, 3000);
170
+ this._goFullscreen();
171
+ }
172
+ }
173
+ return isSet;
174
+ }
175
+ async _goFullscreen() {
176
+ if (this._container.mozRequestFullScreen) {
177
+ /* Firefox */
178
+ this._container.mozRequestFullScreen();
179
+ }
180
+ else if (this._container.webkitRequestFullscreen) {
181
+ /* Chrome, Safari & Opera */
182
+ this._container.webkitRequestFullscreen();
183
+ }
184
+ else if (this._container.msRequestFullscreen) {
185
+ /* IE/Edge */
186
+ this._container.msRequestFullscreen();
187
+ }
188
+ else if (this._container.requestFullscreen) {
189
+ this._container.requestFullscreen();
190
+ }
191
+ return;
192
+ }
193
+ async _setPlayer() {
194
+ return new Promise((resolve) => {
195
+ if (this.videoEl != null) {
196
+ if (Hls.isSupported() && this._videoType === 'application/x-mpegURL') {
197
+ const hls = new Hls();
198
+ hls.loadSource(this._url);
199
+ hls.attachMedia(this.videoEl);
200
+ hls.once(Hls.Events.FRAG_PARSED, () => {
201
+ if (this.videoEl != null) {
202
+ this.videoEl.muted = true;
203
+ this.videoEl.crossOrigin = 'anonymous';
204
+ resolve(true);
205
+ }
206
+ else {
207
+ resolve(false);
208
+ }
209
+ });
210
+ }
211
+ else if (this._videoType === 'video/mp4') {
212
+ // CMAF (fMP4) && MP4
213
+ this.videoEl.src = this._url;
214
+ if (this._url.substring(0, 5) != 'https' && this._url.substring(0, 4) === 'http')
215
+ this.videoEl.crossOrigin = 'anonymous';
216
+ if (this._url.substring(0, 5) === 'https' || this._url.substring(0, 4) === 'http')
217
+ this.videoEl.muted = true;
218
+ resolve(true);
219
+ }
220
+ else {
221
+ // Not Supported
222
+ resolve(false);
223
+ }
224
+ this.videoEl.addEventListener('enterpictureinpicture', (event) => {
225
+ this.pipWindow = event.pictureInPictureWindow;
226
+ this.pipMode = true;
227
+ this._closeFullscreen();
228
+ });
229
+ this.videoEl.addEventListener('leavepictureinpicture', () => {
230
+ this.pipMode = false;
231
+ if (!this._isEnded) {
232
+ this._goFullscreen();
233
+ if (this.videoEl != null)
234
+ this.videoEl.play();
235
+ }
236
+ });
237
+ }
238
+ else {
239
+ resolve(false);
240
+ }
241
+ });
242
+ }
243
+ _getVideoType() {
244
+ const sUrl = this._url ? this._url : '';
245
+ if (sUrl != null && sUrl.length > 0) {
246
+ // we search for dot + extension (e.g. `.mp4`) for URLs that have the extension in the filename
247
+ // e.g. https://vimeo.com/?file=my-video.mp4
248
+ const dotExtensionRegex = new RegExp(`\\.(${Object.keys(videoTypes).join('|')})`, 'gi');
249
+ const dotExtensionMatch = dotExtensionRegex.exec(sUrl);
250
+ if (dotExtensionMatch) {
251
+ const ext = dotExtensionMatch[1];
252
+ return videoTypes[ext];
253
+ }
254
+ // we search for the extension (e.g. `m3u8`) for URLs that might have the extension as a query parameter
255
+ // e.g. https://youtube.com/?v=7894289374&type=m3u8
256
+ const queryParamRegex = new RegExp(`=(${Object.keys(videoTypes).join('|')})`, 'gi');
257
+ const queryParamMatch = queryParamRegex.exec(sUrl);
258
+ if (queryParamMatch) {
259
+ const ext = queryParamMatch[1];
260
+ return videoTypes[ext];
261
+ }
262
+ // No extension found, then we assume it's 'mp4' (Match case for '')
263
+ return 'video/mp4';
264
+ }
265
+ // URL was not defined, we return null
266
+ console.error(`Failed to get video type`, sUrl);
267
+ return null;
268
+ }
269
+ async _doHide(exitEl, duration) {
270
+ clearTimeout(this._initial);
271
+ exitEl.style.visibility = 'visible';
272
+ const initial = setTimeout(() => {
273
+ exitEl.style.visibility = 'hidden';
274
+ }, duration);
275
+ return initial;
276
+ }
277
+ _createEvent(ev, playerId, msg) {
278
+ const message = msg ? msg : null;
279
+ let event;
280
+ if (message != null) {
281
+ event = new CustomEvent(`videoPlayer${ev}`, {
282
+ detail: { fromPlayerId: playerId, message: message },
283
+ });
284
+ }
285
+ else {
286
+ const currentTime = this.videoEl ? this.videoEl.currentTime : 0;
287
+ event = new CustomEvent(`videoPlayer${ev}`, {
288
+ detail: { fromPlayerId: playerId, currentTime: currentTime },
289
+ });
290
+ }
291
+ document.dispatchEvent(event);
292
+ }
293
+ _closeFullscreen() {
294
+ const mydoc = document;
295
+ const isInFullScreen = (mydoc.fullscreenElement && mydoc.fullscreenElement !== null) ||
296
+ (mydoc.webkitFullscreenElement && mydoc.webkitFullscreenElement !== null) ||
297
+ (mydoc.mozFullScreenElement && mydoc.mozFullScreenElement !== null) ||
298
+ (mydoc.msFullscreenElement && mydoc.msFullscreenElement !== null);
299
+ if (isInFullScreen) {
300
+ if (mydoc.mozCancelFullScreen) {
301
+ mydoc.mozCancelFullScreen();
302
+ }
303
+ else if (mydoc.webkitExitFullscreen) {
304
+ mydoc.webkitExitFullscreen();
305
+ }
306
+ else if (mydoc.msExitFullscreen) {
307
+ mydoc.msExitFullscreen();
308
+ }
309
+ else if (mydoc.exitFullscreen) {
310
+ mydoc.exitFullscreen();
311
+ }
312
+ }
313
+ }
314
+ }
315
+ //# sourceMappingURL=videoplayer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"videoplayer.js","sourceRoot":"","sources":["../../../src/web-utils/videoplayer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,123 @@
1
+ import { WebPlugin } from '@capacitor/core';
2
+ import type { CapacitorVideoPlayerPlugin, capVideoPlayerOptions, capVideoPlayerIdOptions, capVideoVolumeOptions, capVideoTimeOptions, capVideoMutedOptions, capVideoRateOptions, capVideoPlayerResult } from './definitions';
3
+ export interface IPlayerSize {
4
+ height: number;
5
+ width: number;
6
+ }
7
+ export declare class CapacitorVideoPlayerWeb extends WebPlugin implements CapacitorVideoPlayerPlugin {
8
+ private _players;
9
+ private videoContainer;
10
+ private mode;
11
+ constructor();
12
+ echo(options: {
13
+ value: string;
14
+ }): Promise<capVideoPlayerResult>;
15
+ /**
16
+ * Player initialization
17
+ *
18
+ * @param options
19
+ */
20
+ initPlayer(options: capVideoPlayerOptions): Promise<capVideoPlayerResult>;
21
+ /**
22
+ * Return if a given playerId is playing
23
+ *
24
+ * @param options
25
+ */
26
+ isPlaying(options: capVideoPlayerIdOptions): Promise<capVideoPlayerResult>;
27
+ /**
28
+ * Play the current video from a given playerId
29
+ *
30
+ * @param options
31
+ */
32
+ play(options: capVideoPlayerIdOptions): Promise<capVideoPlayerResult>;
33
+ /**
34
+ * Pause the current video from a given playerId
35
+ *
36
+ * @param options
37
+ */
38
+ pause(options: capVideoPlayerIdOptions): Promise<capVideoPlayerResult>;
39
+ /**
40
+ * Get the duration of the current video from a given playerId
41
+ *
42
+ * @param options
43
+ */
44
+ getDuration(options: capVideoPlayerIdOptions): Promise<capVideoPlayerResult>;
45
+ /**
46
+ * Set the rate of the current video from a given playerId
47
+ *
48
+ * @param options
49
+ */
50
+ setRate(options: capVideoRateOptions): Promise<capVideoPlayerResult>;
51
+ /**
52
+ * Get the volume of the current video from a given playerId
53
+ *
54
+ * @param options
55
+ */
56
+ getRate(options: capVideoPlayerIdOptions): Promise<capVideoPlayerResult>;
57
+ /**
58
+ * Set the volume of the current video from a given playerId
59
+ *
60
+ * @param options
61
+ */
62
+ setVolume(options: capVideoVolumeOptions): Promise<capVideoPlayerResult>;
63
+ /**
64
+ * Get the volume of the current video from a given playerId
65
+ *
66
+ * @param options
67
+ */
68
+ getVolume(options: capVideoPlayerIdOptions): Promise<capVideoPlayerResult>;
69
+ /**
70
+ * Set the muted property of the current video from a given playerId
71
+ *
72
+ * @param options
73
+ */
74
+ setMuted(options: capVideoMutedOptions): Promise<capVideoPlayerResult>;
75
+ /**
76
+ * Get the muted property of the current video from a given playerId
77
+ *
78
+ * @param options
79
+ */
80
+ getMuted(options: capVideoPlayerIdOptions): Promise<capVideoPlayerResult>;
81
+ /**
82
+ * Set the current time of the current video from a given playerId
83
+ *
84
+ * @param options
85
+ */
86
+ setCurrentTime(options: capVideoTimeOptions): Promise<capVideoPlayerResult>;
87
+ /**
88
+ * Get the current time of the current video from a given playerId
89
+ *
90
+ * @param options
91
+ */
92
+ getCurrentTime(options: capVideoPlayerIdOptions): Promise<capVideoPlayerResult>;
93
+ /**
94
+ * Get the current time of the current video from a given playerId
95
+ *
96
+ */
97
+ stopAllPlayers(): Promise<capVideoPlayerResult>;
98
+ /**
99
+ * Show controller
100
+ *
101
+ */
102
+ showController(): Promise<capVideoPlayerResult>;
103
+ /**
104
+ * isControllerIsFullyVisible
105
+ *
106
+ */
107
+ isControllerIsFullyVisible(): Promise<capVideoPlayerResult>;
108
+ /**
109
+ * Exit the current player
110
+ *
111
+ */
112
+ exitPlayer(): Promise<capVideoPlayerResult>;
113
+ private checkSize;
114
+ private _initializeVideoPlayer;
115
+ private _getContainerElement;
116
+ private handlePlayerPlay;
117
+ private handlePlayerPause;
118
+ private handlePlayerEnded;
119
+ private handlePlayerExit;
120
+ private handlePlayerReady;
121
+ private addListeners;
122
+ private removeListeners;
123
+ }