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.
Files changed (251) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +438 -0
  3. package/dist/cdn.d.ts +10 -0
  4. package/dist/cdn.d.ts.map +1 -0
  5. package/dist/cdn.min.js +1046 -0
  6. package/dist/cdn.min.js.map +54 -0
  7. package/dist/cdn.test.d.ts +2 -0
  8. package/dist/cdn.test.d.ts.map +1 -0
  9. package/dist/chunk-36x4yhjn.js +765 -0
  10. package/dist/chunk-36x4yhjn.js.map +12 -0
  11. package/dist/chunk-eajts2jv.js +4243 -0
  12. package/dist/chunk-eajts2jv.js.map +42 -0
  13. package/dist/chunk-z1ehbz9f.js +380 -0
  14. package/dist/chunk-z1ehbz9f.js.map +19 -0
  15. package/dist/config.d.ts +9 -0
  16. package/dist/config.d.ts.map +1 -0
  17. package/dist/core/audio-gain.d.ts +67 -0
  18. package/dist/core/audio-gain.d.ts.map +1 -0
  19. package/dist/core/caption-styles.d.ts +121 -0
  20. package/dist/core/caption-styles.d.ts.map +1 -0
  21. package/dist/core/chapters.d.ts +150 -0
  22. package/dist/core/chapters.d.ts.map +1 -0
  23. package/dist/core/error-overlay.d.ts +71 -0
  24. package/dist/core/error-overlay.d.ts.map +1 -0
  25. package/dist/core/events.d.ts +119 -0
  26. package/dist/core/events.d.ts.map +1 -0
  27. package/dist/core/features.d.ts +64 -0
  28. package/dist/core/features.d.ts.map +1 -0
  29. package/dist/core/i18n.d.ts +132 -0
  30. package/dist/core/i18n.d.ts.map +1 -0
  31. package/dist/core/index.d.ts +37 -0
  32. package/dist/core/index.d.ts.map +1 -0
  33. package/dist/core/live.d.ts +130 -0
  34. package/dist/core/live.d.ts.map +1 -0
  35. package/dist/core/media-session.d.ts +38 -0
  36. package/dist/core/media-session.d.ts.map +1 -0
  37. package/dist/core/orientation.d.ts +22 -0
  38. package/dist/core/orientation.d.ts.map +1 -0
  39. package/dist/core/popover.d.ts +42 -0
  40. package/dist/core/popover.d.ts.map +1 -0
  41. package/dist/core/remote-playback.d.ts +195 -0
  42. package/dist/core/remote-playback.d.ts.map +1 -0
  43. package/dist/core/settings-menu.d.ts +132 -0
  44. package/dist/core/settings-menu.d.ts.map +1 -0
  45. package/dist/core/spinner.d.ts +67 -0
  46. package/dist/core/spinner.d.ts.map +1 -0
  47. package/dist/core/state.d.ts +142 -0
  48. package/dist/core/state.d.ts.map +1 -0
  49. package/dist/core/text-tracks.d.ts +162 -0
  50. package/dist/core/text-tracks.d.ts.map +1 -0
  51. package/dist/core/themes.d.ts +213 -0
  52. package/dist/core/themes.d.ts.map +1 -0
  53. package/dist/core/thumbnails.d.ts +124 -0
  54. package/dist/core/thumbnails.d.ts.map +1 -0
  55. package/dist/core/tooltips.d.ts +100 -0
  56. package/dist/core/tooltips.d.ts.map +1 -0
  57. package/dist/elements/base.d.ts +3 -0
  58. package/dist/elements/base.d.ts.map +1 -0
  59. package/dist/elements/index.d.ts +33 -0
  60. package/dist/elements/index.d.ts.map +1 -0
  61. package/dist/elements/index.js +55 -0
  62. package/dist/elements/index.js.map +9 -0
  63. package/dist/elements/media-airplay-button.d.ts +13 -0
  64. package/dist/elements/media-airplay-button.d.ts.map +1 -0
  65. package/dist/elements/media-error-display.d.ts +13 -0
  66. package/dist/elements/media-error-display.d.ts.map +1 -0
  67. package/dist/elements/media-fullscreen-button.d.ts +13 -0
  68. package/dist/elements/media-fullscreen-button.d.ts.map +1 -0
  69. package/dist/elements/media-live-button.d.ts +13 -0
  70. package/dist/elements/media-live-button.d.ts.map +1 -0
  71. package/dist/elements/media-mute-button.d.ts +13 -0
  72. package/dist/elements/media-mute-button.d.ts.map +1 -0
  73. package/dist/elements/media-pip-button.d.ts +13 -0
  74. package/dist/elements/media-pip-button.d.ts.map +1 -0
  75. package/dist/elements/media-play-button.d.ts +14 -0
  76. package/dist/elements/media-play-button.d.ts.map +1 -0
  77. package/dist/elements/media-playback-rate-button.d.ts +10 -0
  78. package/dist/elements/media-playback-rate-button.d.ts.map +1 -0
  79. package/dist/elements/media-preview-time.d.ts +18 -0
  80. package/dist/elements/media-preview-time.d.ts.map +1 -0
  81. package/dist/elements/media-progress-bar.d.ts +16 -0
  82. package/dist/elements/media-progress-bar.d.ts.map +1 -0
  83. package/dist/elements/media-remote-playback-button.d.ts +16 -0
  84. package/dist/elements/media-remote-playback-button.d.ts.map +1 -0
  85. package/dist/elements/media-seek-button.d.ts +9 -0
  86. package/dist/elements/media-seek-button.d.ts.map +1 -0
  87. package/dist/elements/media-settings-menu.d.ts +32 -0
  88. package/dist/elements/media-settings-menu.d.ts.map +1 -0
  89. package/dist/elements/media-time-display.d.ts +21 -0
  90. package/dist/elements/media-time-display.d.ts.map +1 -0
  91. package/dist/elements/media-time-group.d.ts +22 -0
  92. package/dist/elements/media-time-group.d.ts.map +1 -0
  93. package/dist/elements/media-time-separator.d.ts +13 -0
  94. package/dist/elements/media-time-separator.d.ts.map +1 -0
  95. package/dist/elements/media-volume-slider.d.ts +16 -0
  96. package/dist/elements/media-volume-slider.d.ts.map +1 -0
  97. package/dist/elements/utils.d.ts +27 -0
  98. package/dist/elements/utils.d.ts.map +1 -0
  99. package/dist/elements/video-player.d.ts +23 -0
  100. package/dist/elements/video-player.d.ts.map +1 -0
  101. package/dist/elements/video-skin.d.ts +23 -0
  102. package/dist/elements/video-skin.d.ts.map +1 -0
  103. package/dist/features/captions.d.ts +8 -0
  104. package/dist/features/captions.d.ts.map +1 -0
  105. package/dist/features/create-player.d.ts +45 -0
  106. package/dist/features/create-player.d.ts.map +1 -0
  107. package/dist/features/fullscreen.d.ts +8 -0
  108. package/dist/features/fullscreen.d.ts.map +1 -0
  109. package/dist/features/gestures.d.ts +8 -0
  110. package/dist/features/gestures.d.ts.map +1 -0
  111. package/dist/features/index.d.ts +26 -0
  112. package/dist/features/index.d.ts.map +1 -0
  113. package/dist/features/index.js +31 -0
  114. package/dist/features/index.js.map +9 -0
  115. package/dist/features/keyboard.d.ts +8 -0
  116. package/dist/features/keyboard.d.ts.map +1 -0
  117. package/dist/features/pip.d.ts +8 -0
  118. package/dist/features/pip.d.ts.map +1 -0
  119. package/dist/features/playback.d.ts +8 -0
  120. package/dist/features/playback.d.ts.map +1 -0
  121. package/dist/features/quality.d.ts +8 -0
  122. package/dist/features/quality.d.ts.map +1 -0
  123. package/dist/features/types.d.ts +26 -0
  124. package/dist/features/types.d.ts.map +1 -0
  125. package/dist/features/volume.d.ts +8 -0
  126. package/dist/features/volume.d.ts.map +1 -0
  127. package/dist/index.d.ts +84 -0
  128. package/dist/index.d.ts.map +1 -0
  129. package/dist/index.js +8149 -0
  130. package/dist/index.js.map +31 -0
  131. package/dist/layouts/index.d.ts +58 -0
  132. package/dist/layouts/index.d.ts.map +1 -0
  133. package/dist/player.d.ts +90 -0
  134. package/dist/player.d.ts.map +1 -0
  135. package/dist/plugins/ads.d.ts +311 -0
  136. package/dist/plugins/ads.d.ts.map +1 -0
  137. package/dist/plugins/analytics.d.ts +203 -0
  138. package/dist/plugins/analytics.d.ts.map +1 -0
  139. package/dist/plugins/end-screen.d.ts +184 -0
  140. package/dist/plugins/end-screen.d.ts.map +1 -0
  141. package/dist/plugins/index.d.ts +13 -0
  142. package/dist/plugins/index.d.ts.map +1 -0
  143. package/dist/plugins/index.js +20 -0
  144. package/dist/plugins/index.js.map +9 -0
  145. package/dist/plugins/skip-segments.d.ts +159 -0
  146. package/dist/plugins/skip-segments.d.ts.map +1 -0
  147. package/dist/plugins/watermark.d.ts +157 -0
  148. package/dist/plugins/watermark.d.ts.map +1 -0
  149. package/dist/providers/base.d.ts +56 -0
  150. package/dist/providers/base.d.ts.map +1 -0
  151. package/dist/providers/dash.d.ts +94 -0
  152. package/dist/providers/dash.d.ts.map +1 -0
  153. package/dist/providers/hls.d.ts +182 -0
  154. package/dist/providers/hls.d.ts.map +1 -0
  155. package/dist/providers/html5.d.ts +64 -0
  156. package/dist/providers/html5.d.ts.map +1 -0
  157. package/dist/providers/index.d.ts +41 -0
  158. package/dist/providers/index.d.ts.map +1 -0
  159. package/dist/providers/vimeo.d.ts +157 -0
  160. package/dist/providers/vimeo.d.ts.map +1 -0
  161. package/dist/providers/youtube.d.ts +134 -0
  162. package/dist/providers/youtube.d.ts.map +1 -0
  163. package/dist/stx/index.d.ts +59 -0
  164. package/dist/stx/index.d.ts.map +1 -0
  165. package/dist/stx/index.js +480 -0
  166. package/dist/stx/index.js.map +11 -0
  167. package/dist/types.d.ts +724 -0
  168. package/dist/types.d.ts.map +1 -0
  169. package/dist/ui/components.d.ts +121 -0
  170. package/dist/ui/components.d.ts.map +1 -0
  171. package/dist/ui/index.d.ts +9 -0
  172. package/dist/ui/index.d.ts.map +1 -0
  173. package/dist/ui/index.js +16 -0
  174. package/dist/ui/index.js.map +9 -0
  175. package/package.json +109 -0
  176. package/src/cdn.test.ts +10 -0
  177. package/src/cdn.ts +60 -0
  178. package/src/config.ts +25 -0
  179. package/src/core/audio-gain.ts +171 -0
  180. package/src/core/caption-styles.ts +568 -0
  181. package/src/core/chapters.ts +551 -0
  182. package/src/core/error-overlay.ts +354 -0
  183. package/src/core/events.ts +552 -0
  184. package/src/core/features.ts +287 -0
  185. package/src/core/i18n.ts +590 -0
  186. package/src/core/index.ts +249 -0
  187. package/src/core/live.ts +472 -0
  188. package/src/core/media-session.ts +137 -0
  189. package/src/core/orientation.ts +57 -0
  190. package/src/core/popover.ts +143 -0
  191. package/src/core/remote-playback.ts +661 -0
  192. package/src/core/settings-menu.ts +630 -0
  193. package/src/core/spinner.ts +310 -0
  194. package/src/core/state.ts +476 -0
  195. package/src/core/text-tracks.ts +599 -0
  196. package/src/core/themes.ts +607 -0
  197. package/src/core/thumbnails.ts +457 -0
  198. package/src/core/tooltips.ts +370 -0
  199. package/src/elements/base.ts +2 -0
  200. package/src/elements/index.ts +82 -0
  201. package/src/elements/media-airplay-button.ts +78 -0
  202. package/src/elements/media-error-display.ts +47 -0
  203. package/src/elements/media-fullscreen-button.ts +72 -0
  204. package/src/elements/media-live-button.ts +65 -0
  205. package/src/elements/media-mute-button.ts +69 -0
  206. package/src/elements/media-pip-button.ts +66 -0
  207. package/src/elements/media-play-button.ts +69 -0
  208. package/src/elements/media-playback-rate-button.ts +59 -0
  209. package/src/elements/media-preview-time.ts +75 -0
  210. package/src/elements/media-progress-bar.ts +200 -0
  211. package/src/elements/media-remote-playback-button.ts +108 -0
  212. package/src/elements/media-seek-button.ts +50 -0
  213. package/src/elements/media-settings-menu.ts +302 -0
  214. package/src/elements/media-time-display.ts +99 -0
  215. package/src/elements/media-time-group.ts +41 -0
  216. package/src/elements/media-time-separator.ts +35 -0
  217. package/src/elements/media-volume-slider.ts +140 -0
  218. package/src/elements/utils.ts +82 -0
  219. package/src/elements/video-player.ts +175 -0
  220. package/src/elements/video-skin.ts +127 -0
  221. package/src/features/captions.ts +56 -0
  222. package/src/features/create-player.ts +91 -0
  223. package/src/features/fullscreen.ts +44 -0
  224. package/src/features/gestures.ts +44 -0
  225. package/src/features/index.ts +44 -0
  226. package/src/features/keyboard.ts +89 -0
  227. package/src/features/pip.ts +47 -0
  228. package/src/features/playback.ts +68 -0
  229. package/src/features/quality.ts +19 -0
  230. package/src/features/types.ts +28 -0
  231. package/src/features/volume.ts +46 -0
  232. package/src/index.ts +635 -0
  233. package/src/layouts/index.ts +672 -0
  234. package/src/player.ts +821 -0
  235. package/src/plugins/ads.ts +1045 -0
  236. package/src/plugins/analytics.ts +673 -0
  237. package/src/plugins/end-screen.ts +793 -0
  238. package/src/plugins/index.ts +61 -0
  239. package/src/plugins/skip-segments.ts +537 -0
  240. package/src/plugins/watermark.ts +537 -0
  241. package/src/providers/base.ts +197 -0
  242. package/src/providers/dash.ts +588 -0
  243. package/src/providers/hls.ts +624 -0
  244. package/src/providers/html5.ts +473 -0
  245. package/src/providers/index.ts +97 -0
  246. package/src/providers/vimeo.ts +533 -0
  247. package/src/providers/youtube.ts +542 -0
  248. package/src/stx/index.ts +606 -0
  249. package/src/types.ts +874 -0
  250. package/src/ui/components.ts +910 -0
  251. 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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"}