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.
- package/AGENTS.md +2 -0
- package/README.md +54 -7
- package/dist/core/MoviPlayer.d.ts +77 -1
- package/dist/core/MoviPlayer.d.ts.map +1 -1
- package/dist/core/MoviPlayer.js +667 -121
- package/dist/core/MoviPlayer.js.map +1 -1
- package/dist/core/PlayerState.js +1 -1
- package/dist/core/PlayerState.js.map +1 -1
- package/dist/decode/VideoDecoder.d.ts.map +1 -1
- package/dist/decode/VideoDecoder.js +6 -2
- package/dist/decode/VideoDecoder.js.map +1 -1
- package/dist/demuxer.cjs +315 -129
- package/dist/demuxer.js +377 -191
- package/dist/element.cjs +58309 -16596
- package/dist/element.js +59520 -17807
- package/dist/index.cjs +58309 -16596
- package/dist/index.js +59520 -17807
- package/dist/player.cjs +56818 -15360
- package/dist/player.js +57818 -16360
- package/dist/render/DASHPlayerWrapper.d.ts +65 -0
- package/dist/render/DASHPlayerWrapper.d.ts.map +1 -0
- package/dist/render/DASHPlayerWrapper.js +540 -0
- package/dist/render/DASHPlayerWrapper.js.map +1 -0
- package/dist/render/HLSPlayerWrapper.d.ts.map +1 -1
- package/dist/render/HLSPlayerWrapper.js +47 -11
- package/dist/render/HLSPlayerWrapper.js.map +1 -1
- package/dist/render/MoviElement.d.ts +97 -0
- package/dist/render/MoviElement.d.ts.map +1 -1
- package/dist/render/MoviElement.js +852 -152
- package/dist/render/MoviElement.js.map +1 -1
- package/dist/render/ShakaPlayerWrapper.d.ts +111 -0
- package/dist/render/ShakaPlayerWrapper.d.ts.map +1 -0
- package/dist/render/ShakaPlayerWrapper.js +956 -0
- package/dist/render/ShakaPlayerWrapper.js.map +1 -0
- package/dist/source/DashFallback.d.ts +32 -0
- package/dist/source/DashFallback.d.ts.map +1 -0
- package/dist/source/DashFallback.js +142 -0
- package/dist/source/DashFallback.js.map +1 -0
- package/dist/source/DashManifest.d.ts +34 -0
- package/dist/source/DashManifest.d.ts.map +1 -0
- package/dist/source/DashManifest.js +194 -0
- package/dist/source/DashManifest.js.map +1 -0
- package/dist/source/DashSegmentSource.d.ts +32 -0
- package/dist/source/DashSegmentSource.d.ts.map +1 -0
- package/dist/source/DashSegmentSource.js +86 -0
- package/dist/source/DashSegmentSource.js.map +1 -0
- package/dist/source/HttpSource.d.ts +64 -0
- package/dist/source/HttpSource.d.ts.map +1 -1
- package/dist/source/HttpSource.js +444 -57
- package/dist/source/HttpSource.js.map +1 -1
- package/dist/source/ThumbnailHttpSource.d.ts +13 -0
- package/dist/source/ThumbnailHttpSource.d.ts.map +1 -1
- package/dist/source/ThumbnailHttpSource.js +70 -8
- package/dist/source/ThumbnailHttpSource.js.map +1 -1
- package/dist/source/index.d.ts +2 -0
- package/dist/source/index.d.ts.map +1 -1
- package/dist/source/index.js +1 -0
- package/dist/source/index.js.map +1 -1
- package/dist/types.d.ts +10 -0
- package/dist/types.d.ts.map +1 -1
- 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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"}
|