movi-player 0.3.0 → 0.3.2

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 (61) hide show
  1. package/AGENTS.md +2 -0
  2. package/README.md +54 -7
  3. package/dist/core/MoviPlayer.d.ts +77 -1
  4. package/dist/core/MoviPlayer.d.ts.map +1 -1
  5. package/dist/core/MoviPlayer.js +667 -121
  6. package/dist/core/MoviPlayer.js.map +1 -1
  7. package/dist/core/PlayerState.js +1 -1
  8. package/dist/core/PlayerState.js.map +1 -1
  9. package/dist/decode/VideoDecoder.d.ts.map +1 -1
  10. package/dist/decode/VideoDecoder.js +6 -2
  11. package/dist/decode/VideoDecoder.js.map +1 -1
  12. package/dist/demuxer.cjs +315 -129
  13. package/dist/demuxer.js +377 -191
  14. package/dist/element.cjs +58309 -16596
  15. package/dist/element.js +59520 -17807
  16. package/dist/index.cjs +58309 -16596
  17. package/dist/index.js +59520 -17807
  18. package/dist/player.cjs +56818 -15360
  19. package/dist/player.js +57818 -16360
  20. package/dist/render/DASHPlayerWrapper.d.ts +65 -0
  21. package/dist/render/DASHPlayerWrapper.d.ts.map +1 -0
  22. package/dist/render/DASHPlayerWrapper.js +540 -0
  23. package/dist/render/DASHPlayerWrapper.js.map +1 -0
  24. package/dist/render/HLSPlayerWrapper.d.ts.map +1 -1
  25. package/dist/render/HLSPlayerWrapper.js +47 -11
  26. package/dist/render/HLSPlayerWrapper.js.map +1 -1
  27. package/dist/render/MoviElement.d.ts +97 -0
  28. package/dist/render/MoviElement.d.ts.map +1 -1
  29. package/dist/render/MoviElement.js +852 -152
  30. package/dist/render/MoviElement.js.map +1 -1
  31. package/dist/render/ShakaPlayerWrapper.d.ts +111 -0
  32. package/dist/render/ShakaPlayerWrapper.d.ts.map +1 -0
  33. package/dist/render/ShakaPlayerWrapper.js +956 -0
  34. package/dist/render/ShakaPlayerWrapper.js.map +1 -0
  35. package/dist/source/DashFallback.d.ts +32 -0
  36. package/dist/source/DashFallback.d.ts.map +1 -0
  37. package/dist/source/DashFallback.js +142 -0
  38. package/dist/source/DashFallback.js.map +1 -0
  39. package/dist/source/DashManifest.d.ts +34 -0
  40. package/dist/source/DashManifest.d.ts.map +1 -0
  41. package/dist/source/DashManifest.js +194 -0
  42. package/dist/source/DashManifest.js.map +1 -0
  43. package/dist/source/DashSegmentSource.d.ts +32 -0
  44. package/dist/source/DashSegmentSource.d.ts.map +1 -0
  45. package/dist/source/DashSegmentSource.js +86 -0
  46. package/dist/source/DashSegmentSource.js.map +1 -0
  47. package/dist/source/HttpSource.d.ts +64 -0
  48. package/dist/source/HttpSource.d.ts.map +1 -1
  49. package/dist/source/HttpSource.js +444 -57
  50. package/dist/source/HttpSource.js.map +1 -1
  51. package/dist/source/ThumbnailHttpSource.d.ts +13 -0
  52. package/dist/source/ThumbnailHttpSource.d.ts.map +1 -1
  53. package/dist/source/ThumbnailHttpSource.js +70 -8
  54. package/dist/source/ThumbnailHttpSource.js.map +1 -1
  55. package/dist/source/index.d.ts +2 -0
  56. package/dist/source/index.d.ts.map +1 -1
  57. package/dist/source/index.js +1 -0
  58. package/dist/source/index.js.map +1 -1
  59. package/dist/types.d.ts +10 -0
  60. package/dist/types.d.ts.map +1 -1
  61. package/package.json +16 -6
@@ -0,0 +1,111 @@
1
+ import { EventEmitter } from "../events/EventEmitter";
2
+ import { PlayerEventMap, PlayerState, PlayerConfig, VideoTrack, AudioTrack, SubtitleTrack } from "../types";
3
+ import { TrackManager } from "../core/TrackManager";
4
+ export declare class ShakaPlayerWrapper extends EventEmitter<PlayerEventMap> {
5
+ private config;
6
+ private player;
7
+ private videoElement;
8
+ private canvasRenderer;
9
+ private state;
10
+ trackManager: TrackManager;
11
+ private frameCallbackId;
12
+ private _framesRendered;
13
+ private variants;
14
+ private videoRenditions;
15
+ private audioRenditions;
16
+ private textTracks;
17
+ private imageTrackId;
18
+ private spriteCache;
19
+ private textContainer;
20
+ private textStyle;
21
+ private _loaded;
22
+ constructor(config: PlayerConfig);
23
+ private setupTrackSwitching;
24
+ private activeVariant;
25
+ /**
26
+ * Map a Shaka error to a plain, user-facing message. The technical code and
27
+ * category are logged for developers but never surfaced in the UI — viewers
28
+ * see why playback failed in everyday language, not "Shaka … (code 6012)".
29
+ * Categories follow shaka.util.Error.Category (thousands digit of the code).
30
+ */
31
+ private friendlyMessage;
32
+ private setupEventHandlers;
33
+ private setState;
34
+ private startFrameLoop;
35
+ private stopFrameLoop;
36
+ private renderFrame;
37
+ /**
38
+ * Ensure the external LCEVC decoder library (lcevc_dec.js) is present. Returns
39
+ * true if the global `LCEVCdec` is available — lazy-loading it from `url` when
40
+ * given. The library is proprietary (V-Nova) and not bundled, so LCEVC is
41
+ * opt-in and degrades gracefully to base-layer playback when it's missing.
42
+ */
43
+ private ensureLcevcLib;
44
+ load(): Promise<void>;
45
+ /**
46
+ * Audio-only (data-saver) mode. Picks a true audio-only variant when the
47
+ * manifest exposes one (zero video bandwidth); otherwise pins the SMALLEST
48
+ * video rendition (most of the saving without breaking a stream whose audio
49
+ * is only muxed with video). ABR is disabled so it doesn't climb back up.
50
+ * Toggling off re-enables ABR. NOT done via manifest.disableVideo — that
51
+ * fails (Shaka 4032) on HLS streams with no separate audio-only variant.
52
+ */
53
+ setAudioOnly(enabled: boolean): void;
54
+ /** Build the video/audio/subtitle track lists from Shaka's manifest. */
55
+ private updateTracks;
56
+ /** True for a live (dynamic) stream — drives the LIVE indicator UI. */
57
+ isLive(): boolean;
58
+ /** True when the stream carries audio but no video (→ audio-strip layout). */
59
+ isAudioOnly(): boolean;
60
+ /** Live edge time (seekable range end) — where "go live" jumps to. */
61
+ getLiveEdge(): number;
62
+ /** Start of the seekable (DVR) window — used to scale the live progress bar. */
63
+ getSeekRangeStart(): number;
64
+ /** Size the canvas from the highest rendition (or the <video> dims). */
65
+ private sizeCanvasToTopRendition;
66
+ play(): Promise<void>;
67
+ pause(): void;
68
+ seek(time: number): Promise<void>;
69
+ getState(): PlayerState;
70
+ getDuration(): number;
71
+ getCurrentTime(): number;
72
+ setVolume(volume: number): void;
73
+ setMuted(muted: boolean): void;
74
+ setPlaybackRate(rate: number): void;
75
+ getVolume(): number;
76
+ isMuted(): boolean;
77
+ getPlaybackRate(): number;
78
+ setSubtitleOverlay(_element: HTMLElement): void;
79
+ setHDREnabled(enabled: boolean): void;
80
+ getVideoElement(): HTMLVideoElement;
81
+ getBufferEndTime(): number;
82
+ resizeCanvas(width: number, height: number): void;
83
+ /** Active rendition dimensions for the gear-badge UI (used in Auto mode). */
84
+ getActiveResolution(): {
85
+ width: number;
86
+ height: number;
87
+ };
88
+ /** True when the manifest carries a thumbnail/image track for seek previews. */
89
+ hasThumbnails(): boolean;
90
+ /** Fetch + decode a sprite sheet once, cached by URI. */
91
+ private loadSprite;
92
+ /**
93
+ * Seek-preview thumbnail for `time` as a JPEG Blob, or null if the manifest
94
+ * has no thumbnail track. Shaka resolves which tile in the sprite sheet maps
95
+ * to the time; we crop that tile out and hand back a Blob the existing
96
+ * MoviElement preview <img> can show — same contract as getPreviewFrame.
97
+ */
98
+ getThumbnailBlob(time: number): Promise<Blob | null>;
99
+ getVideoTracks(): VideoTrack[];
100
+ selectVideoTrack(id: number): void;
101
+ getAudioTracks(): AudioTrack[];
102
+ selectAudioTrack(id: number): boolean;
103
+ getSubtitleTracks(): SubtitleTrack[];
104
+ selectSubtitleTrack(id: number | null): Promise<boolean>;
105
+ setFitMode(mode: any): void;
106
+ getStats(): Record<string, string | number | boolean>;
107
+ getNetworkSpeed(): number;
108
+ isFileSource(): boolean;
109
+ destroy(): void;
110
+ }
111
+ //# sourceMappingURL=ShakaPlayerWrapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ShakaPlayerWrapper.d.ts","sourceRoot":"","sources":["../../src/render/ShakaPlayerWrapper.ts"],"names":[],"mappings":"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"}