@gcorevideo/player 2.16.16 → 2.17.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/README.md +68 -19
- package/dist/index.js +107 -25
- package/dist/player.d.ts +82 -51
- package/docs/api/index.md +1 -1
- package/docs/api/player.md +2 -2
- package/docs/api/player.playbackerrorcode.md +4 -4
- package/docs/api/player.player.attachto.md +26 -0
- package/docs/api/player.player.configure.md +6 -2
- package/docs/api/player.player.destroy.md +1 -1
- package/docs/api/player.player.getcurrenttime.md +6 -2
- package/docs/api/player.player.getduration.md +4 -0
- package/docs/api/player.player.getvolume.md +22 -0
- package/docs/api/player.player.isdvrenabled.md +20 -0
- package/docs/api/player.player.isplaying.md +20 -0
- package/docs/api/player.player.md +62 -8
- package/docs/api/player.player.mute.md +1 -1
- package/docs/api/player.player.off.md +1 -1
- package/docs/api/player.player.registerplugin.md +14 -1
- package/docs/api/player.player.resize.md +4 -0
- package/docs/api/player.player.seek.md +1 -1
- package/docs/api/player.player.setvolume.md +56 -0
- package/docs/api/player.player.unmute.md +1 -1
- package/docs/api/player.player.unregisterplugin.md +2 -2
- package/lib/Player.d.ts +79 -14
- package/lib/Player.d.ts.map +1 -1
- package/lib/Player.js +91 -14
- package/lib/index.d.ts +2 -3
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +2 -3
- package/lib/utils/mediaSources.d.ts.map +1 -1
- package/lib/utils/mediaSources.js +14 -6
- package/package.json +1 -1
- package/rollup.config.js +1 -1
- package/src/Player.ts +95 -15
- package/src/__tests__/Player.test.ts +9 -3
- package/src/index.ts +2 -3
- package/src/utils/__tests__/mediaSources.test.ts +8 -2
- package/src/utils/mediaSources.ts +14 -5
- package/temp/player.api.json +162 -21
- package/tsconfig.tsbuildinfo +1 -1
package/README.md
CHANGED
|
@@ -6,33 +6,82 @@
|
|
|
6
6
|
npm install @gcorevideo/player
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
+
Or use a script on the CDN directly in your HTML:
|
|
10
|
+
|
|
11
|
+
```html
|
|
12
|
+
<script src="https://player.gvideo.co/v2/assets/player/2.16.7/index.js"></script>
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
See also the [plugins package](../player-plugins/README.md) which almost always used with the player.
|
|
16
|
+
|
|
9
17
|
## Usage
|
|
10
18
|
|
|
11
|
-
|
|
12
|
-
import { Player } from '@gcorevideo/player'
|
|
19
|
+
See the complete example app on Vercel: [https://github.com/dmitritz/gcore-videoplayer-js-nuxt](https://github.com/dmitritz/gcore-videoplayer-js-nuxt)
|
|
13
20
|
|
|
14
|
-
|
|
21
|
+
### Plain HTML example
|
|
15
22
|
|
|
16
|
-
|
|
23
|
+
```html
|
|
24
|
+
<html>
|
|
25
|
+
<head>
|
|
26
|
+
<link rel="stylesheet" href="https://player.gvideo.co/v2/assets/player-plugins/0.10.2/index.css" />
|
|
27
|
+
...
|
|
28
|
+
<style>
|
|
29
|
+
#container {
|
|
30
|
+
width: 100%;
|
|
31
|
+
height: 0;
|
|
32
|
+
padding-bottom: 56.25%;
|
|
33
|
+
position: relative;
|
|
34
|
+
background-color:black;
|
|
35
|
+
color:#fff
|
|
36
|
+
}
|
|
37
|
+
#wrapper {
|
|
38
|
+
max-width: 400px;
|
|
39
|
+
margin: 1rem auto;
|
|
40
|
+
}
|
|
41
|
+
</style>
|
|
42
|
+
</head>
|
|
43
|
+
<body>
|
|
44
|
+
<div id="wrapper">
|
|
45
|
+
<div id="container"></div>
|
|
46
|
+
</div>
|
|
47
|
+
<script type="module">
|
|
48
|
+
import {
|
|
49
|
+
Player,
|
|
50
|
+
} from 'https://player.gvideo.co/v2/assets/player/2.16.7/index.js'
|
|
51
|
+
import {
|
|
52
|
+
MediaControl,
|
|
53
|
+
SourceController,
|
|
54
|
+
Spinner,
|
|
55
|
+
} from 'https://player.gvideo.co/v2/assets/player-plugins/0.10.2/index.js'
|
|
17
56
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
sources: [{
|
|
22
|
-
source: 'https://example.com/myownair66.mpd',
|
|
23
|
-
mimeType: 'application/dash+xml',
|
|
24
|
-
}],
|
|
25
|
-
myFancyPlugin: {
|
|
26
|
-
color: 'rainbow',
|
|
27
|
-
}
|
|
28
|
-
})
|
|
57
|
+
Player.registerPlugin(MediaControl)
|
|
58
|
+
Player.registerPlugin(SourceController)
|
|
59
|
+
Player.registerPlugin(Spinner)
|
|
29
60
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
61
|
+
const player = new Player({
|
|
62
|
+
autoPlay: true,
|
|
63
|
+
mute: true,
|
|
64
|
+
sources: [{
|
|
65
|
+
source: 'https://demo.gvideo.io/cmaf/2675_19146/index.mpd,
|
|
66
|
+
type: 'application/dash+xml',
|
|
67
|
+
}, {
|
|
68
|
+
source: 'https://demo.gvideo.io/cmaf/2675_19146/master.m3u8',
|
|
69
|
+
type: 'application/x-mpegURL',
|
|
70
|
+
}],
|
|
71
|
+
spinner: {
|
|
72
|
+
showOnError: true,
|
|
73
|
+
showOnStart: true,
|
|
74
|
+
}
|
|
75
|
+
})
|
|
76
|
+
document.addEventListener('DOMContentLoaded', () => {
|
|
77
|
+
player.attachTo(document.getElementById('container'))
|
|
78
|
+
})
|
|
79
|
+
</script>
|
|
80
|
+
</body>
|
|
81
|
+
</html>
|
|
33
82
|
```
|
|
34
83
|
|
|
35
|
-
|
|
84
|
+
[Example codepen](https://codepen.io/dmitritz/pen/OPLdEab)
|
|
36
85
|
|
|
37
86
|
## Documentation
|
|
38
87
|
|
package/dist/index.js
CHANGED
|
@@ -12247,9 +12247,20 @@ function buildMediaSourcesList(sources, priorityTransport = 'dash') {
|
|
|
12247
12247
|
}
|
|
12248
12248
|
const [preferred, rest] = sources.reduce(([preferred, rest], item) => {
|
|
12249
12249
|
for (const p of playbacks) {
|
|
12250
|
-
if (
|
|
12251
|
-
|
|
12252
|
-
|
|
12250
|
+
if ([
|
|
12251
|
+
'html5_audio', 'html_img', 'no_op'
|
|
12252
|
+
].includes(p.prototype.name)) {
|
|
12253
|
+
continue;
|
|
12254
|
+
}
|
|
12255
|
+
const canPlay = p.canPlay(item.source, item.mimeType);
|
|
12256
|
+
trace(`buildMediaSourcesList`, {
|
|
12257
|
+
canPlay,
|
|
12258
|
+
playback: p.prototype.name,
|
|
12259
|
+
source: item.source,
|
|
12260
|
+
mimeType: item.mimeType,
|
|
12261
|
+
});
|
|
12262
|
+
if (canPlay) {
|
|
12263
|
+
if (p.prototype.name === priorityTransport) {
|
|
12253
12264
|
preferred.push(item);
|
|
12254
12265
|
}
|
|
12255
12266
|
else {
|
|
@@ -12257,17 +12268,11 @@ function buildMediaSourcesList(sources, priorityTransport = 'dash') {
|
|
|
12257
12268
|
}
|
|
12258
12269
|
break;
|
|
12259
12270
|
}
|
|
12260
|
-
else {
|
|
12261
|
-
trace(`buildMediaSourcesList canPlay ${p.name} ${item.source} ${item.mimeType}: no`);
|
|
12262
|
-
}
|
|
12263
12271
|
}
|
|
12264
12272
|
return [preferred, rest];
|
|
12265
12273
|
}, [[], []]);
|
|
12266
12274
|
return preferred.concat(rest);
|
|
12267
12275
|
}
|
|
12268
|
-
function unwrapSource(s) {
|
|
12269
|
-
return typeof s === 'string' ? s : s.source;
|
|
12270
|
-
}
|
|
12271
12276
|
function wrapSource(s) {
|
|
12272
12277
|
return typeof s === 'string' ? { source: s, mimeType: guessMimeType(s) } : s;
|
|
12273
12278
|
}
|
|
@@ -42282,7 +42287,7 @@ class Player {
|
|
|
42282
42287
|
this.emitter.on(event, handler);
|
|
42283
42288
|
}
|
|
42284
42289
|
/**
|
|
42285
|
-
* Removes a
|
|
42290
|
+
* Removes a previously added event listener
|
|
42286
42291
|
* @param event - See {@link PlayerEvent}
|
|
42287
42292
|
* @param handler - See {@link PlayerEventHandler}
|
|
42288
42293
|
*/
|
|
@@ -42292,10 +42297,12 @@ class Player {
|
|
|
42292
42297
|
/**
|
|
42293
42298
|
* Configures the player.
|
|
42294
42299
|
*
|
|
42295
|
-
* Can be called multiple times. Each consequent call extends the previous configuration.
|
|
42296
|
-
* After a reconfiguration, if something significant has changed, the must be reinitialized (i.e, a `.destroy()` followed by an `.init()` call).
|
|
42297
|
-
*
|
|
42298
42300
|
* @param config - complete or partial configuration
|
|
42301
|
+
* @remarks
|
|
42302
|
+
* Can be called multiple times.
|
|
42303
|
+
* Each consequent call extends the previous configuration with only the new keys overridden.
|
|
42304
|
+
*
|
|
42305
|
+
* After a reconfiguration, if something significant has changed, it might make sense reinitialize the player (i.e, a `.destroy()` followed by an `.init()` call).
|
|
42299
42306
|
*/
|
|
42300
42307
|
configure(config) {
|
|
42301
42308
|
this.setConfig(config);
|
|
@@ -42303,6 +42310,29 @@ class Player {
|
|
|
42303
42310
|
/**
|
|
42304
42311
|
* Initializes the player at the given container element.
|
|
42305
42312
|
* @param playerElement - DOM element to host the player
|
|
42313
|
+
* @remarks
|
|
42314
|
+
* The player will be initialized and attached to the given element.
|
|
42315
|
+
*
|
|
42316
|
+
* All the core plugins will be initialized at this point.
|
|
42317
|
+
*
|
|
42318
|
+
* If no sources were configured, it will trigger an error.
|
|
42319
|
+
*
|
|
42320
|
+
* The player container will be initialized and then all the registered UI plugins.
|
|
42321
|
+
*
|
|
42322
|
+
* If the `autoPlay` option is set, then it will trigger playback immediately.
|
|
42323
|
+
*
|
|
42324
|
+
* It is an error to call this method twice. If you need to attache player to another DOM element,
|
|
42325
|
+
* first call {@link Player.destroy} and then {@link Player.attachTo}.
|
|
42326
|
+
*
|
|
42327
|
+
* @example
|
|
42328
|
+
* ```ts
|
|
42329
|
+
* const player = new Player({
|
|
42330
|
+
* sources: [{ source: 'https://example.com/a.mpd', mimeType: 'application/dash+xml' }],
|
|
42331
|
+
* })
|
|
42332
|
+
* document.addEventListener('DOMContentLoaded', () => {
|
|
42333
|
+
* player.attachTo(document.getElementById('video-container'))
|
|
42334
|
+
* })
|
|
42335
|
+
* ```
|
|
42306
42336
|
*/
|
|
42307
42337
|
attachTo(playerElement) {
|
|
42308
42338
|
assert.ok(!this.player, 'Player already initialized');
|
|
@@ -42323,7 +42353,7 @@ class Player {
|
|
|
42323
42353
|
return this.initPlayer(coreOpts);
|
|
42324
42354
|
}
|
|
42325
42355
|
/**
|
|
42326
|
-
* Destroys the player, releasing all resources and
|
|
42356
|
+
* Destroys the player, releasing all resources and unmounting its UI from the DOM.
|
|
42327
42357
|
*/
|
|
42328
42358
|
destroy() {
|
|
42329
42359
|
trace(`${T} destroy`, {
|
|
@@ -42341,8 +42371,11 @@ class Player {
|
|
|
42341
42371
|
}
|
|
42342
42372
|
}
|
|
42343
42373
|
/**
|
|
42344
|
-
* Current playback time
|
|
42345
|
-
*
|
|
42374
|
+
* Current playback (time since the beginning of the stream), if appropriate.
|
|
42375
|
+
*
|
|
42376
|
+
* @returns Time in seconds
|
|
42377
|
+
* @remarks
|
|
42378
|
+
* For live streams, it returns the current time within the current segment.
|
|
42346
42379
|
*/
|
|
42347
42380
|
getCurrentTime() {
|
|
42348
42381
|
if (!this.player) {
|
|
@@ -42352,7 +42385,10 @@ class Player {
|
|
|
42352
42385
|
}
|
|
42353
42386
|
/**
|
|
42354
42387
|
* Duration of the current media in seconds, if appropriate.
|
|
42355
|
-
*
|
|
42388
|
+
*
|
|
42389
|
+
* @returns Time in seconds
|
|
42390
|
+
* @remarks
|
|
42391
|
+
* For live streams, it returns the duration of the current segment.
|
|
42356
42392
|
*/
|
|
42357
42393
|
getDuration() {
|
|
42358
42394
|
if (!this.player) {
|
|
@@ -42361,13 +42397,25 @@ class Player {
|
|
|
42361
42397
|
return this.player.getDuration();
|
|
42362
42398
|
}
|
|
42363
42399
|
/**
|
|
42364
|
-
*
|
|
42400
|
+
* Indicates whether DVR is enabled.
|
|
42401
|
+
*/
|
|
42402
|
+
isDvrEnabled() {
|
|
42403
|
+
return this.player?.isDvrEnabled() ?? false;
|
|
42404
|
+
}
|
|
42405
|
+
/**
|
|
42406
|
+
* Indicates the playing state of the player.
|
|
42407
|
+
*/
|
|
42408
|
+
isPlaying() {
|
|
42409
|
+
return this.player?.isPlaying() ?? false;
|
|
42410
|
+
}
|
|
42411
|
+
/**
|
|
42412
|
+
* Mutes the sound of the video.
|
|
42365
42413
|
*/
|
|
42366
42414
|
mute() {
|
|
42367
42415
|
this.player?.mute();
|
|
42368
42416
|
}
|
|
42369
42417
|
/**
|
|
42370
|
-
* Unmutes the
|
|
42418
|
+
* Unmutes the video sound.
|
|
42371
42419
|
*/
|
|
42372
42420
|
unmute() {
|
|
42373
42421
|
this.player?.unmute();
|
|
@@ -42387,17 +42435,38 @@ class Player {
|
|
|
42387
42435
|
/**
|
|
42388
42436
|
* Resizes the player container element and everything within it.
|
|
42389
42437
|
* @param newSize - new size of the player
|
|
42438
|
+
* @remarks
|
|
42439
|
+
* Use this method when the player itself does not detect the change in size of its container element.
|
|
42440
|
+
* It can be a case for orientation change on some mobile devices.
|
|
42390
42441
|
*/
|
|
42391
42442
|
resize(newSize) {
|
|
42392
42443
|
this.player?.resize(newSize);
|
|
42393
42444
|
}
|
|
42394
42445
|
/**
|
|
42395
42446
|
* Seeks to the given time.
|
|
42396
|
-
* @param time - time to seek to in seconds
|
|
42447
|
+
* @param time - time to seek to in seconds (since the beginning of the stream)
|
|
42397
42448
|
*/
|
|
42398
42449
|
seek(time) {
|
|
42399
42450
|
this.player?.seek(time);
|
|
42400
42451
|
}
|
|
42452
|
+
/**
|
|
42453
|
+
* Gets the current volume of the media content being played.
|
|
42454
|
+
* @returns a number between 0 and 1
|
|
42455
|
+
*/
|
|
42456
|
+
getVolume() {
|
|
42457
|
+
// This method is provided by the MediaControl plugin
|
|
42458
|
+
// @ts-ignore
|
|
42459
|
+
return this.player?.getVolume?.() || 0;
|
|
42460
|
+
}
|
|
42461
|
+
/**
|
|
42462
|
+
* Sets the current volume of the media content being played.
|
|
42463
|
+
* @param volume - a number between 0 and 1
|
|
42464
|
+
*/
|
|
42465
|
+
setVolume(volume) {
|
|
42466
|
+
// This method is provided by the MediaControl plugin
|
|
42467
|
+
// @ts-ignore
|
|
42468
|
+
this.player?.setVolume?.(volume);
|
|
42469
|
+
}
|
|
42401
42470
|
/**
|
|
42402
42471
|
* Stops playback.
|
|
42403
42472
|
*/
|
|
@@ -42406,14 +42475,27 @@ class Player {
|
|
|
42406
42475
|
}
|
|
42407
42476
|
/**
|
|
42408
42477
|
* Registers a plugin.
|
|
42409
|
-
* @param plugin - plugin
|
|
42478
|
+
* @param plugin - a plugin class
|
|
42479
|
+
* @remarks
|
|
42480
|
+
* Use this method to extend the player with custom behavior.
|
|
42481
|
+
* The plugin class must inherit from one of the Clappr UIPlugin, UIContainerPlugin or CorePlugin classes.
|
|
42482
|
+
* A core plugin will be initialized and attached to the player when the player is initialized.
|
|
42483
|
+
* A UI plugin will be initialized and attached to the player container is initialized.
|
|
42484
|
+
*
|
|
42485
|
+
* @see {@link https://github.com/clappr/clappr/wiki/Architecture}
|
|
42486
|
+
* @example
|
|
42487
|
+
* ```ts
|
|
42488
|
+
* import MyPlugin from './MyPlugin.js'
|
|
42489
|
+
*
|
|
42490
|
+
* Player.registerPlugin(MyPlugin)
|
|
42491
|
+
* ```
|
|
42410
42492
|
*/
|
|
42411
42493
|
static registerPlugin(plugin) {
|
|
42412
42494
|
Loader.registerPlugin(plugin);
|
|
42413
42495
|
}
|
|
42414
42496
|
/**
|
|
42415
|
-
* Unregisters a plugin.
|
|
42416
|
-
* @param plugin - plugin
|
|
42497
|
+
* Unregisters a plugin registered earlier with {@link Player.registerPlugin}.
|
|
42498
|
+
* @param plugin - a plugin class
|
|
42417
42499
|
*/
|
|
42418
42500
|
static unregisterPlugin(plugin) {
|
|
42419
42501
|
Loader.unregisterPlugin(plugin);
|
|
@@ -42611,7 +42693,7 @@ class Player {
|
|
|
42611
42693
|
}
|
|
42612
42694
|
}
|
|
42613
42695
|
|
|
42614
|
-
var version$1 = "2.
|
|
42696
|
+
var version$1 = "2.17.0";
|
|
42615
42697
|
|
|
42616
42698
|
var packages = {
|
|
42617
42699
|
"node_modules/@clappr/core": {
|
|
@@ -42635,4 +42717,4 @@ function version() {
|
|
|
42635
42717
|
};
|
|
42636
42718
|
}
|
|
42637
42719
|
|
|
42638
|
-
export { LogTracer, Logger, PlaybackErrorCode, Player, PlayerEvent, SentryTracer,
|
|
42720
|
+
export { LogTracer, Logger, PlaybackErrorCode, Player, PlayerEvent, SentryTracer, reportError, setTracer, trace, version };
|
package/dist/player.d.ts
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Video player for the
|
|
2
|
+
* Video player for the Gcore streaming platform
|
|
3
3
|
*
|
|
4
4
|
* @remarks
|
|
5
|
-
* This package provides a video player for the
|
|
5
|
+
* This package provides a video player for the Gcore streaming platform.
|
|
6
6
|
* It is built on top of the Clappr library and provides a framework for building custom integrations.
|
|
7
7
|
*
|
|
8
8
|
* @packageDocumentation
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
-
import EventLite from 'event-lite';
|
|
12
11
|
import { Logger } from '@gcorevideo/utils';
|
|
13
12
|
import { LogTracer } from '@gcorevideo/utils';
|
|
14
13
|
import { reportError as reportError_2 } from '@gcorevideo/utils';
|
|
@@ -41,39 +40,6 @@ export { LogTracer }
|
|
|
41
40
|
*/
|
|
42
41
|
export declare type MediaTransport = 'dash' | 'hls';
|
|
43
42
|
|
|
44
|
-
/**
|
|
45
|
-
* @internal
|
|
46
|
-
*/
|
|
47
|
-
export declare class _MockPlayback extends EventLite {
|
|
48
|
-
protected options: any;
|
|
49
|
-
readonly i18n: any;
|
|
50
|
-
protected playerError?: any | undefined;
|
|
51
|
-
constructor(options: any, i18n: any, playerError?: any | undefined);
|
|
52
|
-
get name(): string;
|
|
53
|
-
consent(): void;
|
|
54
|
-
play(): void;
|
|
55
|
-
pause(): void;
|
|
56
|
-
stop(): void;
|
|
57
|
-
destroy(): void;
|
|
58
|
-
seek(): void;
|
|
59
|
-
seekPercentage(): void;
|
|
60
|
-
getDuration(): number;
|
|
61
|
-
enterPiP(): void;
|
|
62
|
-
exitPiP(): void;
|
|
63
|
-
getPlaybackType(): string;
|
|
64
|
-
getStartTimeOffset(): number;
|
|
65
|
-
getCurrentTime(): number;
|
|
66
|
-
isHighDefinitionInUse(): boolean;
|
|
67
|
-
mute(): void;
|
|
68
|
-
unmute(): void;
|
|
69
|
-
volume(): void;
|
|
70
|
-
configure(): void;
|
|
71
|
-
attemptAutoPlay(): boolean;
|
|
72
|
-
canAutoPlay(): boolean;
|
|
73
|
-
onResize(): boolean;
|
|
74
|
-
trigger(event: string, ...args: any[]): void;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
43
|
/**
|
|
78
44
|
* @beta
|
|
79
45
|
*/
|
|
@@ -90,7 +56,7 @@ export declare interface PlaybackError {
|
|
|
90
56
|
export declare enum PlaybackErrorCode {
|
|
91
57
|
Generic = 0,
|
|
92
58
|
MediaSourceUnavailable = 1,
|
|
93
|
-
|
|
59
|
+
MediaSourceAccessDenied = 3
|
|
94
60
|
}
|
|
95
61
|
|
|
96
62
|
/**
|
|
@@ -128,7 +94,7 @@ export declare class Player {
|
|
|
128
94
|
*/
|
|
129
95
|
on<T extends PlayerEvent>(event: T, handler: PlayerEventHandler<T>): void;
|
|
130
96
|
/**
|
|
131
|
-
* Removes a
|
|
97
|
+
* Removes a previously added event listener
|
|
132
98
|
* @param event - See {@link PlayerEvent}
|
|
133
99
|
* @param handler - See {@link PlayerEventHandler}
|
|
134
100
|
*/
|
|
@@ -136,37 +102,76 @@ export declare class Player {
|
|
|
136
102
|
/**
|
|
137
103
|
* Configures the player.
|
|
138
104
|
*
|
|
139
|
-
* Can be called multiple times. Each consequent call extends the previous configuration.
|
|
140
|
-
* After a reconfiguration, if something significant has changed, the must be reinitialized (i.e, a `.destroy()` followed by an `.init()` call).
|
|
141
|
-
*
|
|
142
105
|
* @param config - complete or partial configuration
|
|
106
|
+
* @remarks
|
|
107
|
+
* Can be called multiple times.
|
|
108
|
+
* Each consequent call extends the previous configuration with only the new keys overridden.
|
|
109
|
+
*
|
|
110
|
+
* After a reconfiguration, if something significant has changed, it might make sense reinitialize the player (i.e, a `.destroy()` followed by an `.init()` call).
|
|
143
111
|
*/
|
|
144
112
|
configure(config: Partial<PlayerConfig>): void;
|
|
145
113
|
/**
|
|
146
114
|
* Initializes the player at the given container element.
|
|
147
115
|
* @param playerElement - DOM element to host the player
|
|
116
|
+
* @remarks
|
|
117
|
+
* The player will be initialized and attached to the given element.
|
|
118
|
+
*
|
|
119
|
+
* All the core plugins will be initialized at this point.
|
|
120
|
+
*
|
|
121
|
+
* If no sources were configured, it will trigger an error.
|
|
122
|
+
*
|
|
123
|
+
* The player container will be initialized and then all the registered UI plugins.
|
|
124
|
+
*
|
|
125
|
+
* If the `autoPlay` option is set, then it will trigger playback immediately.
|
|
126
|
+
*
|
|
127
|
+
* It is an error to call this method twice. If you need to attache player to another DOM element,
|
|
128
|
+
* first call {@link Player.destroy} and then {@link Player.attachTo}.
|
|
129
|
+
*
|
|
130
|
+
* @example
|
|
131
|
+
* ```ts
|
|
132
|
+
* const player = new Player({
|
|
133
|
+
* sources: [{ source: 'https://example.com/a.mpd', mimeType: 'application/dash+xml' }],
|
|
134
|
+
* })
|
|
135
|
+
* document.addEventListener('DOMContentLoaded', () => {
|
|
136
|
+
* player.attachTo(document.getElementById('video-container'))
|
|
137
|
+
* })
|
|
138
|
+
* ```
|
|
148
139
|
*/
|
|
149
140
|
attachTo(playerElement: HTMLElement): void;
|
|
150
141
|
/**
|
|
151
|
-
* Destroys the player, releasing all resources and
|
|
142
|
+
* Destroys the player, releasing all resources and unmounting its UI from the DOM.
|
|
152
143
|
*/
|
|
153
144
|
destroy(): void;
|
|
154
145
|
/**
|
|
155
|
-
* Current playback time
|
|
156
|
-
*
|
|
146
|
+
* Current playback (time since the beginning of the stream), if appropriate.
|
|
147
|
+
*
|
|
148
|
+
* @returns Time in seconds
|
|
149
|
+
* @remarks
|
|
150
|
+
* For live streams, it returns the current time within the current segment.
|
|
157
151
|
*/
|
|
158
152
|
getCurrentTime(): number;
|
|
159
153
|
/**
|
|
160
154
|
* Duration of the current media in seconds, if appropriate.
|
|
161
|
-
*
|
|
155
|
+
*
|
|
156
|
+
* @returns Time in seconds
|
|
157
|
+
* @remarks
|
|
158
|
+
* For live streams, it returns the duration of the current segment.
|
|
162
159
|
*/
|
|
163
160
|
getDuration(): number;
|
|
164
161
|
/**
|
|
165
|
-
*
|
|
162
|
+
* Indicates whether DVR is enabled.
|
|
163
|
+
*/
|
|
164
|
+
isDvrEnabled(): boolean;
|
|
165
|
+
/**
|
|
166
|
+
* Indicates the playing state of the player.
|
|
167
|
+
*/
|
|
168
|
+
isPlaying(): boolean;
|
|
169
|
+
/**
|
|
170
|
+
* Mutes the sound of the video.
|
|
166
171
|
*/
|
|
167
172
|
mute(): void;
|
|
168
173
|
/**
|
|
169
|
-
* Unmutes the
|
|
174
|
+
* Unmutes the video sound.
|
|
170
175
|
*/
|
|
171
176
|
unmute(): void;
|
|
172
177
|
/**
|
|
@@ -180,6 +185,9 @@ export declare class Player {
|
|
|
180
185
|
/**
|
|
181
186
|
* Resizes the player container element and everything within it.
|
|
182
187
|
* @param newSize - new size of the player
|
|
188
|
+
* @remarks
|
|
189
|
+
* Use this method when the player itself does not detect the change in size of its container element.
|
|
190
|
+
* It can be a case for orientation change on some mobile devices.
|
|
183
191
|
*/
|
|
184
192
|
resize(newSize: {
|
|
185
193
|
width: number;
|
|
@@ -187,21 +195,44 @@ export declare class Player {
|
|
|
187
195
|
}): void;
|
|
188
196
|
/**
|
|
189
197
|
* Seeks to the given time.
|
|
190
|
-
* @param time - time to seek to in seconds
|
|
198
|
+
* @param time - time to seek to in seconds (since the beginning of the stream)
|
|
191
199
|
*/
|
|
192
200
|
seek(time: number): void;
|
|
201
|
+
/**
|
|
202
|
+
* Gets the current volume of the media content being played.
|
|
203
|
+
* @returns a number between 0 and 1
|
|
204
|
+
*/
|
|
205
|
+
getVolume(): number;
|
|
206
|
+
/**
|
|
207
|
+
* Sets the current volume of the media content being played.
|
|
208
|
+
* @param volume - a number between 0 and 1
|
|
209
|
+
*/
|
|
210
|
+
setVolume(volume: number): void;
|
|
193
211
|
/**
|
|
194
212
|
* Stops playback.
|
|
195
213
|
*/
|
|
196
214
|
stop(): void;
|
|
197
215
|
/**
|
|
198
216
|
* Registers a plugin.
|
|
199
|
-
* @param plugin - plugin
|
|
217
|
+
* @param plugin - a plugin class
|
|
218
|
+
* @remarks
|
|
219
|
+
* Use this method to extend the player with custom behavior.
|
|
220
|
+
* The plugin class must inherit from one of the Clappr UIPlugin, UIContainerPlugin or CorePlugin classes.
|
|
221
|
+
* A core plugin will be initialized and attached to the player when the player is initialized.
|
|
222
|
+
* A UI plugin will be initialized and attached to the player container is initialized.
|
|
223
|
+
*
|
|
224
|
+
* @see {@link https://github.com/clappr/clappr/wiki/Architecture}
|
|
225
|
+
* @example
|
|
226
|
+
* ```ts
|
|
227
|
+
* import MyPlugin from './MyPlugin.js'
|
|
228
|
+
*
|
|
229
|
+
* Player.registerPlugin(MyPlugin)
|
|
230
|
+
* ```
|
|
200
231
|
*/
|
|
201
232
|
static registerPlugin(plugin: PlayerPlugin): void;
|
|
202
233
|
/**
|
|
203
|
-
* Unregisters a plugin.
|
|
204
|
-
* @param plugin - plugin
|
|
234
|
+
* Unregisters a plugin registered earlier with {@link Player.registerPlugin}.
|
|
235
|
+
* @param plugin - a plugin class
|
|
205
236
|
*/
|
|
206
237
|
static unregisterPlugin(plugin: PlayerPlugin): void;
|
|
207
238
|
private setConfig;
|
package/docs/api/index.md
CHANGED
package/docs/api/player.md
CHANGED
|
@@ -4,11 +4,11 @@
|
|
|
4
4
|
|
|
5
5
|
## player package
|
|
6
6
|
|
|
7
|
-
Video player for the
|
|
7
|
+
Video player for the Gcore streaming platform
|
|
8
8
|
|
|
9
9
|
## Remarks
|
|
10
10
|
|
|
11
|
-
This package provides a video player for the
|
|
11
|
+
This package provides a video player for the Gcore streaming platform. It is built on top of the Clappr library and provides a framework for building custom integrations.
|
|
12
12
|
|
|
13
13
|
## Classes
|
|
14
14
|
|
|
@@ -50,12 +50,12 @@ Generic
|
|
|
50
50
|
</td></tr>
|
|
51
51
|
<tr><td>
|
|
52
52
|
|
|
53
|
-
|
|
53
|
+
MediaSourceAccessDenied
|
|
54
54
|
|
|
55
55
|
|
|
56
56
|
</td><td>
|
|
57
57
|
|
|
58
|
-
`
|
|
58
|
+
`3`
|
|
59
59
|
|
|
60
60
|
|
|
61
61
|
</td><td>
|
|
@@ -66,12 +66,12 @@ MediaSourceUnavailable
|
|
|
66
66
|
</td></tr>
|
|
67
67
|
<tr><td>
|
|
68
68
|
|
|
69
|
-
|
|
69
|
+
MediaSourceUnavailable
|
|
70
70
|
|
|
71
71
|
|
|
72
72
|
</td><td>
|
|
73
73
|
|
|
74
|
-
`
|
|
74
|
+
`1`
|
|
75
75
|
|
|
76
76
|
|
|
77
77
|
</td><td>
|
|
@@ -54,3 +54,29 @@ DOM element to host the player
|
|
|
54
54
|
|
|
55
55
|
void
|
|
56
56
|
|
|
57
|
+
## Remarks
|
|
58
|
+
|
|
59
|
+
The player will be initialized and attached to the given element.
|
|
60
|
+
|
|
61
|
+
All the core plugins will be initialized at this point.
|
|
62
|
+
|
|
63
|
+
If no sources were configured, it will trigger an error.
|
|
64
|
+
|
|
65
|
+
The player container will be initialized and then all the registered UI plugins.
|
|
66
|
+
|
|
67
|
+
If the `autoPlay` option is set, then it will trigger playback immediately.
|
|
68
|
+
|
|
69
|
+
It is an error to call this method twice. If you need to attache player to another DOM element, first call [Player.destroy()](./player.player.destroy.md) and then [Player.attachTo()](./player.player.attachto.md)<!-- -->.
|
|
70
|
+
|
|
71
|
+
## Example
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
```ts
|
|
75
|
+
const player = new Player({
|
|
76
|
+
sources: [{ source: 'https://example.com/a.mpd', mimeType: 'application/dash+xml' }],
|
|
77
|
+
})
|
|
78
|
+
document.addEventListener('DOMContentLoaded', () => {
|
|
79
|
+
player.attachTo(document.getElementById('video-container'))
|
|
80
|
+
})
|
|
81
|
+
```
|
|
82
|
+
|
|
@@ -9,8 +9,6 @@
|
|
|
9
9
|
|
|
10
10
|
Configures the player.
|
|
11
11
|
|
|
12
|
-
Can be called multiple times. Each consequent call extends the previous configuration. After a reconfiguration, if something significant has changed, the must be reinitialized (i.e, a `.destroy()` followed by an `.init()` call).
|
|
13
|
-
|
|
14
12
|
**Signature:**
|
|
15
13
|
|
|
16
14
|
```typescript
|
|
@@ -56,3 +54,9 @@ complete or partial configuration
|
|
|
56
54
|
|
|
57
55
|
void
|
|
58
56
|
|
|
57
|
+
## Remarks
|
|
58
|
+
|
|
59
|
+
Can be called multiple times. Each consequent call extends the previous configuration with only the new keys overridden.
|
|
60
|
+
|
|
61
|
+
After a reconfiguration, if something significant has changed, it might make sense reinitialize the player (i.e, a `.destroy()` followed by an `.init()` call).
|
|
62
|
+
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
> This API is provided as a beta preview for developers and may change based on feedback that we receive. Do not use this API in a production environment.
|
|
8
8
|
>
|
|
9
9
|
|
|
10
|
-
Destroys the player, releasing all resources and
|
|
10
|
+
Destroys the player, releasing all resources and unmounting its UI from the DOM.
|
|
11
11
|
|
|
12
12
|
**Signature:**
|
|
13
13
|
|