ts-video-player 0.1.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/LICENSE.md +21 -0
- package/README.md +438 -0
- package/dist/cdn.d.ts +10 -0
- package/dist/cdn.d.ts.map +1 -0
- package/dist/cdn.min.js +1046 -0
- package/dist/cdn.min.js.map +54 -0
- package/dist/cdn.test.d.ts +2 -0
- package/dist/cdn.test.d.ts.map +1 -0
- package/dist/chunk-36x4yhjn.js +765 -0
- package/dist/chunk-36x4yhjn.js.map +12 -0
- package/dist/chunk-eajts2jv.js +4243 -0
- package/dist/chunk-eajts2jv.js.map +42 -0
- package/dist/chunk-z1ehbz9f.js +380 -0
- package/dist/chunk-z1ehbz9f.js.map +19 -0
- package/dist/config.d.ts +9 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/core/audio-gain.d.ts +67 -0
- package/dist/core/audio-gain.d.ts.map +1 -0
- package/dist/core/caption-styles.d.ts +121 -0
- package/dist/core/caption-styles.d.ts.map +1 -0
- package/dist/core/chapters.d.ts +150 -0
- package/dist/core/chapters.d.ts.map +1 -0
- package/dist/core/error-overlay.d.ts +71 -0
- package/dist/core/error-overlay.d.ts.map +1 -0
- package/dist/core/events.d.ts +119 -0
- package/dist/core/events.d.ts.map +1 -0
- package/dist/core/features.d.ts +64 -0
- package/dist/core/features.d.ts.map +1 -0
- package/dist/core/i18n.d.ts +132 -0
- package/dist/core/i18n.d.ts.map +1 -0
- package/dist/core/index.d.ts +37 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/live.d.ts +130 -0
- package/dist/core/live.d.ts.map +1 -0
- package/dist/core/media-session.d.ts +38 -0
- package/dist/core/media-session.d.ts.map +1 -0
- package/dist/core/orientation.d.ts +22 -0
- package/dist/core/orientation.d.ts.map +1 -0
- package/dist/core/popover.d.ts +42 -0
- package/dist/core/popover.d.ts.map +1 -0
- package/dist/core/remote-playback.d.ts +195 -0
- package/dist/core/remote-playback.d.ts.map +1 -0
- package/dist/core/settings-menu.d.ts +132 -0
- package/dist/core/settings-menu.d.ts.map +1 -0
- package/dist/core/spinner.d.ts +67 -0
- package/dist/core/spinner.d.ts.map +1 -0
- package/dist/core/state.d.ts +142 -0
- package/dist/core/state.d.ts.map +1 -0
- package/dist/core/text-tracks.d.ts +162 -0
- package/dist/core/text-tracks.d.ts.map +1 -0
- package/dist/core/themes.d.ts +213 -0
- package/dist/core/themes.d.ts.map +1 -0
- package/dist/core/thumbnails.d.ts +124 -0
- package/dist/core/thumbnails.d.ts.map +1 -0
- package/dist/core/tooltips.d.ts +100 -0
- package/dist/core/tooltips.d.ts.map +1 -0
- package/dist/elements/base.d.ts +3 -0
- package/dist/elements/base.d.ts.map +1 -0
- package/dist/elements/index.d.ts +33 -0
- package/dist/elements/index.d.ts.map +1 -0
- package/dist/elements/index.js +55 -0
- package/dist/elements/index.js.map +9 -0
- package/dist/elements/media-airplay-button.d.ts +13 -0
- package/dist/elements/media-airplay-button.d.ts.map +1 -0
- package/dist/elements/media-error-display.d.ts +13 -0
- package/dist/elements/media-error-display.d.ts.map +1 -0
- package/dist/elements/media-fullscreen-button.d.ts +13 -0
- package/dist/elements/media-fullscreen-button.d.ts.map +1 -0
- package/dist/elements/media-live-button.d.ts +13 -0
- package/dist/elements/media-live-button.d.ts.map +1 -0
- package/dist/elements/media-mute-button.d.ts +13 -0
- package/dist/elements/media-mute-button.d.ts.map +1 -0
- package/dist/elements/media-pip-button.d.ts +13 -0
- package/dist/elements/media-pip-button.d.ts.map +1 -0
- package/dist/elements/media-play-button.d.ts +14 -0
- package/dist/elements/media-play-button.d.ts.map +1 -0
- package/dist/elements/media-playback-rate-button.d.ts +10 -0
- package/dist/elements/media-playback-rate-button.d.ts.map +1 -0
- package/dist/elements/media-preview-time.d.ts +18 -0
- package/dist/elements/media-preview-time.d.ts.map +1 -0
- package/dist/elements/media-progress-bar.d.ts +16 -0
- package/dist/elements/media-progress-bar.d.ts.map +1 -0
- package/dist/elements/media-remote-playback-button.d.ts +16 -0
- package/dist/elements/media-remote-playback-button.d.ts.map +1 -0
- package/dist/elements/media-seek-button.d.ts +9 -0
- package/dist/elements/media-seek-button.d.ts.map +1 -0
- package/dist/elements/media-settings-menu.d.ts +32 -0
- package/dist/elements/media-settings-menu.d.ts.map +1 -0
- package/dist/elements/media-time-display.d.ts +21 -0
- package/dist/elements/media-time-display.d.ts.map +1 -0
- package/dist/elements/media-time-group.d.ts +22 -0
- package/dist/elements/media-time-group.d.ts.map +1 -0
- package/dist/elements/media-time-separator.d.ts +13 -0
- package/dist/elements/media-time-separator.d.ts.map +1 -0
- package/dist/elements/media-volume-slider.d.ts +16 -0
- package/dist/elements/media-volume-slider.d.ts.map +1 -0
- package/dist/elements/utils.d.ts +27 -0
- package/dist/elements/utils.d.ts.map +1 -0
- package/dist/elements/video-player.d.ts +23 -0
- package/dist/elements/video-player.d.ts.map +1 -0
- package/dist/elements/video-skin.d.ts +23 -0
- package/dist/elements/video-skin.d.ts.map +1 -0
- package/dist/features/captions.d.ts +8 -0
- package/dist/features/captions.d.ts.map +1 -0
- package/dist/features/create-player.d.ts +45 -0
- package/dist/features/create-player.d.ts.map +1 -0
- package/dist/features/fullscreen.d.ts +8 -0
- package/dist/features/fullscreen.d.ts.map +1 -0
- package/dist/features/gestures.d.ts +8 -0
- package/dist/features/gestures.d.ts.map +1 -0
- package/dist/features/index.d.ts +26 -0
- package/dist/features/index.d.ts.map +1 -0
- package/dist/features/index.js +31 -0
- package/dist/features/index.js.map +9 -0
- package/dist/features/keyboard.d.ts +8 -0
- package/dist/features/keyboard.d.ts.map +1 -0
- package/dist/features/pip.d.ts +8 -0
- package/dist/features/pip.d.ts.map +1 -0
- package/dist/features/playback.d.ts +8 -0
- package/dist/features/playback.d.ts.map +1 -0
- package/dist/features/quality.d.ts +8 -0
- package/dist/features/quality.d.ts.map +1 -0
- package/dist/features/types.d.ts +26 -0
- package/dist/features/types.d.ts.map +1 -0
- package/dist/features/volume.d.ts +8 -0
- package/dist/features/volume.d.ts.map +1 -0
- package/dist/index.d.ts +84 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8149 -0
- package/dist/index.js.map +31 -0
- package/dist/layouts/index.d.ts +58 -0
- package/dist/layouts/index.d.ts.map +1 -0
- package/dist/player.d.ts +90 -0
- package/dist/player.d.ts.map +1 -0
- package/dist/plugins/ads.d.ts +311 -0
- package/dist/plugins/ads.d.ts.map +1 -0
- package/dist/plugins/analytics.d.ts +203 -0
- package/dist/plugins/analytics.d.ts.map +1 -0
- package/dist/plugins/end-screen.d.ts +184 -0
- package/dist/plugins/end-screen.d.ts.map +1 -0
- package/dist/plugins/index.d.ts +13 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +20 -0
- package/dist/plugins/index.js.map +9 -0
- package/dist/plugins/skip-segments.d.ts +159 -0
- package/dist/plugins/skip-segments.d.ts.map +1 -0
- package/dist/plugins/watermark.d.ts +157 -0
- package/dist/plugins/watermark.d.ts.map +1 -0
- package/dist/providers/base.d.ts +56 -0
- package/dist/providers/base.d.ts.map +1 -0
- package/dist/providers/dash.d.ts +94 -0
- package/dist/providers/dash.d.ts.map +1 -0
- package/dist/providers/hls.d.ts +182 -0
- package/dist/providers/hls.d.ts.map +1 -0
- package/dist/providers/html5.d.ts +64 -0
- package/dist/providers/html5.d.ts.map +1 -0
- package/dist/providers/index.d.ts +41 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/vimeo.d.ts +157 -0
- package/dist/providers/vimeo.d.ts.map +1 -0
- package/dist/providers/youtube.d.ts +134 -0
- package/dist/providers/youtube.d.ts.map +1 -0
- package/dist/stx/index.d.ts +59 -0
- package/dist/stx/index.d.ts.map +1 -0
- package/dist/stx/index.js +480 -0
- package/dist/stx/index.js.map +11 -0
- package/dist/types.d.ts +724 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/ui/components.d.ts +121 -0
- package/dist/ui/components.d.ts.map +1 -0
- package/dist/ui/index.d.ts +9 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +16 -0
- package/dist/ui/index.js.map +9 -0
- package/package.json +109 -0
- package/src/cdn.test.ts +10 -0
- package/src/cdn.ts +60 -0
- package/src/config.ts +25 -0
- package/src/core/audio-gain.ts +171 -0
- package/src/core/caption-styles.ts +568 -0
- package/src/core/chapters.ts +551 -0
- package/src/core/error-overlay.ts +354 -0
- package/src/core/events.ts +552 -0
- package/src/core/features.ts +287 -0
- package/src/core/i18n.ts +590 -0
- package/src/core/index.ts +249 -0
- package/src/core/live.ts +472 -0
- package/src/core/media-session.ts +137 -0
- package/src/core/orientation.ts +57 -0
- package/src/core/popover.ts +143 -0
- package/src/core/remote-playback.ts +661 -0
- package/src/core/settings-menu.ts +630 -0
- package/src/core/spinner.ts +310 -0
- package/src/core/state.ts +476 -0
- package/src/core/text-tracks.ts +599 -0
- package/src/core/themes.ts +607 -0
- package/src/core/thumbnails.ts +457 -0
- package/src/core/tooltips.ts +370 -0
- package/src/elements/base.ts +2 -0
- package/src/elements/index.ts +82 -0
- package/src/elements/media-airplay-button.ts +78 -0
- package/src/elements/media-error-display.ts +47 -0
- package/src/elements/media-fullscreen-button.ts +72 -0
- package/src/elements/media-live-button.ts +65 -0
- package/src/elements/media-mute-button.ts +69 -0
- package/src/elements/media-pip-button.ts +66 -0
- package/src/elements/media-play-button.ts +69 -0
- package/src/elements/media-playback-rate-button.ts +59 -0
- package/src/elements/media-preview-time.ts +75 -0
- package/src/elements/media-progress-bar.ts +200 -0
- package/src/elements/media-remote-playback-button.ts +108 -0
- package/src/elements/media-seek-button.ts +50 -0
- package/src/elements/media-settings-menu.ts +302 -0
- package/src/elements/media-time-display.ts +99 -0
- package/src/elements/media-time-group.ts +41 -0
- package/src/elements/media-time-separator.ts +35 -0
- package/src/elements/media-volume-slider.ts +140 -0
- package/src/elements/utils.ts +82 -0
- package/src/elements/video-player.ts +175 -0
- package/src/elements/video-skin.ts +127 -0
- package/src/features/captions.ts +56 -0
- package/src/features/create-player.ts +91 -0
- package/src/features/fullscreen.ts +44 -0
- package/src/features/gestures.ts +44 -0
- package/src/features/index.ts +44 -0
- package/src/features/keyboard.ts +89 -0
- package/src/features/pip.ts +47 -0
- package/src/features/playback.ts +68 -0
- package/src/features/quality.ts +19 -0
- package/src/features/types.ts +28 -0
- package/src/features/volume.ts +46 -0
- package/src/index.ts +635 -0
- package/src/layouts/index.ts +672 -0
- package/src/player.ts +821 -0
- package/src/plugins/ads.ts +1045 -0
- package/src/plugins/analytics.ts +673 -0
- package/src/plugins/end-screen.ts +793 -0
- package/src/plugins/index.ts +61 -0
- package/src/plugins/skip-segments.ts +537 -0
- package/src/plugins/watermark.ts +537 -0
- package/src/providers/base.ts +197 -0
- package/src/providers/dash.ts +588 -0
- package/src/providers/hls.ts +624 -0
- package/src/providers/html5.ts +473 -0
- package/src/providers/index.ts +97 -0
- package/src/providers/vimeo.ts +533 -0
- package/src/providers/youtube.ts +542 -0
- package/src/stx/index.ts +606 -0
- package/src/types.ts +874 -0
- package/src/ui/components.ts +910 -0
- package/src/ui/index.ts +29 -0
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DASH Provider
|
|
3
|
+
*
|
|
4
|
+
* Media provider for MPEG-DASH streaming using dash.js.
|
|
5
|
+
*
|
|
6
|
+
* @module providers/dash
|
|
7
|
+
*/
|
|
8
|
+
import { BaseProvider } from './base';
|
|
9
|
+
import type { Src, ProviderLoader, VideoQuality, AudioTrack, TextTrack, DRMConfig } from '../types';
|
|
10
|
+
export interface DASHSource {
|
|
11
|
+
src: string;
|
|
12
|
+
type: 'dash';
|
|
13
|
+
/** DRM configuration */
|
|
14
|
+
drm?: DRMConfig;
|
|
15
|
+
}
|
|
16
|
+
export interface DASHProviderConfig {
|
|
17
|
+
/** Custom dash.js settings */
|
|
18
|
+
dashConfig?: Record<string, any>;
|
|
19
|
+
/** Enable low latency mode */
|
|
20
|
+
lowLatency?: boolean;
|
|
21
|
+
/** Retry parameters */
|
|
22
|
+
retry?: {
|
|
23
|
+
maxAttempts: number;
|
|
24
|
+
delay: number;
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Check if source is a DASH manifest
|
|
29
|
+
*/
|
|
30
|
+
export declare function isDASHSource(src: Src): src is DASHSource | string;
|
|
31
|
+
export declare class DASHProvider extends BaseProvider {
|
|
32
|
+
readonly name = "dash";
|
|
33
|
+
readonly type: "dash";
|
|
34
|
+
private dash;
|
|
35
|
+
private video;
|
|
36
|
+
private source;
|
|
37
|
+
private config;
|
|
38
|
+
private _volume;
|
|
39
|
+
private _muted;
|
|
40
|
+
private _playbackRate;
|
|
41
|
+
get mediaElement(): HTMLVideoElement | null;
|
|
42
|
+
/**
|
|
43
|
+
* Initialize the provider
|
|
44
|
+
*/
|
|
45
|
+
protected initialize(): Promise<void>;
|
|
46
|
+
/**
|
|
47
|
+
* Attach video element event listeners
|
|
48
|
+
*/
|
|
49
|
+
private attachVideoEvents;
|
|
50
|
+
/**
|
|
51
|
+
* Attach dash.js event listeners
|
|
52
|
+
*/
|
|
53
|
+
private attachDashEvents;
|
|
54
|
+
/**
|
|
55
|
+
* Configure DRM protection
|
|
56
|
+
*/
|
|
57
|
+
private configureDRM;
|
|
58
|
+
/**
|
|
59
|
+
* Load a source
|
|
60
|
+
*/
|
|
61
|
+
load(src: Src): Promise<void>;
|
|
62
|
+
/**
|
|
63
|
+
* Check if source can be played
|
|
64
|
+
*/
|
|
65
|
+
canPlay(src: Src): boolean;
|
|
66
|
+
/**
|
|
67
|
+
* Cleanup the provider
|
|
68
|
+
*/
|
|
69
|
+
protected cleanup(): void;
|
|
70
|
+
play(): Promise<void>;
|
|
71
|
+
pause(): void;
|
|
72
|
+
seekTo(time: number): void;
|
|
73
|
+
getCurrentTime(): number;
|
|
74
|
+
getDuration(): number;
|
|
75
|
+
setVolume(volume: number): void;
|
|
76
|
+
getVolume(): number;
|
|
77
|
+
setMuted(muted: boolean): void;
|
|
78
|
+
getMuted(): boolean;
|
|
79
|
+
setPlaybackRate(rate: number): void;
|
|
80
|
+
getPlaybackRate(): number;
|
|
81
|
+
get isLive(): boolean;
|
|
82
|
+
get liveLatency(): number;
|
|
83
|
+
get canLiveSync(): boolean;
|
|
84
|
+
syncToLive(): void;
|
|
85
|
+
getQualities(): VideoQuality[];
|
|
86
|
+
setQuality(quality: VideoQuality | 'auto'): void;
|
|
87
|
+
get isAutoQuality(): boolean;
|
|
88
|
+
getAudioTracks(): AudioTrack[];
|
|
89
|
+
setAudioTrack(trackId: string): void;
|
|
90
|
+
getTextTracks(): TextTrack[];
|
|
91
|
+
setTextTrackMode(trackId: string, mode: 'disabled' | 'hidden' | 'showing'): void;
|
|
92
|
+
}
|
|
93
|
+
export declare const dashLoader: ProviderLoader;
|
|
94
|
+
//# sourceMappingURL=dash.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dash.d.ts","sourceRoot":"","sources":["../../src/providers/dash.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AACrC,OAAO,KAAK,EACV,GAAG,EACH,cAAc,EACd,YAAY,EACZ,UAAU,EACV,SAAS,EAET,SAAS,EACV,MAAM,UAAU,CAAA;AAMjB,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,wBAAwB;IACxB,GAAG,CAAC,EAAE,SAAS,CAAA;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,8BAA8B;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAChC,8BAA8B;IAC9B,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,uBAAuB;IACvB,KAAK,CAAC,EAAE;QACN,WAAW,EAAE,MAAM,CAAA;QACnB,KAAK,EAAE,MAAM,CAAA;KACd,CAAA;CACF;AAkDD;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI,UAAU,GAAG,MAAM,CAUjE;AAMD,qBAAa,YAAa,SAAQ,YAAY;IAC5C,QAAQ,CAAC,IAAI,UAAS;IACtB,QAAQ,CAAC,IAAI,EAAG,MAAM,CAAS;IAE/B,OAAO,CAAC,IAAI,CAAY;IACxB,OAAO,CAAC,KAAK,CAAgC;IAC7C,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,OAAO,CAAI;IACnB,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,aAAa,CAAI;IAEzB,IAAI,YAAY,IAAI,gBAAgB,GAAG,IAAI,CAE1C;IAED;;OAEG;cACa,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAgD3C;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAkDzB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAyBxB;;OAEG;IACH,OAAO,CAAC,YAAY;IA4BpB;;OAEG;IACG,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAwBnC;;OAEG;IACH,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO;IAI1B;;OAEG;IACH,SAAS,CAAC,OAAO,IAAI,IAAI;IAkBnB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAa3B,KAAK,IAAI,IAAI;IAUb,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAM1B,cAAc,IAAI,MAAM;IAIxB,WAAW,IAAI,MAAM;IAQrB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAO/B,SAAS,IAAI,MAAM;IAInB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAO9B,QAAQ,IAAI,OAAO;IAQnB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAOnC,eAAe,IAAI,MAAM;IAQzB,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED,UAAU,IAAI,IAAI;IAUlB,YAAY,IAAI,YAAY,EAAE;IAkB9B,UAAU,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,GAAG,IAAI;IAmBhD,IAAI,aAAa,IAAI,OAAO,CAI3B;IAMD,cAAc,IAAI,UAAU,EAAE;IAiB9B,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAepC,aAAa,IAAI,SAAS,EAAE;IAkB5B,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,IAAI;CAgBjF;AAMD,eAAO,MAAM,UAAU,EAAE,cAqBxB,CAAA"}
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ts-video-player HLS Provider
|
|
3
|
+
*
|
|
4
|
+
* HLS streaming provider using hls.js library.
|
|
5
|
+
* Supports adaptive bitrate streaming, quality selection, and live streams.
|
|
6
|
+
*
|
|
7
|
+
* @module providers/hls
|
|
8
|
+
*/
|
|
9
|
+
import type { ProviderType, Src, PlayerOptions, VideoQuality, AudioTrack, TextTrack } from '../types';
|
|
10
|
+
import { BaseProvider } from './base';
|
|
11
|
+
/**
|
|
12
|
+
* Check if source is an HLS source
|
|
13
|
+
*/
|
|
14
|
+
export declare function isHLSSource(src: Src): boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Check if native HLS is supported (Safari, iOS)
|
|
17
|
+
*/
|
|
18
|
+
export declare function isNativeHLSSupported(): boolean;
|
|
19
|
+
interface HlsConfig {
|
|
20
|
+
enableWorker?: boolean;
|
|
21
|
+
lowLatencyMode?: boolean;
|
|
22
|
+
backBufferLength?: number;
|
|
23
|
+
maxBufferLength?: number;
|
|
24
|
+
maxMaxBufferLength?: number;
|
|
25
|
+
startLevel?: number;
|
|
26
|
+
autoStartLoad?: boolean;
|
|
27
|
+
debug?: boolean;
|
|
28
|
+
[key: string]: unknown;
|
|
29
|
+
}
|
|
30
|
+
interface HlsLevel {
|
|
31
|
+
bitrate: number;
|
|
32
|
+
width: number;
|
|
33
|
+
height: number;
|
|
34
|
+
codecSet: string;
|
|
35
|
+
url: string[];
|
|
36
|
+
audioCodec?: string;
|
|
37
|
+
videoCodec?: string;
|
|
38
|
+
}
|
|
39
|
+
interface HlsAudioTrack {
|
|
40
|
+
id: number;
|
|
41
|
+
name: string;
|
|
42
|
+
lang?: string;
|
|
43
|
+
default: boolean;
|
|
44
|
+
autoselect: boolean;
|
|
45
|
+
forced: boolean;
|
|
46
|
+
url: string;
|
|
47
|
+
}
|
|
48
|
+
interface HlsSubtitleTrack {
|
|
49
|
+
id: number;
|
|
50
|
+
name: string;
|
|
51
|
+
lang?: string;
|
|
52
|
+
default: boolean;
|
|
53
|
+
autoselect: boolean;
|
|
54
|
+
forced: boolean;
|
|
55
|
+
url: string;
|
|
56
|
+
}
|
|
57
|
+
interface HlsEvents {
|
|
58
|
+
MEDIA_ATTACHED: string;
|
|
59
|
+
MEDIA_DETACHED: string;
|
|
60
|
+
MANIFEST_LOADED: string;
|
|
61
|
+
MANIFEST_PARSED: string;
|
|
62
|
+
LEVEL_LOADED: string;
|
|
63
|
+
LEVEL_SWITCHED: string;
|
|
64
|
+
AUDIO_TRACK_LOADED: string;
|
|
65
|
+
AUDIO_TRACK_SWITCHED: string;
|
|
66
|
+
SUBTITLE_TRACK_LOADED: string;
|
|
67
|
+
SUBTITLE_TRACK_SWITCH: string;
|
|
68
|
+
FRAG_LOADED: string;
|
|
69
|
+
FRAG_BUFFERED: string;
|
|
70
|
+
ERROR: string;
|
|
71
|
+
}
|
|
72
|
+
interface Hls {
|
|
73
|
+
config: HlsConfig;
|
|
74
|
+
media: HTMLVideoElement | null;
|
|
75
|
+
currentLevel: number;
|
|
76
|
+
nextLevel: number;
|
|
77
|
+
loadLevel: number;
|
|
78
|
+
autoLevelEnabled: boolean;
|
|
79
|
+
levels: HlsLevel[];
|
|
80
|
+
audioTracks: HlsAudioTrack[];
|
|
81
|
+
audioTrack: number;
|
|
82
|
+
subtitleTracks: HlsSubtitleTrack[];
|
|
83
|
+
subtitleTrack: number;
|
|
84
|
+
liveSyncPosition: number | null;
|
|
85
|
+
loadSource(src: string): void;
|
|
86
|
+
attachMedia(media: HTMLVideoElement): void;
|
|
87
|
+
detachMedia(): void;
|
|
88
|
+
startLoad(startPosition?: number): void;
|
|
89
|
+
stopLoad(): void;
|
|
90
|
+
recoverMediaError(): void;
|
|
91
|
+
destroy(): void;
|
|
92
|
+
on(event: string, handler: (...args: any[]) => void): void;
|
|
93
|
+
off(event: string, handler: (...args: any[]) => void): void;
|
|
94
|
+
}
|
|
95
|
+
interface HlsStatic {
|
|
96
|
+
new (config?: HlsConfig): Hls;
|
|
97
|
+
isSupported(): boolean;
|
|
98
|
+
Events: HlsEvents;
|
|
99
|
+
ErrorTypes: {
|
|
100
|
+
NETWORK_ERROR: string;
|
|
101
|
+
MEDIA_ERROR: string;
|
|
102
|
+
KEY_SYSTEM_ERROR: string;
|
|
103
|
+
MUX_ERROR: string;
|
|
104
|
+
OTHER_ERROR: string;
|
|
105
|
+
};
|
|
106
|
+
ErrorDetails: Record<string, string>;
|
|
107
|
+
}
|
|
108
|
+
declare global {
|
|
109
|
+
interface Window {
|
|
110
|
+
Hls?: HlsStatic;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* HLS streaming provider
|
|
115
|
+
*/
|
|
116
|
+
export declare class HLSProvider extends BaseProvider {
|
|
117
|
+
readonly name = "hls";
|
|
118
|
+
readonly type: ProviderType;
|
|
119
|
+
private video;
|
|
120
|
+
private hls;
|
|
121
|
+
private eventsNormalizer;
|
|
122
|
+
private cleanupFullscreen;
|
|
123
|
+
private cleanupPiP;
|
|
124
|
+
private useNativeHLS;
|
|
125
|
+
private _qualities;
|
|
126
|
+
private _audioTracks;
|
|
127
|
+
private _textTracks;
|
|
128
|
+
private currentQualityIndex;
|
|
129
|
+
get mediaElement(): HTMLVideoElement | null;
|
|
130
|
+
/**
|
|
131
|
+
* Whether live sync is supported
|
|
132
|
+
*/
|
|
133
|
+
get canLiveSync(): boolean;
|
|
134
|
+
/**
|
|
135
|
+
* Get HLS.js config
|
|
136
|
+
*/
|
|
137
|
+
get hlsConfig(): HlsConfig;
|
|
138
|
+
protected initialize(): Promise<void>;
|
|
139
|
+
private loadHLSLibrary;
|
|
140
|
+
protected cleanup(): void;
|
|
141
|
+
canPlay(src: Src): boolean;
|
|
142
|
+
load(src: Src): Promise<void>;
|
|
143
|
+
private attachHLSEvents;
|
|
144
|
+
private updateQualities;
|
|
145
|
+
private updateQualitySelection;
|
|
146
|
+
private updateAudioTracks;
|
|
147
|
+
private updateTextTracks;
|
|
148
|
+
play(): Promise<void>;
|
|
149
|
+
pause(): void;
|
|
150
|
+
seekTo(time: number): void;
|
|
151
|
+
getCurrentTime(): number;
|
|
152
|
+
getDuration(): number;
|
|
153
|
+
/**
|
|
154
|
+
* Sync to live edge (for live streams)
|
|
155
|
+
*/
|
|
156
|
+
syncToLive(): void;
|
|
157
|
+
setVolume(volume: number): void;
|
|
158
|
+
getVolume(): number;
|
|
159
|
+
setMuted(muted: boolean): void;
|
|
160
|
+
getMuted(): boolean;
|
|
161
|
+
setPlaybackRate(rate: number): void;
|
|
162
|
+
getPlaybackRate(): number;
|
|
163
|
+
getQualities(): VideoQuality[];
|
|
164
|
+
setQuality(quality: VideoQuality | 'auto'): void;
|
|
165
|
+
getAudioTracks(): AudioTrack[];
|
|
166
|
+
setAudioTrack(trackId: string): void;
|
|
167
|
+
getTextTracks(): TextTrack[];
|
|
168
|
+
setTextTrackMode(trackId: string, mode: 'disabled' | 'hidden' | 'showing'): void;
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* HLS Provider Loader
|
|
172
|
+
*/
|
|
173
|
+
export declare const hlsLoader: {
|
|
174
|
+
name: string;
|
|
175
|
+
type: ProviderType;
|
|
176
|
+
canPlay(src: Src): boolean;
|
|
177
|
+
mediaType(): "video";
|
|
178
|
+
preconnect(): string[];
|
|
179
|
+
load(container: HTMLElement, options: PlayerOptions): Promise<HLSProvider>;
|
|
180
|
+
};
|
|
181
|
+
export {};
|
|
182
|
+
//# sourceMappingURL=hls.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hls.d.ts","sourceRoot":"","sources":["../../src/providers/hls.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ts-video-player HTML5 Provider
|
|
3
|
+
*
|
|
4
|
+
* Native HTML5 video/audio element provider.
|
|
5
|
+
*
|
|
6
|
+
* @module providers/html5
|
|
7
|
+
*/
|
|
8
|
+
import type { ProviderType, Src, PlayerOptions, AudioTrack, TextTrack } from '../types';
|
|
9
|
+
import { BaseProvider } from './base';
|
|
10
|
+
/**
|
|
11
|
+
* Check if a source is an HTML5 compatible source
|
|
12
|
+
*/
|
|
13
|
+
export declare function isHTML5Source(src: Src): boolean;
|
|
14
|
+
/**
|
|
15
|
+
* HTML5 Video/Audio Provider
|
|
16
|
+
*/
|
|
17
|
+
export declare class HTML5Provider extends BaseProvider {
|
|
18
|
+
readonly name = "html5";
|
|
19
|
+
readonly type: ProviderType;
|
|
20
|
+
private media;
|
|
21
|
+
private eventsNormalizer;
|
|
22
|
+
private cleanupFullscreen;
|
|
23
|
+
private cleanupPiP;
|
|
24
|
+
private isAudio;
|
|
25
|
+
get mediaElement(): HTMLVideoElement | HTMLAudioElement | null;
|
|
26
|
+
protected initialize(): Promise<void>;
|
|
27
|
+
protected cleanup(): void;
|
|
28
|
+
canPlay(src: Src): boolean;
|
|
29
|
+
load(src: Src): Promise<void>;
|
|
30
|
+
play(): Promise<void>;
|
|
31
|
+
pause(): void;
|
|
32
|
+
seekTo(time: number): void;
|
|
33
|
+
getCurrentTime(): number;
|
|
34
|
+
getDuration(): number;
|
|
35
|
+
setVolume(volume: number): void;
|
|
36
|
+
getVolume(): number;
|
|
37
|
+
setMuted(muted: boolean): void;
|
|
38
|
+
getMuted(): boolean;
|
|
39
|
+
setPlaybackRate(rate: number): void;
|
|
40
|
+
getPlaybackRate(): number;
|
|
41
|
+
getTextTracks(): TextTrack[];
|
|
42
|
+
private getTrackCues;
|
|
43
|
+
setTextTrackMode(trackId: string, mode: 'disabled' | 'hidden' | 'showing'): void;
|
|
44
|
+
getAudioTracks(): AudioTrack[];
|
|
45
|
+
setAudioTrack(trackId: string): void;
|
|
46
|
+
addTextTrack(options: {
|
|
47
|
+
src?: string;
|
|
48
|
+
kind?: TextTrack['kind'];
|
|
49
|
+
label?: string;
|
|
50
|
+
language?: string;
|
|
51
|
+
default?: boolean;
|
|
52
|
+
}): void;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* HTML5 Provider Loader
|
|
56
|
+
*/
|
|
57
|
+
export declare const html5Loader: {
|
|
58
|
+
name: string;
|
|
59
|
+
type: ProviderType;
|
|
60
|
+
canPlay(src: Src): boolean;
|
|
61
|
+
mediaType(src: Src): "video" | "audio" | "unknown";
|
|
62
|
+
load(container: HTMLElement, options: PlayerOptions): Promise<HTML5Provider>;
|
|
63
|
+
};
|
|
64
|
+
//# sourceMappingURL=html5.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"html5.d.ts","sourceRoot":"","sources":["../../src/providers/html5.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,GAAG,EAEH,aAAa,EACb,UAAU,EACV,SAAS,EACV,MAAM,UAAU,CAAA;AACjB,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AAIrC;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAkC/C;AA6BD;;GAEG;AACH,qBAAa,aAAc,SAAQ,YAAY;IAC7C,QAAQ,CAAC,IAAI,WAAU;IACvB,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAU;IAErC,OAAO,CAAC,KAAK,CAAmD;IAChE,OAAO,CAAC,gBAAgB,CAAqC;IAC7D,OAAO,CAAC,iBAAiB,CAA4B;IACrD,OAAO,CAAC,UAAU,CAA4B;IAC9C,OAAO,CAAC,OAAO,CAAQ;IAEvB,IAAI,YAAY,IAAI,gBAAgB,GAAG,gBAAgB,GAAG,IAAI,CAE7D;cAIe,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAqG3C,SAAS,CAAC,OAAO,IAAI,IAAI;IAgBzB,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO;IAIpB,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAiC7B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAc3B,KAAK,IAAI,IAAI;IAMb,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAM1B,cAAc,IAAI,MAAM;IAIxB,WAAW,IAAI,MAAM;IAMrB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAM/B,SAAS,IAAI,MAAM;IAInB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAM9B,QAAQ,IAAI,OAAO;IAMnB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAMnC,eAAe,IAAI,MAAM;IAMzB,aAAa,IAAI,SAAS,EAAE;IAqB5B,OAAO,CAAC,YAAY;IAgBpB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,IAAI;IAahF,cAAc,IAAI,UAAU,EAAE;IAuB9B,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAiBpC,YAAY,CAAC,OAAO,EAAE;QACpB,GAAG,CAAC,EAAE,MAAM,CAAA;QACZ,IAAI,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAA;QACxB,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,OAAO,CAAC,EAAE,OAAO,CAAA;KAClB,GAAG,IAAI;CAYT;AAED;;GAEG;AACH,eAAO,MAAM,WAAW;;UAEL,YAAY;iBAEhB,GAAG,GAAG,OAAO;mBAIX,GAAG,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS;oBAiB5B,WAAW,WAAW,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;CAKnF,CAAA"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ts-video-player Providers
|
|
3
|
+
*
|
|
4
|
+
* Export all media providers.
|
|
5
|
+
*
|
|
6
|
+
* @module providers
|
|
7
|
+
*/
|
|
8
|
+
export { BaseProvider } from './base';
|
|
9
|
+
export { HTML5Provider, html5Loader, isHTML5Source } from './html5';
|
|
10
|
+
export { YouTubeProvider, youtubeLoader, isYouTubeSource, extractYouTubeId } from './youtube';
|
|
11
|
+
export { VimeoProvider, vimeoLoader, isVimeoSource, extractVimeoId, extractVimeoHash } from './vimeo';
|
|
12
|
+
export { HLSProvider, hlsLoader, isHLSSource, isNativeHLSSupported } from './hls';
|
|
13
|
+
export { DASHProvider, dashLoader, isDASHSource } from './dash';
|
|
14
|
+
export type { DASHSource, DASHProviderConfig } from './dash';
|
|
15
|
+
export type { DRMConfig } from '../types';
|
|
16
|
+
export type { Provider, ProviderLoader, ProviderType } from '../types';
|
|
17
|
+
import type { ProviderLoader, Src } from '../types';
|
|
18
|
+
/**
|
|
19
|
+
* Default provider loaders in priority order
|
|
20
|
+
*/
|
|
21
|
+
export declare const defaultLoaders: ProviderLoader[];
|
|
22
|
+
/**
|
|
23
|
+
* Find the appropriate provider loader for a source
|
|
24
|
+
*/
|
|
25
|
+
export declare function findLoader(src: Src, loaders?: ProviderLoader[]): ProviderLoader | null;
|
|
26
|
+
export interface SourceCandidate {
|
|
27
|
+
src: Src;
|
|
28
|
+
index: number;
|
|
29
|
+
loader: ProviderLoader;
|
|
30
|
+
}
|
|
31
|
+
/** Resolve every playable source without discarding ordered fallbacks. */
|
|
32
|
+
export declare function findSourceCandidates(sources: readonly Src[], loaders?: ProviderLoader[]): SourceCandidate[];
|
|
33
|
+
/**
|
|
34
|
+
* Detect media type from source
|
|
35
|
+
*/
|
|
36
|
+
export declare function detectMediaType(src: Src, loaders?: ProviderLoader[]): 'video' | 'audio' | 'unknown';
|
|
37
|
+
/**
|
|
38
|
+
* Get preconnect hints for a source
|
|
39
|
+
*/
|
|
40
|
+
export declare function getPreconnectHints(src: Src, loaders?: ProviderLoader[]): string[];
|
|
41
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AAGrC,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAGnE,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAG7F,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAGrG,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAA;AAGjF,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AAE/D,YAAY,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAA;AAC5D,YAAY,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAGzC,YAAY,EAAE,QAAQ,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAMtE,OAAO,KAAK,EAAE,cAAc,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAOnD;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,cAAc,EAM1C,CAAA;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,GAAE,cAAc,EAAmB,GAAG,cAAc,GAAG,IAAI,CAOtG;AAED,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,GAAG,CAAA;IACR,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,cAAc,CAAA;CACvB;AAED,0EAA0E;AAC1E,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,SAAS,GAAG,EAAE,EAAE,OAAO,GAAE,cAAc,EAAmB,GAAG,eAAe,EAAE,CAO3H;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,GAAE,cAAc,EAAmB,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,CAGnH;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,GAAE,cAAc,EAAmB,GAAG,MAAM,EAAE,CAGjG"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ts-video-player Vimeo Provider
|
|
3
|
+
*
|
|
4
|
+
* Vimeo embed provider using the Vimeo Player API.
|
|
5
|
+
*
|
|
6
|
+
* @module providers/vimeo
|
|
7
|
+
*/
|
|
8
|
+
import type { ProviderType, Src, PlayerOptions, VideoQuality } from '../types';
|
|
9
|
+
import { BaseProvider } from './base';
|
|
10
|
+
/**
|
|
11
|
+
* Extract Vimeo video ID from URL
|
|
12
|
+
*/
|
|
13
|
+
export declare function extractVimeoId(url: string): string | null;
|
|
14
|
+
/**
|
|
15
|
+
* Extract hash for private videos
|
|
16
|
+
*/
|
|
17
|
+
export declare function extractVimeoHash(url: string): string | null;
|
|
18
|
+
/**
|
|
19
|
+
* Check if source is a Vimeo source
|
|
20
|
+
*/
|
|
21
|
+
export declare function isVimeoSource(src: Src): boolean;
|
|
22
|
+
interface VimeoPlayerOptions {
|
|
23
|
+
id?: number;
|
|
24
|
+
url?: string;
|
|
25
|
+
autopause?: boolean;
|
|
26
|
+
autoplay?: boolean;
|
|
27
|
+
background?: boolean;
|
|
28
|
+
byline?: boolean;
|
|
29
|
+
color?: string;
|
|
30
|
+
controls?: boolean;
|
|
31
|
+
dnt?: boolean;
|
|
32
|
+
height?: number;
|
|
33
|
+
loop?: boolean;
|
|
34
|
+
maxheight?: number;
|
|
35
|
+
maxwidth?: number;
|
|
36
|
+
muted?: boolean;
|
|
37
|
+
playsinline?: boolean;
|
|
38
|
+
portrait?: boolean;
|
|
39
|
+
responsive?: boolean;
|
|
40
|
+
speed?: boolean;
|
|
41
|
+
title?: boolean;
|
|
42
|
+
transparent?: boolean;
|
|
43
|
+
width?: number;
|
|
44
|
+
}
|
|
45
|
+
interface VimeoPlayer {
|
|
46
|
+
ready(): Promise<void>;
|
|
47
|
+
play(): Promise<void>;
|
|
48
|
+
pause(): Promise<void>;
|
|
49
|
+
unload(): Promise<void>;
|
|
50
|
+
destroy(): Promise<void>;
|
|
51
|
+
getCurrentTime(): Promise<number>;
|
|
52
|
+
setCurrentTime(seconds: number): Promise<number>;
|
|
53
|
+
getDuration(): Promise<number>;
|
|
54
|
+
getVolume(): Promise<number>;
|
|
55
|
+
setVolume(volume: number): Promise<number>;
|
|
56
|
+
getMuted(): Promise<boolean>;
|
|
57
|
+
setMuted(muted: boolean): Promise<boolean>;
|
|
58
|
+
getLoop(): Promise<boolean>;
|
|
59
|
+
setLoop(loop: boolean): Promise<boolean>;
|
|
60
|
+
getPlaybackRate(): Promise<number>;
|
|
61
|
+
setPlaybackRate(rate: number): Promise<number>;
|
|
62
|
+
getPaused(): Promise<boolean>;
|
|
63
|
+
getEnded(): Promise<boolean>;
|
|
64
|
+
getVideoTitle(): Promise<string>;
|
|
65
|
+
getVideoWidth(): Promise<number>;
|
|
66
|
+
getVideoHeight(): Promise<number>;
|
|
67
|
+
getVideoId(): Promise<number>;
|
|
68
|
+
getVideoUrl(): Promise<string>;
|
|
69
|
+
getQualities(): Promise<Array<{
|
|
70
|
+
id: string;
|
|
71
|
+
label: string;
|
|
72
|
+
active: boolean;
|
|
73
|
+
}>>;
|
|
74
|
+
setQuality(quality: string): Promise<string>;
|
|
75
|
+
getTextTracks(): Promise<Array<{
|
|
76
|
+
label: string;
|
|
77
|
+
language: string;
|
|
78
|
+
kind: string;
|
|
79
|
+
mode: string;
|
|
80
|
+
}>>;
|
|
81
|
+
enableTextTrack(language: string, kind?: string): Promise<void>;
|
|
82
|
+
disableTextTrack(): Promise<void>;
|
|
83
|
+
on(event: string, callback: (...args: any[]) => void): void;
|
|
84
|
+
off(event: string, callback?: (...args: any[]) => void): void;
|
|
85
|
+
getBuffered(): Promise<Array<{
|
|
86
|
+
start: number;
|
|
87
|
+
end: number;
|
|
88
|
+
}>>;
|
|
89
|
+
getChapters(): Promise<Array<{
|
|
90
|
+
title: string;
|
|
91
|
+
startTime: number;
|
|
92
|
+
index: number;
|
|
93
|
+
}>>;
|
|
94
|
+
}
|
|
95
|
+
interface VimeoStatic {
|
|
96
|
+
Player: new (element: HTMLElement | HTMLIFrameElement, options?: VimeoPlayerOptions) => VimeoPlayer;
|
|
97
|
+
}
|
|
98
|
+
declare global {
|
|
99
|
+
interface Window {
|
|
100
|
+
Vimeo?: VimeoStatic;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Vimeo embed provider
|
|
105
|
+
*/
|
|
106
|
+
export declare class VimeoProvider extends BaseProvider {
|
|
107
|
+
readonly name = "vimeo";
|
|
108
|
+
readonly type: ProviderType;
|
|
109
|
+
private container_el;
|
|
110
|
+
private player;
|
|
111
|
+
private iframe;
|
|
112
|
+
private timeUpdateInterval;
|
|
113
|
+
private _qualities;
|
|
114
|
+
private _duration;
|
|
115
|
+
get mediaElement(): HTMLIFrameElement | null;
|
|
116
|
+
protected initialize(): Promise<void>;
|
|
117
|
+
private loadVimeoSDK;
|
|
118
|
+
protected cleanup(): void;
|
|
119
|
+
canPlay(src: Src): boolean;
|
|
120
|
+
load(src: Src): Promise<void>;
|
|
121
|
+
private attachVimeoEvents;
|
|
122
|
+
private updateQualities;
|
|
123
|
+
play(): Promise<void>;
|
|
124
|
+
pause(): void;
|
|
125
|
+
stop(): void;
|
|
126
|
+
seekTo(time: number): void;
|
|
127
|
+
getCurrentTime(): number;
|
|
128
|
+
getDuration(): number;
|
|
129
|
+
setVolume(volume: number): void;
|
|
130
|
+
getVolume(): number;
|
|
131
|
+
setMuted(muted: boolean): void;
|
|
132
|
+
getMuted(): boolean;
|
|
133
|
+
setPlaybackRate(rate: number): void;
|
|
134
|
+
getPlaybackRate(): number;
|
|
135
|
+
getQualities(): VideoQuality[];
|
|
136
|
+
setQuality(quality: VideoQuality | 'auto'): void;
|
|
137
|
+
enableTextTrack(language: string): Promise<void>;
|
|
138
|
+
disableTextTrack(): Promise<void>;
|
|
139
|
+
getChapters(): Promise<Array<{
|
|
140
|
+
title: string;
|
|
141
|
+
startTime: number;
|
|
142
|
+
index: number;
|
|
143
|
+
}>>;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Vimeo Provider Loader
|
|
147
|
+
*/
|
|
148
|
+
export declare const vimeoLoader: {
|
|
149
|
+
name: string;
|
|
150
|
+
type: ProviderType;
|
|
151
|
+
canPlay(src: Src): boolean;
|
|
152
|
+
mediaType(): "video";
|
|
153
|
+
preconnect(): string[];
|
|
154
|
+
load(container: HTMLElement, options: PlayerOptions): Promise<VimeoProvider>;
|
|
155
|
+
};
|
|
156
|
+
export {};
|
|
157
|
+
//# sourceMappingURL=vimeo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vimeo.d.ts","sourceRoot":"","sources":["../../src/providers/vimeo.ts"],"names":[],"mappings":"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"}
|