@gcorevideo/player 2.28.36 → 2.29.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 (42) hide show
  1. package/assets/media-control/media-control.scss +8 -6
  2. package/assets/multi-camera/multicamera.ejs +27 -23
  3. package/assets/multi-camera/style.scss +7 -34
  4. package/assets/style/main.scss +2 -2
  5. package/dist/core.js +8 -6
  6. package/dist/index.css +427 -449
  7. package/dist/index.embed.js +8 -45
  8. package/dist/index.js +77 -181
  9. package/docs/api/player.md +22 -9
  10. package/docs/api/player.mediacontrol.setkeepvisible.md +56 -0
  11. package/docs/api/player.multicamera.md +0 -28
  12. package/docs/api/player.multiccamerasourceinfo.md +27 -0
  13. package/docs/api/{player.multicamera.unbindevents.md → player.multisourcesmode.md} +4 -7
  14. package/docs/api/player.sourcecontroller.md +0 -37
  15. package/lib/playback/dash-playback/DashPlayback.d.ts +2 -1
  16. package/lib/playback/dash-playback/DashPlayback.d.ts.map +1 -1
  17. package/lib/playback/hls-playback/HlsPlayback.d.ts +2 -1
  18. package/lib/playback/hls-playback/HlsPlayback.d.ts.map +1 -1
  19. package/lib/playback/types.d.ts +9 -0
  20. package/lib/playback/types.d.ts.map +1 -1
  21. package/lib/playback.types.d.ts +0 -6
  22. package/lib/playback.types.d.ts.map +1 -1
  23. package/lib/plugins/multi-camera/MultiCamera.d.ts +21 -4
  24. package/lib/plugins/multi-camera/MultiCamera.d.ts.map +1 -1
  25. package/lib/plugins/multi-camera/MultiCamera.js +70 -134
  26. package/lib/plugins/source-controller/SourceController.d.ts +0 -39
  27. package/lib/plugins/source-controller/SourceController.d.ts.map +1 -1
  28. package/lib/plugins/source-controller/SourceController.js +0 -39
  29. package/lib/utils/mediaSources.d.ts +4 -0
  30. package/lib/utils/mediaSources.d.ts.map +1 -1
  31. package/lib/utils/mediaSources.js +8 -6
  32. package/package.json +1 -1
  33. package/src/playback/dash-playback/DashPlayback.ts +1 -2
  34. package/src/playback/hls-playback/HlsPlayback.ts +1 -1
  35. package/src/playback/types.ts +10 -0
  36. package/src/playback.types.ts +0 -6
  37. package/src/plugins/multi-camera/MultiCamera.ts +103 -166
  38. package/src/plugins/source-controller/SourceController.ts +0 -39
  39. package/src/plugins/subtitles/ClosedCaptions.ts +1 -1
  40. package/src/utils/mediaSources.ts +10 -6
  41. package/tsconfig.tsbuildinfo +1 -1
  42. package/docs/api/player.multicamera.activebyid.md +0 -67
@@ -0,0 +1,27 @@
1
+ <!-- Do not edit this file. It is automatically generated by API Documenter. -->
2
+
3
+ [Home](./index.md) &gt; [@gcorevideo/player](./player.md) &gt; [MulticCameraSourceInfo](./player.multiccamerasourceinfo.md)
4
+
5
+ ## MulticCameraSourceInfo type
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
+ Extended media source description
11
+
12
+ **Signature:**
13
+
14
+ ```typescript
15
+ export type MulticCameraSourceInfo = {
16
+ description: string;
17
+ dvr: boolean;
18
+ hls_mpegts_url: string | null;
19
+ id: number;
20
+ live: boolean;
21
+ projection: string | null;
22
+ screenshot: string | null;
23
+ source: string;
24
+ source_dash: string | null;
25
+ title: string;
26
+ };
27
+ ```
@@ -1,18 +1,15 @@
1
1
  <!-- Do not edit this file. It is automatically generated by API Documenter. -->
2
2
 
3
- [Home](./index.md) &gt; [@gcorevideo/player](./player.md) &gt; [MultiCamera](./player.multicamera.md) &gt; [unBindEvents](./player.multicamera.unbindevents.md)
3
+ [Home](./index.md) &gt; [@gcorevideo/player](./player.md) &gt; [MultisourcesMode](./player.multisourcesmode.md)
4
4
 
5
- ## MultiCamera.unBindEvents() method
5
+ ## MultisourcesMode type
6
6
 
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
+
10
11
  **Signature:**
11
12
 
12
13
  ```typescript
13
- unBindEvents(): void;
14
+ export type MultisourcesMode = 'one_first' | 'only_live' | 'show_all';
14
15
  ```
15
- **Returns:**
16
-
17
- void
18
-
@@ -15,43 +15,6 @@ export declare class SourceController extends CorePlugin
15
15
 
16
16
  ## Remarks
17
17
 
18
- Have a look at the [source failover diagram](https://miro.com/app/board/uXjVLiN15tY=/?share_link_id=390327585787) for the details on how sources ordering and selection works. Below is a simplified diagram:
19
-
20
- ```markdown
21
- sources_list:
22
- - a.mpd | +--------------------+
23
- - b.m3u8 |--->| init |
24
- - ... | |--------------------|
25
- | current_source = 0 |
26
- +--------------------+
27
- |
28
- | source = a.mpd
29
- | playback = dash.js
30
- v
31
- +------------------+
32
- +-->| load source |
33
- | +---------|--------+
34
- | v
35
- | +------------------+
36
- | | play |
37
- | +---------|--------+
38
- | |
39
- | v
40
- | +-----------------------+
41
- | | on playback_error |
42
- | |-----------------------|
43
- | | current_source = |
44
- | | (current_source + 1) |
45
- | | % len sources_list |
46
- | | |
47
- | | delay 1..3s |
48
- | +---------------|-------+
49
- | |
50
- | source=b.m3u8 |
51
- | playback=hls.js |
52
- +-------------------+
53
-
54
- ```
55
18
 
56
19
  ## Example
57
20
 
@@ -1,7 +1,8 @@
1
1
  import { Playback } from '@clappr/core';
2
2
  import { MediaPlayerClass, IManifestInfo } from 'dashjs';
3
- import { QualityLevel, TimePosition, TimeValue, VTTCueInfo } from '../../playback.types.js';
3
+ import { QualityLevel, TimePosition, TimeValue } from '../../playback.types.js';
4
4
  import { BasePlayback } from '../BasePlayback.js';
5
+ import { VTTCueInfo } from '../types.js';
5
6
  import { AudioTrack } from '@clappr/core/types/base/playback/playback.js';
6
7
  type PlaybackType = typeof Playback.VOD | typeof Playback.LIVE | typeof Playback.AOD | typeof Playback.NO_OP;
7
8
  type PlaylistType = string;
@@ -1 +1 @@
1
- {"version":3,"file":"DashPlayback.d.ts","sourceRoot":"","sources":["../../../src/playback/dash-playback/DashPlayback.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DashPlayback.d.ts","sourceRoot":"","sources":["../../../src/playback/dash-playback/DashPlayback.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,9 @@
1
1
  import HLSJS, { Events as HlsEvents, type LevelSwitchingData } from 'hls.js';
2
- import { QualityLevel, VTTCueInfo } from '../../playback.types.js';
2
+ import { QualityLevel } from '../../playback.types.js';
3
3
  import { PlaybackType } from '../../types.js';
4
4
  import { BasePlayback } from '../BasePlayback.js';
5
5
  import { AudioTrack } from '@clappr/core/types/base/playback/playback.js';
6
+ import { VTTCueInfo } from '../types.js';
6
7
  export default class HlsPlayback extends BasePlayback {
7
8
  private _ccTracksUpdated;
8
9
  private _currentFragment;
@@ -1 +1 @@
1
- {"version":3,"file":"HlsPlayback.d.ts","sourceRoot":"","sources":["../../../src/playback/hls-playback/HlsPlayback.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HlsPlayback.d.ts","sourceRoot":"","sources":["../../../src/playback/hls-playback/HlsPlayback.ts"],"names":[],"mappings":"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"}
@@ -6,4 +6,13 @@ export declare enum PlaybackEvents {
6
6
  */
7
7
  PLAYBACK_RATE_CHANGED = "playback:rate-changed"
8
8
  }
9
+ /**
10
+ * @internal
11
+ */
12
+ export type VTTCueInfo = {
13
+ id: string;
14
+ start: number;
15
+ end: number;
16
+ text: string;
17
+ };
9
18
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/playback/types.ts"],"names":[],"mappings":"AAAA,oBAAY,cAAc;IACxB;;;;OAIG;IACH,qBAAqB,0BAA0B;CAChD"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/playback/types.ts"],"names":[],"mappings":"AAAA,oBAAY,cAAc;IACxB;;;;OAIG;IACH,qBAAqB,0BAA0B;CAChD;AAED;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;CACb,CAAA"}
@@ -135,10 +135,4 @@ export interface PlaybackError {
135
135
  icon?: string;
136
136
  };
137
137
  }
138
- export type VTTCueInfo = {
139
- id: string;
140
- start: number;
141
- end: number;
142
- text: string;
143
- };
144
138
  //# sourceMappingURL=playback.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"playback.types.d.ts","sourceRoot":"","sources":["../src/playback.types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,CAAA;AAE9B;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,OAAO,EAAE,SAAS,CAAA;IAClB;;OAEG;IACH,KAAK,EAAE,SAAS,CAAA;CACjB;AAED;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB;;OAEG;IACH,KAAK,EAAE,SAAS,CAAA;IAChB;;OAEG;IACH,OAAO,EAAE,SAAS,CAAA;IAClB;;OAEG;IACH,KAAK,EAAE,SAAS,CAAA;CACjB,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG,YAAY,CAAA;AAErC;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAA;IACb;;OAEG;IACH,KAAK,EAAE,MAAM,CAAA;IACb;;OAEG;IACH,MAAM,EAAE,MAAM,CAAA;IACd;;OAEG;IACH,OAAO,EAAE,MAAM,CAAA;CAChB;AAED;;;GAGG;AACH,oBAAY,iBAAiB;IAC3B;;OAEG;IACH,OAAO,kBAAkB;IACzB;;OAEG;IACH,sBAAsB,6BAA6B;IACnD;;OAEG;IACH,uBAAuB,+BAA+B;CACvD;AAED;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAA;AAElD;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG,WAAW,GAAG,MAAM,GAAG,UAAU,CAAA;AAEnE;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,IAAI,EAAE,iBAAiB,CAAA;IACvB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAA;IACnB;;OAEG;IACH,KAAK,EAAE,UAAU,CAAA;IACjB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAA;IACf;;;;;;OAMG;IACH,MAAM,EAAE,MAAM,CAAA;IACd;;OAEG;IACH,KAAK,EAAE,mBAAmB,CAAA;IAE1B;;OAEG;IACH,EAAE,CAAC,EAAE;QACH,KAAK,EAAE,MAAM,CAAA;QACb,OAAO,EAAE,MAAM,CAAA;QACf,IAAI,CAAC,EAAE,MAAM,CAAA;KACd,CAAA;CACF;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;CACb,CAAA"}
1
+ {"version":3,"file":"playback.types.d.ts","sourceRoot":"","sources":["../src/playback.types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,CAAA;AAE9B;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,OAAO,EAAE,SAAS,CAAA;IAClB;;OAEG;IACH,KAAK,EAAE,SAAS,CAAA;CACjB;AAED;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB;;OAEG;IACH,KAAK,EAAE,SAAS,CAAA;IAChB;;OAEG;IACH,OAAO,EAAE,SAAS,CAAA;IAClB;;OAEG;IACH,KAAK,EAAE,SAAS,CAAA;CACjB,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG,YAAY,CAAA;AAErC;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAA;IACb;;OAEG;IACH,KAAK,EAAE,MAAM,CAAA;IACb;;OAEG;IACH,MAAM,EAAE,MAAM,CAAA;IACd;;OAEG;IACH,OAAO,EAAE,MAAM,CAAA;CAChB;AAED;;;GAGG;AACH,oBAAY,iBAAiB;IAC3B;;OAEG;IACH,OAAO,kBAAkB;IACzB;;OAEG;IACH,sBAAsB,6BAA6B;IACnD;;OAEG;IACH,uBAAuB,+BAA+B;CACvD;AAED;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAA;AAElD;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG,WAAW,GAAG,MAAM,GAAG,UAAU,CAAA;AAEnE;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,IAAI,EAAE,iBAAiB,CAAA;IACvB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAA;IACnB;;OAEG;IACH,KAAK,EAAE,UAAU,CAAA;IACjB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAA;IACf;;;;;;OAMG;IACH,MAAM,EAAE,MAAM,CAAA;IACd;;OAEG;IACH,KAAK,EAAE,mBAAmB,CAAA;IAE1B;;OAEG;IACH,EAAE,CAAC,EAAE;QACH,KAAK,EAAE,MAAM,CAAA;QACb,OAAO,EAAE,MAAM,CAAA;QACf,IAAI,CAAC,EAAE,MAAM,CAAA;KACd,CAAA;CACF"}
@@ -1,5 +1,25 @@
1
1
  import { Core, UICorePlugin } from '@clappr/core';
2
2
  import '../../../assets/multi-camera/style.scss';
3
+ /**
4
+ * @beta
5
+ */
6
+ export type MultisourcesMode = 'one_first' | 'only_live' | 'show_all';
7
+ /**
8
+ * Extended media source description
9
+ * @beta
10
+ */
11
+ export type MulticCameraSourceInfo = {
12
+ description: string;
13
+ dvr: boolean;
14
+ hls_mpegts_url: string | null;
15
+ id: number;
16
+ live: boolean;
17
+ projection: string | null;
18
+ screenshot: string | null;
19
+ source: string;
20
+ source_dash: string | null;
21
+ title: string;
22
+ };
3
23
  /**
4
24
  * `PLUGIN` that adds support for loading multiple streams and switching between them using the media control UI.
5
25
  * @beta
@@ -26,14 +46,13 @@ export declare class MultiCamera extends UICorePlugin {
26
46
  };
27
47
  constructor(core: Core);
28
48
  bindEvents(): void;
29
- unBindEvents(): void;
49
+ private unBindEvents;
30
50
  private onPlay;
31
51
  private bindPlaybackEvents;
32
52
  private reload;
33
53
  private shouldRender;
34
54
  render(): this;
35
55
  private onCameraSelect;
36
- activeById(id: number, active: boolean): void;
37
56
  private setLiveStatus;
38
57
  private behaviorLive;
39
58
  private behaviorOne;
@@ -42,8 +61,6 @@ export declare class MultiCamera extends UICorePlugin {
42
61
  private showError;
43
62
  private hideError;
44
63
  private changeById;
45
- private getCamerasList;
46
- private getCurrentCamera;
47
64
  private findElementById;
48
65
  private findIndexById;
49
66
  private onShowLevelSelectMenu;
@@ -1 +1 @@
1
- {"version":3,"file":"MultiCamera.d.ts","sourceRoot":"","sources":["../../../src/plugins/multi-camera/MultiCamera.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,IAAI,EAIJ,YAAY,EACb,MAAM,cAAc,CAAA;AAMrB,OAAO,yCAAyC,CAAA;AAqBhD;;;GAGG;AACH,qBAAa,WAAY,SAAQ,YAAY;IAC3C,OAAO,CAAC,aAAa,CAA+B;IAEpD,OAAO,CAAC,WAAW,CAAY;IAE/B,OAAO,CAAC,OAAO,CAAQ;IAEvB,OAAO,CAAC,WAAW,CAAwB;IAE3C,OAAO,CAAC,eAAe,CAAQ;IAE/B,IAAI,IAAI,WAEP;IAED,IAAI,gBAAgB;;MAEnB;IAED,MAAM,KAAK,OAAO,WAEjB;IAED,IAAI,QAAQ,QAEX;IAED,IAAa,UAAU;;;MAKtB;IAED,IAAa,MAAM;;;MAKlB;gBAEW,IAAI,EAAE,IAAI;IAiBb,UAAU;IAmBnB,YAAY;IAoBZ,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,MAAM;IAMd,OAAO,CAAC,YAAY;IAYX,MAAM;IAwFf,OAAO,CAAC,cAAc;IAWtB,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO;IA8BtC,OAAO,CAAC,aAAa;IAerB,OAAO,CAAC,YAAY;IAepB,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,WAAW;IAWnB,OAAO,CAAC,qBAAqB;IAsB7B,OAAO,CAAC,SAAS;IAmBjB,OAAO,CAAC,SAAS;IAQjB,OAAO,CAAC,UAAU;IAmDlB,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,qBAAqB;IAI7B,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,iBAAiB;IAYzB,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,qBAAqB;CAM9B"}
1
+ {"version":3,"file":"MultiCamera.d.ts","sourceRoot":"","sources":["../../../src/plugins/multi-camera/MultiCamera.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,IAAI,EAIJ,YAAY,EACb,MAAM,cAAc,CAAA;AAOrB,OAAO,yCAAyC,CAAA;AAKhD;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,WAAW,GAAG,WAAW,GAAG,UAAU,CAAA;AAErE;;;GAGG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACnC,WAAW,EAAE,MAAM,CAAA;IACnB,GAAG,EAAE,OAAO,CAAA;IACZ,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,OAAO,CAAA;IACb,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAMD;;;GAGG;AACH,qBAAa,WAAY,SAAQ,YAAY;IAC3C,OAAO,CAAC,aAAa,CAAsC;IAE3D,OAAO,CAAC,WAAW,CAAY;IAE/B,OAAO,CAAC,OAAO,CAAQ;IAEvB,OAAO,CAAC,WAAW,CAA+B;IAElD,OAAO,CAAC,eAAe,CAAQ;IAE/B,IAAI,IAAI,WAEP;IAED,IAAI,gBAAgB;;MAEnB;IAED,MAAM,KAAK,OAAO,WAEjB;IAED,IAAI,QAAQ,QAEX;IAED,IAAa,UAAU;;;MAKtB;IAED,IAAa,MAAM;;;MAKlB;gBAEW,IAAI,EAAE,IAAI;IAmBb,UAAU;IAmBnB,OAAO,CAAC,YAAY;IAgBpB,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,MAAM;IAMd,OAAO,CAAC,YAAY;IAQX,MAAM;IA2Df,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,aAAa;IAerB,OAAO,CAAC,YAAY;IAepB,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,WAAW;IAWnB,OAAO,CAAC,qBAAqB;IAqB7B,OAAO,CAAC,SAAS;IAmBjB,OAAO,CAAC,SAAS;IAQjB,OAAO,CAAC,UAAU;IA0ClB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,qBAAqB;IAI7B,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,qBAAqB;CAM9B"}
@@ -1,11 +1,10 @@
1
1
  import { Browser, Events, Playback, template, UICorePlugin, } from '@clappr/core';
2
2
  import { reportError, trace } from '@gcorevideo/utils';
3
+ import { guessMimeType, MIME_TYPE_DASH } from '../../utils/mediaSources.js';
3
4
  import { CLAPPR_VERSION } from '../../build.js';
4
5
  import pluginHtml from '../../../assets/multi-camera/multicamera.ejs';
5
6
  import '../../../assets/multi-camera/style.scss';
6
7
  import streamsIcon from '../../../assets/icons/old/streams.svg';
7
- import streamsMomentoIcon from '../../../assets/icons/old/language.svg';
8
- import streamsWhiteNightsIcon from '../../../assets/icons/old/wn.svg';
9
8
  const VERSION = '0.0.1';
10
9
  const T = 'plugins.multicamera';
11
10
  /**
@@ -53,6 +52,8 @@ export class MultiCamera extends UICorePlugin {
53
52
  // Don't mutate the options, TODO check if some plugin observes the options.multicamera
54
53
  this.multicamera = this.options.multisources.map((item) => ({ ...item }));
55
54
  this.noActiveStreams = this.multicamera.every((item) => !item.live);
55
+ // TODO filter out non-live
56
+ this.core.options.sources = expandMediaSource(this.multicamera[0]);
56
57
  }
57
58
  bindEvents() {
58
59
  this.listenTo(this.core, Events.CORE_READY, this.bindPlaybackEvents);
@@ -61,15 +62,10 @@ export class MultiCamera extends UICorePlugin {
61
62
  this.listenTo(this.core.mediaControl, Events.MEDIACONTROL_HIDE, this.hideSelectLevelMenu);
62
63
  }
63
64
  unBindEvents() {
64
- // @ts-ignore
65
- this.stopListening(this.core, Events.CORE_READY);
66
- // @ts-ignore
67
- this.stopListening(this.core.mediaControl, Events.MEDIACONTROL_CONTAINERCHANGED);
68
- // @ts-ignore
69
- this.stopListening(this.core.mediaControl, Events.MEDIACONTROL_RENDERED);
70
- // @ts-ignore
71
- this.stopListening(this.core.mediaControl, Events.MEDIACONTROL_HIDE);
72
- // @ts-ignore
65
+ this.stopListening(this.core, Events.CORE_READY, this.bindPlaybackEvents);
66
+ this.stopListening(this.core.mediaControl, Events.MEDIACONTROL_CONTAINERCHANGED, this.reload);
67
+ this.stopListening(this.core.mediaControl, Events.MEDIACONTROL_RENDERED, this.render);
68
+ this.stopListening(this.core.mediaControl, Events.MEDIACONTROL_HIDE, this.hideSelectLevelMenu);
73
69
  this.stopListening(this.core.activePlayback, Events.PLAYBACK_PLAY, this.onPlay);
74
70
  }
75
71
  onPlay() {
@@ -85,80 +81,53 @@ export class MultiCamera extends UICorePlugin {
85
81
  this.bindPlaybackEvents();
86
82
  }
87
83
  shouldRender() {
88
- if (!this.core.activeContainer || this.noActiveStreams) {
89
- return false;
90
- }
91
- if (!this.core.activePlayback) {
84
+ if (this.noActiveStreams) {
92
85
  return false;
93
86
  }
94
87
  return this.multicamera.length >= 2;
95
88
  }
96
89
  render() {
97
- if (this.shouldRender()) {
98
- let numActiveSources = 0;
99
- // const currentSource = this.core.options.source
100
- const currentSource = this.core.activePlayback?.sourceMedia;
101
- for (const item of this.multicamera) {
102
- if (item.live) {
103
- numActiveSources++;
104
- }
105
- if (!this.currentCamera && item.source === currentSource) {
106
- this.currentCamera = item;
107
- }
108
- }
109
- // const mediaControl = this.core.getPlugin('media_control')
110
- if (this.currentTime &&
111
- // TODO check the last active playback type instead
112
- // !mediaControl.$el.hasClass('live') &&
113
- this.core.getPlaybackType() !== Playback.LIVE) {
114
- if (this.currentTime < this.core.activePlayback.getDuration()) {
115
- this.core.activePlayback.seek(this.currentTime);
116
- }
117
- this.currentTime = 0;
118
- // if (mediaControl.$el.hasClass('dvr')) {
119
- // this.core.activeContainer.dvrInUse = true;
120
- // }
121
- }
122
- // TODO current source
123
- this.$el.html(this.template({
124
- streams: this.multicamera,
125
- multisources_mode: this.options.multisourcesMode,
126
- }));
127
- if ((numActiveSources <= 1 &&
128
- this.options.multisourcesMode !== 'show_all') ||
129
- this.options.multisourcesMode === 'one_first') {
130
- this.$el.hide();
131
- }
132
- else {
133
- this.$el.show();
134
- }
135
- if (this.core.mediaControl.$multiCameraSelector &&
136
- this.core.mediaControl.$multiCameraSelector.length > 0) {
137
- this.core.mediaControl.$multiCameraSelector.append(this.el);
90
+ if (!this.core.activeContainer || !this.core.activePlayback) {
91
+ return this;
92
+ }
93
+ if (!this.shouldRender()) {
94
+ return this;
95
+ }
96
+ let numActiveSources = 0;
97
+ const currentSource = this.core.activePlayback?.sourceMedia;
98
+ for (const item of this.multicamera) {
99
+ if (item.live) {
100
+ numActiveSources++;
138
101
  }
139
- else {
140
- this.core.mediaControl.$('.media-control-right-panel').append(this.el);
102
+ if (!this.currentCamera && item.source === currentSource) {
103
+ this.currentCamera = item;
141
104
  }
142
- if (Object.prototype.hasOwnProperty.call(this.core.mediaControl, '$multiCameraSelector') &&
143
- this.core.mediaControl.$multiCameraSelector.find('span.multicamera-icon').length > 0) {
144
- if (~window.location.href.indexOf('whitenights.gcdn.co')) {
145
- this.core.mediaControl.$multiCameraSelector
146
- .find('span.multicamera-icon')
147
- .append(streamsWhiteNightsIcon);
148
- }
149
- else if (~window.location.href.indexOf('momentosolutions.gcdn.co')) {
150
- this.core.mediaControl.$multiCameraSelector
151
- .find('span.multicamera-icon')
152
- .append(streamsMomentoIcon);
153
- }
154
- else {
155
- this.core.mediaControl.$multiCameraSelector
156
- .find('span.multicamera-icon')
157
- .append(streamsIcon);
158
- }
105
+ }
106
+ if (this.currentTime &&
107
+ this.core.getPlaybackType() !== Playback.LIVE) {
108
+ if (this.currentTime < this.core.activePlayback.getDuration()) {
109
+ this.core.activePlayback.seek(this.currentTime);
159
110
  }
160
- this.highlightCurrentLevel();
111
+ this.currentTime = 0;
161
112
  }
113
+ this.$el.html(this.template({
114
+ streams: this.multicamera,
115
+ multisources_mode: this.options.multisourcesMode,
116
+ }));
117
+ if ((numActiveSources < 2 &&
118
+ this.options.multisourcesMode !== 'show_all') ||
119
+ this.options.multisourcesMode === 'one_first') {
120
+ this.$el.hide();
121
+ }
122
+ else {
123
+ this.$el.show();
124
+ }
125
+ const mediaControl = this.core.getPlugin('media_control');
126
+ mediaControl.slot('multicamera', this.$el);
127
+ this.$el
128
+ .find('span.multicamera-icon')
129
+ .html(streamsIcon);
130
+ this.highlightCurrentLevel();
162
131
  return this;
163
132
  }
164
133
  onCameraSelect(event) {
@@ -171,33 +140,6 @@ export class MultiCamera extends UICorePlugin {
171
140
  event.stopPropagation();
172
141
  return false;
173
142
  }
174
- activeById(id, active) {
175
- this.setLiveStatus(id, active);
176
- if (!this.currentCamera && !this.noActiveStreams) {
177
- return;
178
- }
179
- if (this.noActiveStreams && !active) {
180
- return;
181
- }
182
- if (this.currentCamera) {
183
- if (this.options.multisourcesMode === 'only_live') {
184
- this.behaviorLive(id, active);
185
- }
186
- if (this.options.multisourcesMode === 'one_first') {
187
- this.behaviorOne(id, active);
188
- }
189
- if (this.options.multisourcesMode === 'show_all') {
190
- this.behaviorAll(id, active);
191
- }
192
- }
193
- else {
194
- if (this.noActiveStreams && active) {
195
- this.changeById(id);
196
- this.noActiveStreams = false;
197
- }
198
- }
199
- this.render();
200
- }
201
143
  setLiveStatus(id, active) {
202
144
  try {
203
145
  const index = this.findIndexById(id);
@@ -260,7 +202,6 @@ export class MultiCamera extends UICorePlugin {
260
202
  this.currentCamera = null;
261
203
  this.noActiveStreams = true;
262
204
  this.core.trigger('core:multicamera:no_active_translation');
263
- // this.changeById(this.multicamera[nextIndex].id);
264
205
  }
265
206
  showError() {
266
207
  this.core.activePlayback.pause();
@@ -283,7 +224,7 @@ export class MultiCamera extends UICorePlugin {
283
224
  }
284
225
  hideError() {
285
226
  try {
286
- this.core.mediaControl.enableControlButton();
227
+ this.core.getPlugin('media_control')?.enableControlButton();
287
228
  }
288
229
  catch (error) {
289
230
  reportError(error);
@@ -293,14 +234,9 @@ export class MultiCamera extends UICorePlugin {
293
234
  trace(`${T} changeById`, { id });
294
235
  queueMicrotask(() => {
295
236
  const playbackOptions = this.core.options.playback || {};
296
- // TODO figure out what this does
237
+ // TODO figure out if it's needed
297
238
  playbackOptions.recycleVideo = Browser.isMobile;
298
- this.currentCamera = this.findElementById(id) ?? null;
299
- trace(`${T} changeById`, {
300
- id,
301
- currentCamera: this.currentCamera,
302
- multicamera: this.multicamera,
303
- });
239
+ this.currentCamera = this.findElementById(id);
304
240
  if (!this.currentCamera) {
305
241
  return;
306
242
  }
@@ -322,26 +258,16 @@ export class MultiCamera extends UICorePlugin {
322
258
  this.core.configure({
323
259
  playback: playbackOptions,
324
260
  source: this.currentCamera.source, // TODO ensure that the preferred transport is used
325
- video360: {
326
- // TODO
327
- projection: this.currentCamera.projection,
328
- },
329
261
  fullscreenDisable,
330
262
  autoPlay: this.playing,
331
263
  disableCanAutoPlay: true,
332
264
  });
333
- this.core.activeContainer.mediaControlDisabled = false;
265
+ this.core.activeContainer?.enableMediaControl();
334
266
  });
335
267
  this.toggleContextMenu();
336
268
  }
337
- getCamerasList() {
338
- return this.multicamera;
339
- }
340
- getCurrentCamera() {
341
- return this.currentCamera;
342
- }
343
269
  findElementById(id) {
344
- return this.multicamera.find((element) => element.id === id);
270
+ return this.multicamera.find((element) => element.id === id) ?? null;
345
271
  }
346
272
  findIndexById(id) {
347
273
  return this.multicamera.findIndex((element) => element.id === id);
@@ -351,20 +277,14 @@ export class MultiCamera extends UICorePlugin {
351
277
  }
352
278
  hideSelectLevelMenu() {
353
279
  ;
354
- this.$('.multicamera ul').hide();
280
+ this.$('ul').hide();
355
281
  }
356
282
  toggleContextMenu() {
357
283
  ;
358
- this.$('.multicamera ul').toggle();
359
- }
360
- // private buttonElement(): ZeptoResult {
361
- // return this.$('.multicamera button');
362
- // }
363
- // private buttonElementText(): ZeptoResult {
364
- // return this.$('.multicamera button .quality-text');
365
- // }
284
+ this.$('ul').toggle();
285
+ }
366
286
  levelElement(id) {
367
- return this.$('.multicamera ul li > div' +
287
+ return this.$('ul .multicamera-item' +
368
288
  (id !== undefined
369
289
  ? '[data-multicamera-selector-select="' + id + '"]'
370
290
  : ''));
@@ -376,3 +296,19 @@ export class MultiCamera extends UICorePlugin {
376
296
  this.levelElement(this.currentCamera.id).addClass('multicamera-active');
377
297
  }
378
298
  }
299
+ function expandMediaSource(source) {
300
+ const result = [{
301
+ source: source.source,
302
+ mimeType: guessMimeType(source.source),
303
+ }];
304
+ if (source.source_dash) {
305
+ result.push({
306
+ source: source.source_dash,
307
+ mimeType: MIME_TYPE_DASH,
308
+ });
309
+ }
310
+ if (source.hls_mpegts_url) {
311
+ result.push(source.hls_mpegts_url);
312
+ }
313
+ return result;
314
+ }
@@ -4,45 +4,6 @@ import { type PlayerMediaSourceDesc } from '../../types.js';
4
4
  * `PLUGIN` that is managing the automatic failover between media sources.
5
5
  * @public
6
6
  * @remarks
7
- * Have a look at the {@link https://miro.com/app/board/uXjVLiN15tY=/?share_link_id=390327585787 | source failover diagram} for the details
8
- * on how sources ordering and selection works. Below is a simplified diagram:
9
- *
10
- * ```markdown
11
- * sources_list:
12
- * - a.mpd | +--------------------+
13
- * - b.m3u8 |--->| init |
14
- * - ... | |--------------------|
15
- * | current_source = 0 |
16
- * +--------------------+
17
- * |
18
- * | source = a.mpd
19
- * | playback = dash.js
20
- * v
21
- * +------------------+
22
- * +-->| load source |
23
- * | +---------|--------+
24
- * | v
25
- * | +------------------+
26
- * | | play |
27
- * | +---------|--------+
28
- * | |
29
- * | v
30
- * | +-----------------------+
31
- * | | on playback_error |
32
- * | |-----------------------|
33
- * | | current_source = |
34
- * | | (current_source + 1) |
35
- * | | % len sources_list |
36
- * | | |
37
- * | | delay 1..3s |
38
- * | +---------------|-------+
39
- * | |
40
- * | source=b.m3u8 |
41
- * | playback=hls.js |
42
- * +-------------------+
43
- *
44
- * ```
45
- *
46
7
  * @example
47
8
  * ```ts
48
9
  * import { SourceController } from '@gcorevideo/player'
@@ -1 +1 @@
1
- {"version":3,"file":"SourceController.d.ts","sourceRoot":"","sources":["../../../src/plugins/source-controller/SourceController.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,UAAU,EACV,KAAK,IAAI,IAAI,UAAU,EACxB,MAAM,cAAc,CAAA;AAErB,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AAsB3D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AACH,qBAAa,gBAAiB,SAAQ,UAAU;IAwC9C,OAAO,CAAC,WAAW,CAA8B;IAEjD,OAAO,CAAC,kBAAkB,CAAI;IAE9B,OAAO,CAAC,YAAY,CAA6B;IAEjD,OAAO,CAAC,MAAM,CAAQ;IAEtB,OAAO,CAAC,QAAQ,CAAQ;IAExB,OAAO,CAAC,SAAS,CAAQ;IAEzB,OAAO,CAAC,IAAI,CAAiB;IAE7B;;OAEG;IACH,IAAI,IAAI,WAEP;IAED;;OAEG;IACH,IAAI,gBAAgB;;MAEnB;IAED;;OAEG;gBACS,IAAI,EAAE,UAAU;IAY5B;;;;;;;OAOG;IACH,cAAc,CAAC,WAAW,EAAE,qBAAqB,EAAE;IAQnD;;OAEG;IACM,UAAU;IAWnB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,wBAAwB;IAgBhC,OAAO,CAAC,2BAA2B;IAiDnC,OAAO,CAAC,KAAK;IAKb,OAAO,CAAC,aAAa;IAgCrB,OAAO,CAAC,kBAAkB;IAe1B;;OAEG;IACH,MAAM,KAAK,OAAO,WAEjB;CACF"}
1
+ {"version":3,"file":"SourceController.d.ts","sourceRoot":"","sources":["../../../src/plugins/source-controller/SourceController.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,UAAU,EACV,KAAK,IAAI,IAAI,UAAU,EACxB,MAAM,cAAc,CAAA;AAErB,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AAsB3D;;;;;;;;;;GAUG;AACH,qBAAa,gBAAiB,SAAQ,UAAU;IAwC9C,OAAO,CAAC,WAAW,CAA8B;IAEjD,OAAO,CAAC,kBAAkB,CAAI;IAE9B,OAAO,CAAC,YAAY,CAA6B;IAEjD,OAAO,CAAC,MAAM,CAAQ;IAEtB,OAAO,CAAC,QAAQ,CAAQ;IAExB,OAAO,CAAC,SAAS,CAAQ;IAEzB,OAAO,CAAC,IAAI,CAAiB;IAE7B;;OAEG;IACH,IAAI,IAAI,WAEP;IAED;;OAEG;IACH,IAAI,gBAAgB;;MAEnB;IAED;;OAEG;gBACS,IAAI,EAAE,UAAU;IAY5B;;;;;;;OAOG;IACH,cAAc,CAAC,WAAW,EAAE,qBAAqB,EAAE;IAQnD;;OAEG;IACM,UAAU;IAWnB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,wBAAwB;IAgBhC,OAAO,CAAC,2BAA2B;IAiDnC,OAAO,CAAC,KAAK;IAKb,OAAO,CAAC,aAAa;IAgCrB,OAAO,CAAC,kBAAkB;IAe1B;;OAEG;IACH,MAAM,KAAK,OAAO,WAEjB;CACF"}
@@ -15,45 +15,6 @@ function noSync(cb) {
15
15
  * `PLUGIN` that is managing the automatic failover between media sources.
16
16
  * @public
17
17
  * @remarks
18
- * Have a look at the {@link https://miro.com/app/board/uXjVLiN15tY=/?share_link_id=390327585787 | source failover diagram} for the details
19
- * on how sources ordering and selection works. Below is a simplified diagram:
20
- *
21
- * ```markdown
22
- * sources_list:
23
- * - a.mpd | +--------------------+
24
- * - b.m3u8 |--->| init |
25
- * - ... | |--------------------|
26
- * | current_source = 0 |
27
- * +--------------------+
28
- * |
29
- * | source = a.mpd
30
- * | playback = dash.js
31
- * v
32
- * +------------------+
33
- * +-->| load source |
34
- * | +---------|--------+
35
- * | v
36
- * | +------------------+
37
- * | | play |
38
- * | +---------|--------+
39
- * | |
40
- * | v
41
- * | +-----------------------+
42
- * | | on playback_error |
43
- * | |-----------------------|
44
- * | | current_source = |
45
- * | | (current_source + 1) |
46
- * | | % len sources_list |
47
- * | | |
48
- * | | delay 1..3s |
49
- * | +---------------|-------+
50
- * | |
51
- * | source=b.m3u8 |
52
- * | playback=hls.js |
53
- * +-------------------+
54
- *
55
- * ```
56
- *
57
18
  * @example
58
19
  * ```ts
59
20
  * import { SourceController } from '@gcorevideo/player'