@gcorevideo/player 0.0.5 → 0.2.3

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/lib/Player.d.ts CHANGED
@@ -1,14 +1,8 @@
1
+ import type { BitrateInfo, PlaybackType, PlayerPlugin } from "./types.js";
2
+ import { PlayerConfig, PlayerEvent } from "./types.js";
1
3
  import '../assets/style/main.scss';
2
- import type { PlayerPlugin } from "./types";
3
- import { PlayerConfig } from "./types.js";
4
- export declare enum PlayerEvent {
5
- Ready = "ready",
6
- Play = "play",
7
- Pause = "pause",
8
- Stop = "stop",
9
- Ended = "ended"
10
- }
11
4
  type PlayerEventHandler<T extends PlayerEvent> = () => void;
5
+ export type PlaybackModule = 'dash' | 'hls' | 'native';
12
6
  /**
13
7
  * @beta
14
8
  */
@@ -19,13 +13,18 @@ export declare class Player {
19
13
  private clapprReady;
20
14
  private timer;
21
15
  private tuneInEntered;
22
- private supportedMediaTransports;
23
16
  private config;
17
+ private bitrateInfo;
18
+ get activePlayback(): PlaybackModule | null;
19
+ get bitrate(): BitrateInfo | null;
20
+ get hd(): any;
21
+ get playbackType(): PlaybackType | undefined;
24
22
  get playing(): boolean;
25
23
  get ready(): boolean;
26
24
  constructor(config: PlayerConfig);
27
25
  on<T extends PlayerEvent>(event: T, handler: PlayerEventHandler<T>): void;
28
26
  off<T extends PlayerEvent>(event: T, handler: PlayerEventHandler<T>): void;
27
+ configure(config: Partial<PlayerConfig>): void;
29
28
  init(playerElement: HTMLElement): Promise<void>;
30
29
  destroy(): void;
31
30
  pause(): void;
@@ -33,18 +32,14 @@ export declare class Player {
33
32
  seekTo(time: number): void;
34
33
  stop(): void;
35
34
  static registerPlugin(plugin: PlayerPlugin): void;
36
- private loadPlugins;
35
+ static unregisterPlugin(plugin: PlayerPlugin): void;
37
36
  private initPlayer;
38
37
  private tuneIn;
39
- private configurePlugins;
40
38
  private events;
41
39
  private buildCoreOptions;
42
- private findMainSource;
43
- private scheduleLoad;
44
- private selectMediaTransport;
45
- private getAvailableTransportsPreference;
46
- private checkMediaTransportsSupport;
47
- private processMultisources;
40
+ private configurePlaybacks;
41
+ private bindBitrateChangeHandler;
42
+ private buildMediaSourcesList;
48
43
  }
49
44
  export {};
50
45
  //# sourceMappingURL=Player.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Player.d.ts","sourceRoot":"","sources":["../src/Player.ts"],"names":[],"mappings":"AAWA,OAAO,2BAA2B,CAAC;AAQnC,OAAO,KAAK,EACV,YAAY,EAEb,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,YAAY,EAGb,MAAM,YAAY,CAAC;AAEpB,oBAAY,WAAW;IACrB,KAAK,UAAU;IACf,IAAI,SAAS;IACb,KAAK,UAAU;IACf,IAAI,SAAS;IACb,KAAK,UAAU;CAChB;AAID,KAAK,kBAAkB,CAAC,CAAC,SAAS,WAAW,IAAI,MAAM,IAAI,CAAC;AAY5D;;GAEG;AACH,qBAAa,MAAM;IACjB,OAAO,CAAC,OAAO,CAAmB;IAElC,OAAO,CAAC,MAAM,CAA6B;IAE3C,OAAO,CAAC,aAAa,CAAkC;IAEvD,OAAO,CAAC,WAAW,CAAS;IAE5B,OAAO,CAAC,KAAK,CAA8C;IAE3D,OAAO,CAAC,aAAa,CAAS;IAE9B,OAAO,CAAC,wBAAwB,CAAwB;IAExD,OAAO,CAAC,MAAM,CAAe;IAE7B,IAAI,OAAO,YAEV;IAED,IAAI,KAAK,YAER;gBAGC,MAAM,EAAE,YAAY;IAKtB,EAAE,CAAC,CAAC,SAAS,WAAW,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAIlE,GAAG,CAAC,CAAC,SAAS,WAAW,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAI7D,IAAI,CAAC,aAAa,EAAE,WAAW;IA6BrC,OAAO;IAQP,KAAK;IAKL,IAAI;IAKJ,MAAM,CAAC,IAAI,EAAE,MAAM;IAKnB,IAAI;IAKJ,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,YAAY;IAI1C,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,UAAU;YA0BJ,MAAM;IA4BpB,OAAO,CAAC,gBAAgB;IAiBxB,OAAO,CAAC,MAAM,CA8CZ;IAEF,OAAO,CAAC,gBAAgB;IAsCxB,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,oBAAoB;IA2B5B,OAAO,CAAC,gCAAgC;IAaxC,OAAO,CAAC,2BAA2B;IAWnC,OAAO,CAAC,mBAAmB;CAM5B"}
1
+ {"version":3,"file":"Player.d.ts","sourceRoot":"","sources":["../src/Player.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EACV,WAAW,EACX,YAAY,EACZ,YAAY,EAEb,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,YAAY,EACZ,WAAW,EACZ,MAAM,YAAY,CAAC;AAIpB,OAAO,2BAA2B,CAAC;AAInC,KAAK,kBAAkB,CAAC,CAAC,SAAS,WAAW,IAAI,MAAM,IAAI,CAAC;AAU5D,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC;AAIvD;;GAEG;AACH,qBAAa,MAAM;IACjB,OAAO,CAAC,OAAO,CAAmB;IAElC,OAAO,CAAC,MAAM,CAA6B;IAE3C,OAAO,CAAC,aAAa,CAAkC;IAEvD,OAAO,CAAC,WAAW,CAAS;IAE5B,OAAO,CAAC,KAAK,CAA8C;IAE3D,OAAO,CAAC,aAAa,CAAS;IAE9B,OAAO,CAAC,MAAM,CAAe;IAE7B,OAAO,CAAC,WAAW,CAA4B;IAE/C,IAAI,cAAc,IAAI,cAAc,GAAG,IAAI,CAY1C;IAED,IAAI,OAAO,IAAI,WAAW,GAAG,IAAI,CAEhC;IAED,IAAI,EAAE,QAEL;IAED,IAAI,YAAY,IAAI,YAAY,GAAG,SAAS,CAE3C;IAED,IAAI,OAAO,YAEV;IAED,IAAI,KAAK,YAER;gBAGC,MAAM,EAAE,YAAY;IAKtB,EAAE,CAAC,CAAC,SAAS,WAAW,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAIlE,GAAG,CAAC,CAAC,SAAS,WAAW,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAInE,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC;IAIjC,IAAI,CAAC,aAAa,EAAE,WAAW;IA2BrC,OAAO;IAQP,KAAK;IAKL,IAAI;IAKJ,MAAM,CAAC,IAAI,EAAE,MAAM;IAKnB,IAAI;IAKJ,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,YAAY;IAI1C,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,YAAY;IAI5C,OAAO,CAAC,UAAU;YA0BJ,MAAM;IAuCpB,OAAO,CAAC,MAAM,CA0CZ;IAEF,OAAO,CAAC,gBAAgB;IAoCxB,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,wBAAwB;IAMhC,OAAO,CAAC,qBAAqB;CAuC9B"}
package/lib/Player.js CHANGED
@@ -1,18 +1,12 @@
1
- import { Browser, Log, Player as PlayerClappr, $, Loader, } from '@clappr/core';
1
+ import { Browser, Events as ClapprEvents, HTML5Video, Log, Player as PlayerClappr, $, Loader, } from '@clappr/core';
2
2
  import assert from 'assert';
3
- import Hls from 'hls.js';
4
3
  import EventLite from "event-lite";
4
+ import { reportError } from "./trace/index.js";
5
+ import { PlayerEvent, } from "./types.js";
6
+ import DashPlayback from './plugins/dash-playback/DashPlayback.js';
7
+ import HlsPlayback from './plugins/hls-playback/HlsPlayback.js';
5
8
  import '../assets/style/main.scss'; // TODO check if needed
6
- import { reportError, trace } from "./trace/index.js";
7
- export var PlayerEvent;
8
- (function (PlayerEvent) {
9
- PlayerEvent["Ready"] = "ready";
10
- PlayerEvent["Play"] = "play";
11
- PlayerEvent["Pause"] = "pause";
12
- PlayerEvent["Stop"] = "stop";
13
- PlayerEvent["Ended"] = "ended";
14
- })(PlayerEvent || (PlayerEvent = {}));
15
- const T = "Player";
9
+ const T = "GPlayer";
16
10
  const DEFAULT_OPTIONS = {
17
11
  autoPlay: false,
18
12
  mute: false,
@@ -28,8 +22,30 @@ export class Player {
28
22
  clapprReady = false;
29
23
  timer = null;
30
24
  tuneInEntered = false;
31
- supportedMediaTransports = [];
32
25
  config;
26
+ bitrateInfo = null;
27
+ get activePlayback() {
28
+ if (!this.player?.core.activePlayback) {
29
+ return null;
30
+ }
31
+ switch (this.player.core.activePlayback.name) {
32
+ case 'dash':
33
+ return 'dash';
34
+ case 'hls':
35
+ return 'hls';
36
+ default:
37
+ return 'native';
38
+ }
39
+ }
40
+ get bitrate() {
41
+ return this.bitrateInfo;
42
+ }
43
+ get hd() {
44
+ return this.player?.core.activePlayback?.isHighDefinitionInUse || false;
45
+ }
46
+ get playbackType() {
47
+ return this.player?.core.activePlayback?.getPlaybackType();
48
+ }
33
49
  get playing() {
34
50
  return this.player ? this.player.isPlaying() : false;
35
51
  }
@@ -45,29 +61,30 @@ export class Player {
45
61
  off(event, handler) {
46
62
  this.emitter.off(event, handler);
47
63
  }
64
+ configure(config) {
65
+ $.extend(true, this.config, config);
66
+ }
48
67
  async init(playerElement) {
49
68
  assert.ok(!this.player, 'Player already initialized');
50
- assert.ok(playerElement, 'Player element is required');
69
+ assert.ok(playerElement, 'Player container element is required');
51
70
  if (this.config.debug === 'all' ||
52
71
  this.config.debug === 'clappr') {
53
72
  Log.setLevel(0);
54
73
  }
55
- Log.debug('Config', this.config);
56
- this.configurePlugins();
57
- return this.loadPlugins().then(async () => {
58
- const coreOpts = this.buildCoreOptions(playerElement);
59
- const { core, container, } = Loader.registeredPlugins;
60
- coreOpts.plugins = {
61
- core: Object.values(core),
62
- container: Object.values(container),
63
- playback: Loader.registeredPlaybacks,
64
- };
65
- console.log('plugins', coreOpts.plugins);
66
- return this.initPlayer(coreOpts);
67
- });
74
+ Log.debug(T, 'Config', this.config);
75
+ this.configurePlaybacks();
76
+ const coreOpts = this.buildCoreOptions(playerElement);
77
+ const { core, container, } = Loader.registeredPlugins;
78
+ coreOpts.plugins = {
79
+ core: Object.values(core),
80
+ container: Object.values(container),
81
+ playback: Loader.registeredPlaybacks,
82
+ };
83
+ Log.debug(T, 'coreOpts', coreOpts);
84
+ return this.initPlayer(coreOpts);
68
85
  }
69
86
  destroy() {
70
- trace(`${T} destroy`, { player: !!this.player });
87
+ Log.debug(T, 'destroy', { player: !!this.player });
71
88
  if (this.player) {
72
89
  this.player.destroy();
73
90
  this.player = null;
@@ -92,8 +109,8 @@ export class Player {
92
109
  static registerPlugin(plugin) {
93
110
  Loader.registerPlugin(plugin);
94
111
  }
95
- loadPlugins() {
96
- return Promise.all(this.pluginLoaders.map((loader) => loader())).then(() => { });
112
+ static unregisterPlugin(plugin) {
113
+ Loader.unregisterPlugin(plugin);
97
114
  }
98
115
  initPlayer(coreOptions) {
99
116
  assert.ok(!this.player, 'Player already initialized');
@@ -117,7 +134,7 @@ export class Player {
117
134
  // TODO sort this out
118
135
  async tuneIn() {
119
136
  assert.ok(this.player);
120
- trace(`${T} tuneIn enter`, {
137
+ Log.debug(T, 'tuneIn enter', {
121
138
  ready: this.clapprReady,
122
139
  tuneInEntered: this.tuneInEntered,
123
140
  });
@@ -126,6 +143,18 @@ export class Player {
126
143
  }
127
144
  this.tuneInEntered = true;
128
145
  const player = this.player;
146
+ try {
147
+ this.emitter.emit(PlayerEvent.Ready);
148
+ }
149
+ catch (e) {
150
+ reportError(e);
151
+ }
152
+ if (player.core.activeContainer) {
153
+ this.bindBitrateChangeHandler();
154
+ }
155
+ player.core.on(ClapprEvents.CORE_ACTIVE_CONTAINER_CHANGED, () => {
156
+ this.bindBitrateChangeHandler();
157
+ }, null);
129
158
  if (Browser.isiOS &&
130
159
  player.core.activePlayback) {
131
160
  player.core.activePlayback.$el.on('webkitendfullscreen', () => {
@@ -138,40 +167,19 @@ export class Player {
138
167
  });
139
168
  }
140
169
  }
141
- configurePlugins() {
142
- if (!Browser.isiOS && this.config.multisources.some((el) => el.sourceDash)) {
143
- this.scheduleLoad(async () => {
144
- const module = await import('./plugins/dash-playback/DashPlayback.js');
145
- Loader.registerPlayback(module.default);
146
- });
147
- }
148
- // TODO remove !isiOS?
149
- // if (!Browser.isiOS && this.config.multisources.some((el) => el.hls_mpegts_url)) {
150
- if (this.config.multisources.some((el) => el.hlsMpegtsUrl || el.hlsCmafUrl || el.source.endsWith('.m3u8'))) {
151
- this.scheduleLoad(async () => {
152
- const module = await import('./plugins/hls-playback/HlsPlayback.js');
153
- Loader.registerPlayback(module.default);
154
- });
155
- }
156
- }
157
170
  events = {
158
171
  onReady: () => {
172
+ Log.debug(T, 'onReady', { clapprReady: this.clapprReady, player: !!this.player, core: !!this.player?.core, activeContainer: !!this.player?.core.activeContainer });
159
173
  if (this.clapprReady) {
160
174
  return;
161
175
  }
162
176
  this.clapprReady = true;
177
+ // TODO figure out what's for
163
178
  if (this.timer) {
164
179
  clearTimeout(this.timer);
165
180
  this.timer = null;
166
181
  }
167
- trace(`${T} onReady`);
168
182
  setTimeout(() => this.tuneIn(), 0);
169
- try {
170
- this.emitter.emit(PlayerEvent.Ready);
171
- }
172
- catch (e) {
173
- reportError(e);
174
- }
175
183
  },
176
184
  onPlay: () => {
177
185
  try {
@@ -207,19 +215,20 @@ export class Player {
207
215
  },
208
216
  };
209
217
  buildCoreOptions(playerElement) {
210
- this.checkMediaTransportsSupport();
211
- const multisources = this.processMultisources(this.config.priorityTransport);
212
- const mediaSources = multisources.map(ms => ms.source);
213
- const mainSource = this.findMainSource();
214
- const mainSourceUrl = unwrapSource(mainSource ? this.selectMediaTransport(mainSource, this.config.priorityTransport) : undefined);
218
+ const multisources = this.config.multisources;
219
+ const mainSource = this.config.playbackType === 'live' ? multisources.find(ms => ms.live !== false) : multisources[0];
220
+ const mediaSources = mainSource ? this.buildMediaSourcesList(mainSource) : [];
221
+ const mainSourceUrl = mediaSources[0];
215
222
  const poster = mainSource?.poster ?? this.config.poster;
216
223
  const coreOptions = {
224
+ ...this.config.pluginSettings,
217
225
  autoPlay: this.config.autoPlay,
218
226
  debug: this.config.debug || 'none',
219
227
  events: this.events,
228
+ height: playerElement.clientHeight,
229
+ loop: this.config.loop,
220
230
  multisources,
221
231
  mute: this.config.mute,
222
- ...this.config.pluginSettings,
223
232
  playback: {
224
233
  controls: false,
225
234
  preload: Browser.isiOS ? 'metadata' : 'none',
@@ -233,78 +242,59 @@ export class Player {
233
242
  playbackType: this.config.playbackType,
234
243
  poster,
235
244
  width: playerElement.clientWidth,
236
- height: playerElement.clientHeight,
237
- loop: this.config.loop,
238
- strings: this.config.strings,
239
245
  source: mainSourceUrl,
240
246
  sources: mediaSources,
247
+ strings: this.config.strings,
241
248
  };
242
- trace(`${T} buildCoreOptions`, coreOptions);
243
249
  return coreOptions;
244
250
  }
245
- findMainSource() {
246
- return this.config.multisources.find(ms => ms.live !== false);
251
+ configurePlaybacks() {
252
+ Loader.registerPlayback(DashPlayback);
253
+ Loader.registerPlayback(HlsPlayback);
254
+ Loader.registerPlayback(HTML5Video);
247
255
  }
248
- scheduleLoad(cb) {
249
- this.pluginLoaders.push(cb);
250
- }
251
- selectMediaTransport(ms, priorityTransport = ms.priorityTransport) {
252
- const cmafUrl = ms.hlsCmafUrl || ms.source; // source is default url for hls
253
- const mpegtsUrl = ms.hlsMpegtsUrl; // no-low-latency HLS
254
- const dashUrl = ms.sourceDash;
255
- const masterSource = ms.source;
256
- const mts = this.getAvailableTransportsPreference(priorityTransport);
257
- for (const mt of mts) {
258
- switch (mt) {
259
- case 'dash':
260
- if (dashUrl) {
261
- return dashUrl;
262
- }
263
- break;
264
- case 'hls':
265
- if (cmafUrl) {
266
- return cmafUrl;
267
- }
268
- break;
269
- default:
270
- return mpegtsUrl || masterSource;
271
- }
272
- }
273
- // no supported transport found
274
- return '';
256
+ bindBitrateChangeHandler() {
257
+ this.player?.core.activeContainer.on(ClapprEvents.CONTAINER_BITRATE, (bitrate) => {
258
+ this.bitrateInfo = bitrate;
259
+ });
275
260
  }
276
- getAvailableTransportsPreference(priorityTransport) {
277
- const mtp = [];
278
- if (priorityTransport !== 'auto' && this.supportedMediaTransports.includes(priorityTransport)) {
279
- mtp.push(priorityTransport);
261
+ buildMediaSourcesList(ms) {
262
+ const msl = [];
263
+ const sources = {
264
+ dash: ms.sourceDash,
265
+ master: ms.source,
266
+ hls: ms.hlsCmafUrl,
267
+ mpegts: ms.hlsMpegtsUrl,
268
+ };
269
+ switch (this.config.priorityTransport) {
270
+ case 'dash':
271
+ if (sources.dash) {
272
+ msl.push(sources.dash);
273
+ sources.dash = null;
274
+ }
275
+ break;
276
+ case 'hls':
277
+ if (sources.hls) {
278
+ msl.push(sources.hls);
279
+ sources.hls = null;
280
+ }
281
+ if (sources.master?.endsWith('.m3u8')) {
282
+ msl.push(sources.master);
283
+ sources.master = null;
284
+ }
285
+ break;
286
+ case 'mpegts':
287
+ if (sources.mpegts) {
288
+ msl.push(sources.mpegts);
289
+ sources.mpegts = null;
290
+ }
291
+ break;
280
292
  }
281
- for (const mt of this.supportedMediaTransports) {
282
- if (mt !== priorityTransport) {
283
- mtp.push(mt);
293
+ Object.values(sources).forEach(s => {
294
+ if (s) {
295
+ msl.push(s);
284
296
  }
285
- }
286
- return mtp;
287
- }
288
- checkMediaTransportsSupport() {
289
- const isDashSupported = typeof (globalThis.MediaSource || globalThis.WebKitMediaSource) === 'function';
290
- if (isDashSupported) {
291
- this.supportedMediaTransports.push('dash');
292
- }
293
- if (Hls.isSupported()) {
294
- this.supportedMediaTransports.push('hls');
295
- }
296
- this.supportedMediaTransports.push('mpegts');
297
- }
298
- processMultisources(transport) {
299
- return this.config.multisources.map((ms) => ({
300
- ...ms,
301
- source: this.selectMediaTransport(ms, transport),
302
- })).filter((el) => !!el.source);
303
- }
304
- }
305
- function unwrapSource(s) {
306
- if (!s) {
307
- return;
297
+ });
298
+ return msl;
308
299
  }
309
- return typeof s === "string" ? s : s.source;
310
300
  }
package/lib/backend.js CHANGED
@@ -1,8 +1,8 @@
1
1
  export function fromStreamMediaSourceDto(s) {
2
2
  return ({
3
3
  ...s,
4
- hlsCmafUrl: s.hls_cmaf_url,
5
- hlsMpegtsUrl: s.hls_mpegts_url,
4
+ hlsCmafUrl: s.hls_cmaf_url ?? null,
5
+ hlsMpegtsUrl: s.hls_mpegts_url ?? null,
6
6
  priorityTransport: s.priority_transport,
7
7
  sourceDash: s.source_dash,
8
8
  vtt: s.vtt,
package/lib/index.d.ts CHANGED
@@ -7,4 +7,5 @@ export * from "./trace/index.js";
7
7
  export * from "./trace/types.js";
8
8
  export * from "./types.js";
9
9
  export * from "./utils/Logger.js";
10
+ export * from "./version.js";
10
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC"}
package/lib/index.js CHANGED
@@ -7,3 +7,4 @@ export * from "./trace/index.js";
7
7
  export * from "./trace/types.js";
8
8
  export * from "./types.js";
9
9
  export * from "./utils/Logger.js";
10
+ export * from "./version.js";
@@ -1,5 +1,11 @@
1
- import type { CorePlugin, ContainerPlugin, Playback as PlaybackPlugin, ExternalTrack } from "@clappr/core";
1
+ import type { CorePlugin, ContainerPlugin, Playback as ClapprPlayback } from "@clappr/core";
2
2
  import { PlaybackType, PlayerDebugTag, StreamMediaSource } from "./types";
3
+ type ExternalTrack = {
4
+ kind?: "subtitles" | "captions";
5
+ src: string;
6
+ label: string;
7
+ lang: string;
8
+ };
3
9
  type MediacontrolStyles = {
4
10
  seekbar?: string;
5
11
  buttons?: string;
@@ -54,10 +60,11 @@ export type CorePlayerEvents = {
54
60
  export type ClapprVersionSpec = {
55
61
  min: string;
56
62
  };
63
+ export type PlaybackPluginFactory = typeof ClapprPlayback;
57
64
  export type CorePluginOptions = {
58
65
  core?: CorePlugin[];
59
66
  container?: ContainerPlugin[];
60
- playback?: PlaybackPlugin[];
67
+ playback?: PlaybackPluginFactory[];
61
68
  loadExternalPluginsFirst?: boolean;
62
69
  loadExternalPlaybacksFirst?: boolean;
63
70
  };
@@ -1 +1 @@
1
- {"version":3,"file":"internal.types.d.ts","sourceRoot":"","sources":["../src/internal.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"internal.types.d.ts","sourceRoot":"","sources":["../src/internal.types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"DashPlayback.d.ts","sourceRoot":"","sources":["../../../src/plugins/dash-playback/DashPlayback.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DashPlayback.d.ts","sourceRoot":"","sources":["../../../src/plugins/dash-playback/DashPlayback.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,6 @@
4
4
  import { Events, HTML5Video, Log, Playback, /* PlayerError, */ Utils } from '@clappr/core';
5
5
  import assert from 'assert'; // uses Node.js's assert types
6
6
  import DASHJS from 'dashjs';
7
- import { trace } from '../../trace/index.js';
8
7
  const AUTO = -1;
9
8
  const { now } = Utils;
10
9
  const T = "DashPlayback";
@@ -166,7 +165,6 @@ export default class DashPlayback extends HTML5Video {
166
165
  }
167
166
  }
168
167
  _setup() {
169
- trace(`${T} _setup`, { el: this.el });
170
168
  const dash = DASHJS.MediaPlayer().create();
171
169
  this._dash = dash;
172
170
  this._dash.initialize();
@@ -181,7 +179,6 @@ export default class DashPlayback extends HTML5Video {
181
179
  this._dash.on(DASHJS.MediaPlayer.events.PLAYBACK_ERROR, this._onPlaybackError);
182
180
  this._dash.on(DASHJS.MediaPlayer.events.STREAM_INITIALIZED, () => {
183
181
  const bitrates = dash.getBitrateInfoListFor('video');
184
- trace(`${T} STREAM_INITIALIZED`, { bitrates });
185
182
  this._updatePlaybackType();
186
183
  this._fillLevels(bitrates);
187
184
  dash.on(DASHJS.MediaPlayer.events.QUALITY_CHANGE_REQUESTED, (evt) => {
@@ -193,13 +190,10 @@ export default class DashPlayback extends HTML5Video {
193
190
  });
194
191
  });
195
192
  this._dash.on(DASHJS.MediaPlayer.events.METRIC_ADDED, (e) => {
196
- // console.log(`${T} onMetricAdded`, e);
197
- // TODO
198
193
  // Listen for the first manifest request in order to update player UI
199
194
  if (e.metric === 'DVRInfo') { // TODO fix typings
200
195
  assert.ok(this._dash, 'An instance of dashjs MediaPlayer is required to get metrics');
201
196
  const dvrInfo = this._dash.getDashMetrics().getCurrentDVRInfo('video');
202
- // trace(`${T} onMetricAdded DVRInfo`, {metric: e.metric, dvrInfo});
203
197
  if (dvrInfo) {
204
198
  // Extract time info
205
199
  this.manifestInfo = dvrInfo.manifestInfo;
@@ -455,7 +449,6 @@ export default class DashPlayback extends HTML5Video {
455
449
  this.trigger(Events.PLAYBACK_PROGRESS, progress, {});
456
450
  }
457
451
  play() {
458
- trace(`${T} play`, { dash: !!this._dash });
459
452
  if (!this._dash) {
460
453
  this._setup();
461
454
  }
@@ -493,12 +486,8 @@ export default class DashPlayback extends HTML5Video {
493
486
  _updatePlaybackType() {
494
487
  assert.ok(this._dash, 'An instance of dashjs MediaPlayer is required to update the playback type');
495
488
  this._playbackType = this._dash.isDynamic() ? Playback.LIVE : Playback.VOD;
496
- trace(`${T} _updatePlaybackType`, {
497
- playbackType: this._playbackType,
498
- });
499
489
  }
500
490
  _fillLevels(levels) {
501
- // trace(`${T} _fillLevels`, {levels});
502
491
  // TOOD check that levels[i].qualityIndex === i
503
492
  this._levels = levels.map((level) => {
504
493
  return { id: level.qualityIndex, level: level };
@@ -631,7 +620,6 @@ export default class DashPlayback extends HTML5Video {
631
620
  // this.trigger(Events.PLAYBACK_FRAGMENT_LOADED, data);
632
621
  // }
633
622
  onLevelSwitch(currentLevel) {
634
- trace(`${T} onLevelSwitch`, { currentLevel });
635
623
  this.trigger(Events.PLAYBACK_BITRATE, {
636
624
  height: currentLevel.height,
637
625
  width: currentLevel.width,
@@ -647,12 +635,11 @@ export default class DashPlayback extends HTML5Video {
647
635
  }
648
636
  }
649
637
  DashPlayback.canPlay = function (resource, mimeType) {
650
- console.log(`${T} canPlay resource:%s mimeType:%s`, resource, mimeType);
651
638
  const resourceParts = resource.split('?')[0].match(/.*\.(.*)$/) || [];
652
639
  const isDash = ((resourceParts.length > 1 && resourceParts[1].toLowerCase() === 'mpd') ||
653
640
  mimeType === 'application/dash+xml' || mimeType === 'video/mp4');
654
641
  const ctor = window.MediaSource || ('WebKitMediaSource' in window ? window.WebKitMediaSource : undefined);
655
- const isSupportByBrowser = typeof ctor === 'function';
656
- console.log(`${T} canPlay isSupportByBrowser:%s isDash:%s`, isSupportByBrowser, isDash);
657
- return !!(isSupportByBrowser && isDash);
642
+ const hasBrowserSupport = typeof ctor === 'function';
643
+ Log.debug(T, 'canPlay', { hasBrowserSupport, isDash });
644
+ return !!(hasBrowserSupport && isDash);
658
645
  };
@@ -1 +1 @@
1
- {"version":3,"file":"HlsPlayback.d.ts","sourceRoot":"","sources":["../../../src/plugins/hls-playback/HlsPlayback.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HlsPlayback.d.ts","sourceRoot":"","sources":["../../../src/plugins/hls-playback/HlsPlayback.ts"],"names":[],"mappings":"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"}
@@ -743,5 +743,9 @@ export default class HlsPlayback extends HTML5Video {
743
743
  HlsPlayback.canPlay = function (resource, mimeType) {
744
744
  const resourceParts = resource.split('?')[0].match(/.*\.(.*)$/) || [];
745
745
  const isHls = ((resourceParts.length > 1 && resourceParts[1].toLowerCase() === 'm3u8') || listContainsIgnoreCase(mimeType, ['application/vnd.apple.mpegurl', 'application/x-mpegURL']));
746
- return !!(HLSJS.isSupported() && isHls);
746
+ const isSupported = HLSJS.isSupported();
747
+ Log.debug(T, 'canPlay', {
748
+ isSupported, isHls,
749
+ });
750
+ return !!(isSupported && isHls);
747
751
  };
package/lib/types.d.ts CHANGED
@@ -5,7 +5,7 @@ export type MediaTransport = 'dash' | 'hls' | 'mpegts';
5
5
  export type TransportPreference = MediaTransport | 'auto';
6
6
  export type PlayerPlugin = {
7
7
  new (...args: any[]): unknown;
8
- type: 'core' | 'container' | 'playback';
8
+ type: string;
9
9
  };
10
10
  export type PlayerConfig = {
11
11
  autoPlay?: boolean;
@@ -61,8 +61,8 @@ export type StreamMediaSourceDto = {
61
61
  export type StreamMediaSource = {
62
62
  description: string;
63
63
  dvr: boolean;
64
- hlsCmafUrl?: string;
65
- hlsMpegtsUrl?: string;
64
+ hlsCmafUrl: string | null;
65
+ hlsMpegtsUrl: string | null;
66
66
  id: number;
67
67
  live: boolean;
68
68
  priorityTransport: TransportPreference;
@@ -78,5 +78,18 @@ export type StreamMediaSource = {
78
78
  export type SrcProjectionType = 'regular' | '360' | 'vr180' | 'vr360tb';
79
79
  export type ProjectionType = '360' | '180' | '360_TB';
80
80
  export type TranslationSettings = Partial<Record<LangTag, Record<TranslationKey, string>>>;
81
+ export type BitrateInfo = {
82
+ height: number;
83
+ width: number;
84
+ bitrate: number;
85
+ level: number;
86
+ };
87
+ export declare enum PlayerEvent {
88
+ Ready = "ready",
89
+ Play = "play",
90
+ Pause = "pause",
91
+ Stop = "stop",
92
+ Ended = "ended"
93
+ }
81
94
  export {};
82
95
  //# sourceMappingURL=types.d.ts.map