@video-lab/vue-frame 1.0.1 → 3.0.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.
@@ -3,13 +3,24 @@ declare var __VLS_1: {};
3
3
  type __VLS_Slots = {} & {
4
4
  'ssr-placeholder'?: (props: typeof __VLS_1) => any;
5
5
  };
6
- declare const __VLS_component: import('vue').DefineComponent<VideoPlayerFrameProps, {
6
+ declare const __VLS_component: import('vue').DefineComponent<__VLS_WithDefaults<__VLS_TypePropsToOption<VideoPlayerFrameProps>, {
7
+ autoplay: undefined;
8
+ muted: undefined;
9
+ loop: undefined;
10
+ controls: undefined;
11
+ showErrorOverlay: undefined;
12
+ showLoadingOverlay: undefined;
13
+ interactive: undefined;
14
+ playsinline: undefined;
15
+ debug: undefined;
16
+ }>, {
7
17
  play(): Promise<void>;
8
18
  pause(): Promise<void>;
9
19
  seek(time: number): Promise<void>;
10
20
  setMuted(muted: boolean): Promise<void>;
11
21
  setVolume(volume: number): Promise<void>;
12
22
  setPlaybackRate(rate: number): Promise<void>;
23
+ setPageFullscreen(active: boolean): Promise<void>;
13
24
  enterFullscreen(): Promise<void>;
14
25
  exitFullscreen(): Promise<void>;
15
26
  setQuality(level: number | "auto"): Promise<void>;
@@ -18,32 +29,1453 @@ declare const __VLS_component: import('vue').DefineComponent<VideoPlayerFramePro
18
29
  pushDanmaku(item: import('@video-lab/protocol').DanmakuItem): Promise<void>;
19
30
  setDanmakuEnabled(enabled: boolean): Promise<void>;
20
31
  clearDanmaku(): Promise<void>;
21
- reconnect(options?: {
22
- resetCounter?: boolean;
23
- }): Promise<void>;
32
+ retry(): Promise<void>;
24
33
  destroy(): Promise<void>;
25
34
  getCurrentTime(): number;
26
35
  getDuration(): number;
27
36
  getPlaybackContext(): import('@video-lab/protocol').PlaybackContext | null;
28
37
  getPlayerHandle(): import('./types').PlayerHandle | null;
29
- }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
30
- [x: string]: any;
31
- }, string, import('vue').PublicProps, Readonly<VideoPlayerFrameProps> & Readonly<{
32
- [x: `on${Capitalize<any>}`]: ((...args: any) => any) | undefined;
33
- }>, {
38
+ }, unknown, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
39
+ playerEvent: (payload: {
40
+ event: "pagefullscreenchange";
41
+ payload: {
42
+ active: boolean;
43
+ };
44
+ } | {
45
+ event: "sourceroute";
46
+ payload: {
47
+ outcome: "selected";
48
+ sessionId: string;
49
+ candidateTypes: ("mp4" | "hls" | "flv")[];
50
+ streamKind: "live" | "vod";
51
+ runtime: {
52
+ platform: "unknown" | "ios" | "android" | "desktop";
53
+ browser: "unknown" | "webkit" | "gecko" | "chromium" | "embedded";
54
+ mse: "standard" | "managed" | "unavailable";
55
+ };
56
+ mediaType: "mp4" | "hls" | "flv";
57
+ kernel: "native" | "hls.js" | "flv.js";
58
+ reason: "required_hls" | "live_preference" | "vod_preference" | "native_mp4_fallback";
59
+ } | {
60
+ outcome: "unsupported";
61
+ sessionId: string;
62
+ candidateTypes: ("mp4" | "hls" | "flv")[];
63
+ streamKind: "live" | "vod";
64
+ runtime: {
65
+ platform: "unknown" | "ios" | "android" | "desktop";
66
+ browser: "unknown" | "webkit" | "gecko" | "chromium" | "embedded";
67
+ mse: "standard" | "managed" | "unavailable";
68
+ };
69
+ mediaType: null;
70
+ kernel: null;
71
+ reason: "no_supported_candidate";
72
+ errorCode: "E_MEDIA_NOT_SUPPORTED";
73
+ };
74
+ } | {
75
+ event: "ready";
76
+ payload: {
77
+ duration: number;
78
+ quality: {
79
+ level: number;
80
+ label?: string | undefined;
81
+ height?: number | undefined;
82
+ bitrate?: number | undefined;
83
+ }[];
84
+ subtitles?: {
85
+ locale: string;
86
+ label: string;
87
+ id: number;
88
+ }[] | undefined;
89
+ };
90
+ } | {
91
+ event: "play";
92
+ payload: {};
93
+ } | {
94
+ event: "pause";
95
+ payload: {};
96
+ } | {
97
+ event: "ended";
98
+ payload: {};
99
+ } | {
100
+ event: "timeupdate";
101
+ payload: {
102
+ duration: number;
103
+ time: number;
104
+ };
105
+ } | {
106
+ event: "volumechange";
107
+ payload: {
108
+ volume: number;
109
+ muted: boolean;
110
+ };
111
+ } | {
112
+ event: "seeking";
113
+ payload: {
114
+ time: number;
115
+ };
116
+ } | {
117
+ event: "seeked";
118
+ payload: {
119
+ time: number;
120
+ };
121
+ } | {
122
+ event: "waiting";
123
+ payload: {};
124
+ } | {
125
+ event: "playing";
126
+ payload: {};
127
+ } | {
128
+ event: "qualitychange";
129
+ payload: {
130
+ auto: boolean;
131
+ level: number;
132
+ };
133
+ } | {
134
+ event: "subtitlechange";
135
+ payload: {
136
+ id: number | null;
137
+ };
138
+ } | {
139
+ event: "error";
140
+ payload: {
141
+ code: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED";
142
+ message: string;
143
+ retryable: boolean;
144
+ category: "autoplay" | "manifest" | "media" | "network" | "auth" | "env";
145
+ cause?: import('zod').objectOutputType<{
146
+ name: import('zod').ZodString;
147
+ message: import('zod').ZodString;
148
+ code: import('zod').ZodOptional<import('zod').ZodNumber>;
149
+ status: import('zod').ZodOptional<import('zod').ZodNumber>;
150
+ }, import('zod').ZodUnion<[import('zod').ZodString, import('zod').ZodNumber, import('zod').ZodBoolean]>, "strip"> | undefined;
151
+ };
152
+ } | {
153
+ event: "autoplayblocked";
154
+ payload: {};
155
+ } | {
156
+ event: "recovery";
157
+ payload: {
158
+ sessionId: string;
159
+ phase: "detected";
160
+ recoveryId: number;
161
+ strategy: "reconnect" | "media_recovery" | "visibility_reload";
162
+ trigger: "error" | "manual" | "visibility" | "stall" | "startup_timeout";
163
+ attempt: number;
164
+ maxAttempts: number;
165
+ elapsedMs: number;
166
+ reason?: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED" | undefined;
167
+ } | {
168
+ sessionId: string;
169
+ phase: "backoff";
170
+ recoveryId: number;
171
+ strategy: "reconnect" | "media_recovery" | "visibility_reload";
172
+ trigger: "error" | "manual" | "visibility" | "stall" | "startup_timeout";
173
+ attempt: number;
174
+ maxAttempts: number;
175
+ elapsedMs: number;
176
+ reason?: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED" | undefined;
177
+ } | {
178
+ sessionId: string;
179
+ phase: "attempting";
180
+ recoveryId: number;
181
+ strategy: "reconnect" | "media_recovery" | "visibility_reload";
182
+ trigger: "error" | "manual" | "visibility" | "stall" | "startup_timeout";
183
+ attempt: number;
184
+ maxAttempts: number;
185
+ elapsedMs: number;
186
+ reason?: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED" | undefined;
187
+ } | {
188
+ sessionId: string;
189
+ phase: "validating";
190
+ recoveryId: number;
191
+ strategy: "reconnect" | "media_recovery" | "visibility_reload";
192
+ trigger: "error" | "manual" | "visibility" | "stall" | "startup_timeout";
193
+ attempt: number;
194
+ maxAttempts: number;
195
+ elapsedMs: number;
196
+ reason?: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED" | undefined;
197
+ } | {
198
+ sessionId: string;
199
+ phase: "recovered";
200
+ recoveryId: number;
201
+ strategy: "reconnect" | "media_recovery" | "visibility_reload";
202
+ trigger: "error" | "manual" | "visibility" | "stall" | "startup_timeout";
203
+ attempt: number;
204
+ maxAttempts: number;
205
+ elapsedMs: number;
206
+ validatedBy: "playing_position_advance";
207
+ reason?: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED" | undefined;
208
+ } | {
209
+ outcome: "timeout" | "attempts_exhausted";
210
+ sessionId: string;
211
+ phase: "failed";
212
+ recoveryId: number;
213
+ strategy: "reconnect" | "media_recovery" | "visibility_reload";
214
+ trigger: "error" | "manual" | "visibility" | "stall" | "startup_timeout";
215
+ attempt: number;
216
+ maxAttempts: number;
217
+ elapsedMs: number;
218
+ reason?: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED" | undefined;
219
+ } | {
220
+ outcome: "source_changed" | "destroyed" | "superseded" | "user_paused" | "natural_recovery";
221
+ sessionId: string;
222
+ phase: "cancelled";
223
+ recoveryId: number;
224
+ strategy: "reconnect" | "media_recovery" | "visibility_reload";
225
+ trigger: "error" | "manual" | "visibility" | "stall" | "startup_timeout";
226
+ attempt: number;
227
+ maxAttempts: number;
228
+ elapsedMs: number;
229
+ reason?: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED" | undefined;
230
+ };
231
+ } | {
232
+ event: "compatwarning";
233
+ payload: {
234
+ code: "W_BROWSER_INCOMPATIBLE" | "W_VERSION_MISMATCH" | "W_EVENT_REJECTED";
235
+ message: string;
236
+ ua: string;
237
+ hostVersion?: string | undefined;
238
+ iframeVersion?: string | undefined;
239
+ rejectedEvent?: string | undefined;
240
+ };
241
+ } | {
242
+ event: "stalled";
243
+ payload: {
244
+ phase: "start" | "end";
245
+ position: number;
246
+ durationMs?: number | undefined;
247
+ kind?: "seek" | "playback" | "firstframe" | undefined;
248
+ };
249
+ } | {
250
+ event: "playablechange";
251
+ payload: {
252
+ reason: "error" | "stalled" | "ok" | "initializing" | "buffering" | "reconnecting" | "autoplay_blocked" | "frame_disconnected" | "degraded";
253
+ playable: boolean;
254
+ recoverable: boolean;
255
+ action?: "play" | "none" | "retry" | "replace-source" | "recreate-frame" | undefined;
256
+ };
257
+ } | {
258
+ event: "kernelhealth";
259
+ payload: {
260
+ reason: "media" | "network" | "other";
261
+ durationMs: number;
262
+ degraded: boolean;
263
+ count: number;
264
+ detail: string;
265
+ };
266
+ } | {
267
+ event: "audiohealth";
268
+ payload: {
269
+ reason: "audio_data_gap";
270
+ durationMs: number;
271
+ degraded: boolean;
272
+ };
273
+ } | {
274
+ event: "bufferhealth";
275
+ payload: {
276
+ draining: boolean;
277
+ marginSec: number;
278
+ };
279
+ } | {
280
+ event: "contextchange";
281
+ payload: {
282
+ sessionId: string;
283
+ kernel: "native" | "hls.js" | "flv.js";
284
+ position: number;
285
+ qualityLevel: number | null;
286
+ srcOrigin: string;
287
+ srcPath: string;
288
+ streamKind?: "live" | "vod" | undefined;
289
+ runtime?: {
290
+ platform: "unknown" | "ios" | "android" | "desktop";
291
+ browser: "unknown" | "webkit" | "gecko" | "chromium" | "embedded";
292
+ mse: "standard" | "managed" | "unavailable";
293
+ } | undefined;
294
+ mediaType?: "mp4" | "hls" | "flv" | undefined;
295
+ };
296
+ } | {
297
+ event: "firstframe";
298
+ payload: {
299
+ fvt: number;
300
+ };
301
+ } | {
302
+ event: "framefreeze";
303
+ payload: {
304
+ durationMs: number;
305
+ droppedFrames: number;
306
+ totalFrames: number;
307
+ };
308
+ } | {
309
+ event: "useraction";
310
+ payload: {
311
+ source: string;
312
+ action: "seek" | "switch_play_pause" | "switch_fullscreen" | "switch_cssfullscreen" | "switch_css_fullscreen" | "change_definition" | "change_rate" | "change_volume" | "change_muted" | "change_pip" | "rotate" | "shot" | "download" | "switch_danmu" | "error_retry";
313
+ from: string | number | boolean | null;
314
+ to: string | number | boolean | null;
315
+ };
316
+ }) => void;
317
+ deliveredPlayerEvent: (payload: {
318
+ event: {
319
+ event: "pagefullscreenchange";
320
+ payload: {
321
+ active: boolean;
322
+ };
323
+ } | {
324
+ event: "sourceroute";
325
+ payload: {
326
+ outcome: "selected";
327
+ sessionId: string;
328
+ candidateTypes: ("mp4" | "hls" | "flv")[];
329
+ streamKind: "live" | "vod";
330
+ runtime: {
331
+ platform: "unknown" | "ios" | "android" | "desktop";
332
+ browser: "unknown" | "webkit" | "gecko" | "chromium" | "embedded";
333
+ mse: "standard" | "managed" | "unavailable";
334
+ };
335
+ mediaType: "mp4" | "hls" | "flv";
336
+ kernel: "native" | "hls.js" | "flv.js";
337
+ reason: "required_hls" | "live_preference" | "vod_preference" | "native_mp4_fallback";
338
+ } | {
339
+ outcome: "unsupported";
340
+ sessionId: string;
341
+ candidateTypes: ("mp4" | "hls" | "flv")[];
342
+ streamKind: "live" | "vod";
343
+ runtime: {
344
+ platform: "unknown" | "ios" | "android" | "desktop";
345
+ browser: "unknown" | "webkit" | "gecko" | "chromium" | "embedded";
346
+ mse: "standard" | "managed" | "unavailable";
347
+ };
348
+ mediaType: null;
349
+ kernel: null;
350
+ reason: "no_supported_candidate";
351
+ errorCode: "E_MEDIA_NOT_SUPPORTED";
352
+ };
353
+ } | {
354
+ event: "ready";
355
+ payload: {
356
+ duration: number;
357
+ quality: {
358
+ level: number;
359
+ label?: string | undefined;
360
+ height?: number | undefined;
361
+ bitrate?: number | undefined;
362
+ }[];
363
+ subtitles?: {
364
+ locale: string;
365
+ label: string;
366
+ id: number;
367
+ }[] | undefined;
368
+ };
369
+ } | {
370
+ event: "play";
371
+ payload: {};
372
+ } | {
373
+ event: "pause";
374
+ payload: {};
375
+ } | {
376
+ event: "ended";
377
+ payload: {};
378
+ } | {
379
+ event: "timeupdate";
380
+ payload: {
381
+ duration: number;
382
+ time: number;
383
+ };
384
+ } | {
385
+ event: "volumechange";
386
+ payload: {
387
+ volume: number;
388
+ muted: boolean;
389
+ };
390
+ } | {
391
+ event: "seeking";
392
+ payload: {
393
+ time: number;
394
+ };
395
+ } | {
396
+ event: "seeked";
397
+ payload: {
398
+ time: number;
399
+ };
400
+ } | {
401
+ event: "waiting";
402
+ payload: {};
403
+ } | {
404
+ event: "playing";
405
+ payload: {};
406
+ } | {
407
+ event: "qualitychange";
408
+ payload: {
409
+ auto: boolean;
410
+ level: number;
411
+ };
412
+ } | {
413
+ event: "subtitlechange";
414
+ payload: {
415
+ id: number | null;
416
+ };
417
+ } | {
418
+ event: "error";
419
+ payload: {
420
+ code: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED";
421
+ message: string;
422
+ retryable: boolean;
423
+ category: "autoplay" | "manifest" | "media" | "network" | "auth" | "env";
424
+ cause?: import('zod').objectOutputType<{
425
+ name: import('zod').ZodString;
426
+ message: import('zod').ZodString;
427
+ code: import('zod').ZodOptional<import('zod').ZodNumber>;
428
+ status: import('zod').ZodOptional<import('zod').ZodNumber>;
429
+ }, import('zod').ZodUnion<[import('zod').ZodString, import('zod').ZodNumber, import('zod').ZodBoolean]>, "strip"> | undefined;
430
+ };
431
+ } | {
432
+ event: "autoplayblocked";
433
+ payload: {};
434
+ } | {
435
+ event: "recovery";
436
+ payload: {
437
+ sessionId: string;
438
+ phase: "detected";
439
+ recoveryId: number;
440
+ strategy: "reconnect" | "media_recovery" | "visibility_reload";
441
+ trigger: "error" | "manual" | "visibility" | "stall" | "startup_timeout";
442
+ attempt: number;
443
+ maxAttempts: number;
444
+ elapsedMs: number;
445
+ reason?: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED" | undefined;
446
+ } | {
447
+ sessionId: string;
448
+ phase: "backoff";
449
+ recoveryId: number;
450
+ strategy: "reconnect" | "media_recovery" | "visibility_reload";
451
+ trigger: "error" | "manual" | "visibility" | "stall" | "startup_timeout";
452
+ attempt: number;
453
+ maxAttempts: number;
454
+ elapsedMs: number;
455
+ reason?: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED" | undefined;
456
+ } | {
457
+ sessionId: string;
458
+ phase: "attempting";
459
+ recoveryId: number;
460
+ strategy: "reconnect" | "media_recovery" | "visibility_reload";
461
+ trigger: "error" | "manual" | "visibility" | "stall" | "startup_timeout";
462
+ attempt: number;
463
+ maxAttempts: number;
464
+ elapsedMs: number;
465
+ reason?: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED" | undefined;
466
+ } | {
467
+ sessionId: string;
468
+ phase: "validating";
469
+ recoveryId: number;
470
+ strategy: "reconnect" | "media_recovery" | "visibility_reload";
471
+ trigger: "error" | "manual" | "visibility" | "stall" | "startup_timeout";
472
+ attempt: number;
473
+ maxAttempts: number;
474
+ elapsedMs: number;
475
+ reason?: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED" | undefined;
476
+ } | {
477
+ sessionId: string;
478
+ phase: "recovered";
479
+ recoveryId: number;
480
+ strategy: "reconnect" | "media_recovery" | "visibility_reload";
481
+ trigger: "error" | "manual" | "visibility" | "stall" | "startup_timeout";
482
+ attempt: number;
483
+ maxAttempts: number;
484
+ elapsedMs: number;
485
+ validatedBy: "playing_position_advance";
486
+ reason?: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED" | undefined;
487
+ } | {
488
+ outcome: "timeout" | "attempts_exhausted";
489
+ sessionId: string;
490
+ phase: "failed";
491
+ recoveryId: number;
492
+ strategy: "reconnect" | "media_recovery" | "visibility_reload";
493
+ trigger: "error" | "manual" | "visibility" | "stall" | "startup_timeout";
494
+ attempt: number;
495
+ maxAttempts: number;
496
+ elapsedMs: number;
497
+ reason?: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED" | undefined;
498
+ } | {
499
+ outcome: "source_changed" | "destroyed" | "superseded" | "user_paused" | "natural_recovery";
500
+ sessionId: string;
501
+ phase: "cancelled";
502
+ recoveryId: number;
503
+ strategy: "reconnect" | "media_recovery" | "visibility_reload";
504
+ trigger: "error" | "manual" | "visibility" | "stall" | "startup_timeout";
505
+ attempt: number;
506
+ maxAttempts: number;
507
+ elapsedMs: number;
508
+ reason?: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED" | undefined;
509
+ };
510
+ } | {
511
+ event: "compatwarning";
512
+ payload: {
513
+ code: "W_BROWSER_INCOMPATIBLE" | "W_VERSION_MISMATCH" | "W_EVENT_REJECTED";
514
+ message: string;
515
+ ua: string;
516
+ hostVersion?: string | undefined;
517
+ iframeVersion?: string | undefined;
518
+ rejectedEvent?: string | undefined;
519
+ };
520
+ } | {
521
+ event: "stalled";
522
+ payload: {
523
+ phase: "start" | "end";
524
+ position: number;
525
+ durationMs?: number | undefined;
526
+ kind?: "seek" | "playback" | "firstframe" | undefined;
527
+ };
528
+ } | {
529
+ event: "playablechange";
530
+ payload: {
531
+ reason: "error" | "stalled" | "ok" | "initializing" | "buffering" | "reconnecting" | "autoplay_blocked" | "frame_disconnected" | "degraded";
532
+ playable: boolean;
533
+ recoverable: boolean;
534
+ action?: "play" | "none" | "retry" | "replace-source" | "recreate-frame" | undefined;
535
+ };
536
+ } | {
537
+ event: "kernelhealth";
538
+ payload: {
539
+ reason: "media" | "network" | "other";
540
+ durationMs: number;
541
+ degraded: boolean;
542
+ count: number;
543
+ detail: string;
544
+ };
545
+ } | {
546
+ event: "audiohealth";
547
+ payload: {
548
+ reason: "audio_data_gap";
549
+ durationMs: number;
550
+ degraded: boolean;
551
+ };
552
+ } | {
553
+ event: "bufferhealth";
554
+ payload: {
555
+ draining: boolean;
556
+ marginSec: number;
557
+ };
558
+ } | {
559
+ event: "contextchange";
560
+ payload: {
561
+ sessionId: string;
562
+ kernel: "native" | "hls.js" | "flv.js";
563
+ position: number;
564
+ qualityLevel: number | null;
565
+ srcOrigin: string;
566
+ srcPath: string;
567
+ streamKind?: "live" | "vod" | undefined;
568
+ runtime?: {
569
+ platform: "unknown" | "ios" | "android" | "desktop";
570
+ browser: "unknown" | "webkit" | "gecko" | "chromium" | "embedded";
571
+ mse: "standard" | "managed" | "unavailable";
572
+ } | undefined;
573
+ mediaType?: "mp4" | "hls" | "flv" | undefined;
574
+ };
575
+ } | {
576
+ event: "firstframe";
577
+ payload: {
578
+ fvt: number;
579
+ };
580
+ } | {
581
+ event: "framefreeze";
582
+ payload: {
583
+ durationMs: number;
584
+ droppedFrames: number;
585
+ totalFrames: number;
586
+ };
587
+ } | {
588
+ event: "useraction";
589
+ payload: {
590
+ source: string;
591
+ action: "seek" | "switch_play_pause" | "switch_fullscreen" | "switch_cssfullscreen" | "switch_css_fullscreen" | "change_definition" | "change_rate" | "change_volume" | "change_muted" | "change_pip" | "rotate" | "shot" | "download" | "switch_danmu" | "error_retry";
592
+ from: string | number | boolean | null;
593
+ to: string | number | boolean | null;
594
+ };
595
+ };
596
+ producerSessionId: string;
597
+ sequence: number;
598
+ deliveryId: string;
599
+ occurredAtMs: number;
600
+ }) => void;
601
+ ready: (payload: {
602
+ duration: number;
603
+ quality: import('@video-lab/protocol').QualityLevel[];
604
+ subtitles?: import('@video-lab/protocol').SubtitleTrackInfo[];
605
+ }) => void;
606
+ play: () => void;
607
+ pause: () => void;
608
+ ended: () => void;
609
+ timeUpdate: (payload: {
610
+ time: number;
611
+ duration: number;
612
+ }) => void;
613
+ volumeChange: (payload: {
614
+ volume: number;
615
+ muted: boolean;
616
+ }) => void;
617
+ seeking: (payload: {
618
+ time: number;
619
+ }) => void;
620
+ seeked: (payload: {
621
+ time: number;
622
+ }) => void;
623
+ waiting: () => void;
624
+ playing: () => void;
625
+ qualityChange: (payload: {
626
+ level: number;
627
+ auto: boolean;
628
+ }) => void;
629
+ subtitleChange: (payload: {
630
+ id: number | null;
631
+ }) => void;
632
+ error: (payload: {
633
+ code: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED";
634
+ message: string;
635
+ retryable: boolean;
636
+ category: "autoplay" | "manifest" | "media" | "network" | "auth" | "env";
637
+ cause?: import('zod').objectOutputType<{
638
+ name: import('zod').ZodString;
639
+ message: import('zod').ZodString;
640
+ code: import('zod').ZodOptional<import('zod').ZodNumber>;
641
+ status: import('zod').ZodOptional<import('zod').ZodNumber>;
642
+ }, import('zod').ZodUnion<[import('zod').ZodString, import('zod').ZodNumber, import('zod').ZodBoolean]>, "strip"> | undefined;
643
+ }) => void;
644
+ autoplayBlocked: () => void;
645
+ compatWarning: (payload: {
646
+ code: string;
647
+ message: string;
648
+ ua: string;
649
+ }) => void;
650
+ stalled: (payload: {
651
+ phase: "start" | "end";
652
+ position: number;
653
+ durationMs?: number;
654
+ }) => void;
655
+ playableChange: (payload: {
656
+ reason: "error" | "stalled" | "ok" | "initializing" | "buffering" | "reconnecting" | "autoplay_blocked" | "frame_disconnected" | "degraded";
657
+ playable: boolean;
658
+ recoverable: boolean;
659
+ action?: "play" | "none" | "retry" | "replace-source" | "recreate-frame" | undefined;
660
+ }) => void;
661
+ kernelHealth: (payload: {
662
+ reason: "media" | "network" | "other";
663
+ durationMs: number;
664
+ degraded: boolean;
665
+ count: number;
666
+ detail: string;
667
+ }) => void;
668
+ audioHealth: (payload: {
669
+ reason: "audio_data_gap";
670
+ durationMs: number;
671
+ degraded: boolean;
672
+ }) => void;
673
+ bufferHealth: (payload: {
674
+ draining: boolean;
675
+ marginSec: number;
676
+ }) => void;
677
+ contextChange: (payload: {
678
+ sessionId: string;
679
+ kernel: "native" | "hls.js" | "flv.js";
680
+ position: number;
681
+ qualityLevel: number | null;
682
+ srcOrigin: string;
683
+ srcPath: string;
684
+ streamKind?: "live" | "vod" | undefined;
685
+ runtime?: {
686
+ platform: "unknown" | "ios" | "android" | "desktop";
687
+ browser: "unknown" | "webkit" | "gecko" | "chromium" | "embedded";
688
+ mse: "standard" | "managed" | "unavailable";
689
+ } | undefined;
690
+ mediaType?: "mp4" | "hls" | "flv" | undefined;
691
+ }) => void;
692
+ sourceRoute: (payload: {
693
+ outcome: "selected";
694
+ sessionId: string;
695
+ candidateTypes: ("mp4" | "hls" | "flv")[];
696
+ streamKind: "live" | "vod";
697
+ runtime: {
698
+ platform: "unknown" | "ios" | "android" | "desktop";
699
+ browser: "unknown" | "webkit" | "gecko" | "chromium" | "embedded";
700
+ mse: "standard" | "managed" | "unavailable";
701
+ };
702
+ mediaType: "mp4" | "hls" | "flv";
703
+ kernel: "native" | "hls.js" | "flv.js";
704
+ reason: "required_hls" | "live_preference" | "vod_preference" | "native_mp4_fallback";
705
+ } | {
706
+ outcome: "unsupported";
707
+ sessionId: string;
708
+ candidateTypes: ("mp4" | "hls" | "flv")[];
709
+ streamKind: "live" | "vod";
710
+ runtime: {
711
+ platform: "unknown" | "ios" | "android" | "desktop";
712
+ browser: "unknown" | "webkit" | "gecko" | "chromium" | "embedded";
713
+ mse: "standard" | "managed" | "unavailable";
714
+ };
715
+ mediaType: null;
716
+ kernel: null;
717
+ reason: "no_supported_candidate";
718
+ errorCode: "E_MEDIA_NOT_SUPPORTED";
719
+ }) => void;
720
+ firstFrame: (payload: {
721
+ fvt: number;
722
+ }) => void;
723
+ frameFreeze: (payload: {
724
+ durationMs: number;
725
+ droppedFrames: number;
726
+ totalFrames: number;
727
+ }) => void;
728
+ pageFullscreenChange: (payload: {
729
+ active: boolean;
730
+ }) => void;
731
+ userAction: (payload: {
732
+ source: string;
733
+ action: "seek" | "switch_play_pause" | "switch_fullscreen" | "switch_cssfullscreen" | "switch_css_fullscreen" | "change_definition" | "change_rate" | "change_volume" | "change_muted" | "change_pip" | "rotate" | "shot" | "download" | "switch_danmu" | "error_retry";
734
+ from: string | number | boolean | null;
735
+ to: string | number | boolean | null;
736
+ }) => void;
737
+ }, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<VideoPlayerFrameProps>, {
738
+ autoplay: undefined;
739
+ muted: undefined;
740
+ loop: undefined;
741
+ controls: undefined;
742
+ showErrorOverlay: undefined;
743
+ showLoadingOverlay: undefined;
744
+ interactive: undefined;
745
+ playsinline: undefined;
746
+ debug: undefined;
747
+ }>>> & {
748
+ onPlayerEvent?: ((payload: {
749
+ event: "pagefullscreenchange";
750
+ payload: {
751
+ active: boolean;
752
+ };
753
+ } | {
754
+ event: "sourceroute";
755
+ payload: {
756
+ outcome: "selected";
757
+ sessionId: string;
758
+ candidateTypes: ("mp4" | "hls" | "flv")[];
759
+ streamKind: "live" | "vod";
760
+ runtime: {
761
+ platform: "unknown" | "ios" | "android" | "desktop";
762
+ browser: "unknown" | "webkit" | "gecko" | "chromium" | "embedded";
763
+ mse: "standard" | "managed" | "unavailable";
764
+ };
765
+ mediaType: "mp4" | "hls" | "flv";
766
+ kernel: "native" | "hls.js" | "flv.js";
767
+ reason: "required_hls" | "live_preference" | "vod_preference" | "native_mp4_fallback";
768
+ } | {
769
+ outcome: "unsupported";
770
+ sessionId: string;
771
+ candidateTypes: ("mp4" | "hls" | "flv")[];
772
+ streamKind: "live" | "vod";
773
+ runtime: {
774
+ platform: "unknown" | "ios" | "android" | "desktop";
775
+ browser: "unknown" | "webkit" | "gecko" | "chromium" | "embedded";
776
+ mse: "standard" | "managed" | "unavailable";
777
+ };
778
+ mediaType: null;
779
+ kernel: null;
780
+ reason: "no_supported_candidate";
781
+ errorCode: "E_MEDIA_NOT_SUPPORTED";
782
+ };
783
+ } | {
784
+ event: "ready";
785
+ payload: {
786
+ duration: number;
787
+ quality: {
788
+ level: number;
789
+ label?: string | undefined;
790
+ height?: number | undefined;
791
+ bitrate?: number | undefined;
792
+ }[];
793
+ subtitles?: {
794
+ locale: string;
795
+ label: string;
796
+ id: number;
797
+ }[] | undefined;
798
+ };
799
+ } | {
800
+ event: "play";
801
+ payload: {};
802
+ } | {
803
+ event: "pause";
804
+ payload: {};
805
+ } | {
806
+ event: "ended";
807
+ payload: {};
808
+ } | {
809
+ event: "timeupdate";
810
+ payload: {
811
+ duration: number;
812
+ time: number;
813
+ };
814
+ } | {
815
+ event: "volumechange";
816
+ payload: {
817
+ volume: number;
818
+ muted: boolean;
819
+ };
820
+ } | {
821
+ event: "seeking";
822
+ payload: {
823
+ time: number;
824
+ };
825
+ } | {
826
+ event: "seeked";
827
+ payload: {
828
+ time: number;
829
+ };
830
+ } | {
831
+ event: "waiting";
832
+ payload: {};
833
+ } | {
834
+ event: "playing";
835
+ payload: {};
836
+ } | {
837
+ event: "qualitychange";
838
+ payload: {
839
+ auto: boolean;
840
+ level: number;
841
+ };
842
+ } | {
843
+ event: "subtitlechange";
844
+ payload: {
845
+ id: number | null;
846
+ };
847
+ } | {
848
+ event: "error";
849
+ payload: {
850
+ code: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED";
851
+ message: string;
852
+ retryable: boolean;
853
+ category: "autoplay" | "manifest" | "media" | "network" | "auth" | "env";
854
+ cause?: import('zod').objectOutputType<{
855
+ name: import('zod').ZodString;
856
+ message: import('zod').ZodString;
857
+ code: import('zod').ZodOptional<import('zod').ZodNumber>;
858
+ status: import('zod').ZodOptional<import('zod').ZodNumber>;
859
+ }, import('zod').ZodUnion<[import('zod').ZodString, import('zod').ZodNumber, import('zod').ZodBoolean]>, "strip"> | undefined;
860
+ };
861
+ } | {
862
+ event: "autoplayblocked";
863
+ payload: {};
864
+ } | {
865
+ event: "recovery";
866
+ payload: {
867
+ sessionId: string;
868
+ phase: "detected";
869
+ recoveryId: number;
870
+ strategy: "reconnect" | "media_recovery" | "visibility_reload";
871
+ trigger: "error" | "manual" | "visibility" | "stall" | "startup_timeout";
872
+ attempt: number;
873
+ maxAttempts: number;
874
+ elapsedMs: number;
875
+ reason?: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED" | undefined;
876
+ } | {
877
+ sessionId: string;
878
+ phase: "backoff";
879
+ recoveryId: number;
880
+ strategy: "reconnect" | "media_recovery" | "visibility_reload";
881
+ trigger: "error" | "manual" | "visibility" | "stall" | "startup_timeout";
882
+ attempt: number;
883
+ maxAttempts: number;
884
+ elapsedMs: number;
885
+ reason?: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED" | undefined;
886
+ } | {
887
+ sessionId: string;
888
+ phase: "attempting";
889
+ recoveryId: number;
890
+ strategy: "reconnect" | "media_recovery" | "visibility_reload";
891
+ trigger: "error" | "manual" | "visibility" | "stall" | "startup_timeout";
892
+ attempt: number;
893
+ maxAttempts: number;
894
+ elapsedMs: number;
895
+ reason?: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED" | undefined;
896
+ } | {
897
+ sessionId: string;
898
+ phase: "validating";
899
+ recoveryId: number;
900
+ strategy: "reconnect" | "media_recovery" | "visibility_reload";
901
+ trigger: "error" | "manual" | "visibility" | "stall" | "startup_timeout";
902
+ attempt: number;
903
+ maxAttempts: number;
904
+ elapsedMs: number;
905
+ reason?: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED" | undefined;
906
+ } | {
907
+ sessionId: string;
908
+ phase: "recovered";
909
+ recoveryId: number;
910
+ strategy: "reconnect" | "media_recovery" | "visibility_reload";
911
+ trigger: "error" | "manual" | "visibility" | "stall" | "startup_timeout";
912
+ attempt: number;
913
+ maxAttempts: number;
914
+ elapsedMs: number;
915
+ validatedBy: "playing_position_advance";
916
+ reason?: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED" | undefined;
917
+ } | {
918
+ outcome: "timeout" | "attempts_exhausted";
919
+ sessionId: string;
920
+ phase: "failed";
921
+ recoveryId: number;
922
+ strategy: "reconnect" | "media_recovery" | "visibility_reload";
923
+ trigger: "error" | "manual" | "visibility" | "stall" | "startup_timeout";
924
+ attempt: number;
925
+ maxAttempts: number;
926
+ elapsedMs: number;
927
+ reason?: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED" | undefined;
928
+ } | {
929
+ outcome: "source_changed" | "destroyed" | "superseded" | "user_paused" | "natural_recovery";
930
+ sessionId: string;
931
+ phase: "cancelled";
932
+ recoveryId: number;
933
+ strategy: "reconnect" | "media_recovery" | "visibility_reload";
934
+ trigger: "error" | "manual" | "visibility" | "stall" | "startup_timeout";
935
+ attempt: number;
936
+ maxAttempts: number;
937
+ elapsedMs: number;
938
+ reason?: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED" | undefined;
939
+ };
940
+ } | {
941
+ event: "compatwarning";
942
+ payload: {
943
+ code: "W_BROWSER_INCOMPATIBLE" | "W_VERSION_MISMATCH" | "W_EVENT_REJECTED";
944
+ message: string;
945
+ ua: string;
946
+ hostVersion?: string | undefined;
947
+ iframeVersion?: string | undefined;
948
+ rejectedEvent?: string | undefined;
949
+ };
950
+ } | {
951
+ event: "stalled";
952
+ payload: {
953
+ phase: "start" | "end";
954
+ position: number;
955
+ durationMs?: number | undefined;
956
+ kind?: "seek" | "playback" | "firstframe" | undefined;
957
+ };
958
+ } | {
959
+ event: "playablechange";
960
+ payload: {
961
+ reason: "error" | "stalled" | "ok" | "initializing" | "buffering" | "reconnecting" | "autoplay_blocked" | "frame_disconnected" | "degraded";
962
+ playable: boolean;
963
+ recoverable: boolean;
964
+ action?: "play" | "none" | "retry" | "replace-source" | "recreate-frame" | undefined;
965
+ };
966
+ } | {
967
+ event: "kernelhealth";
968
+ payload: {
969
+ reason: "media" | "network" | "other";
970
+ durationMs: number;
971
+ degraded: boolean;
972
+ count: number;
973
+ detail: string;
974
+ };
975
+ } | {
976
+ event: "audiohealth";
977
+ payload: {
978
+ reason: "audio_data_gap";
979
+ durationMs: number;
980
+ degraded: boolean;
981
+ };
982
+ } | {
983
+ event: "bufferhealth";
984
+ payload: {
985
+ draining: boolean;
986
+ marginSec: number;
987
+ };
988
+ } | {
989
+ event: "contextchange";
990
+ payload: {
991
+ sessionId: string;
992
+ kernel: "native" | "hls.js" | "flv.js";
993
+ position: number;
994
+ qualityLevel: number | null;
995
+ srcOrigin: string;
996
+ srcPath: string;
997
+ streamKind?: "live" | "vod" | undefined;
998
+ runtime?: {
999
+ platform: "unknown" | "ios" | "android" | "desktop";
1000
+ browser: "unknown" | "webkit" | "gecko" | "chromium" | "embedded";
1001
+ mse: "standard" | "managed" | "unavailable";
1002
+ } | undefined;
1003
+ mediaType?: "mp4" | "hls" | "flv" | undefined;
1004
+ };
1005
+ } | {
1006
+ event: "firstframe";
1007
+ payload: {
1008
+ fvt: number;
1009
+ };
1010
+ } | {
1011
+ event: "framefreeze";
1012
+ payload: {
1013
+ durationMs: number;
1014
+ droppedFrames: number;
1015
+ totalFrames: number;
1016
+ };
1017
+ } | {
1018
+ event: "useraction";
1019
+ payload: {
1020
+ source: string;
1021
+ action: "seek" | "switch_play_pause" | "switch_fullscreen" | "switch_cssfullscreen" | "switch_css_fullscreen" | "change_definition" | "change_rate" | "change_volume" | "change_muted" | "change_pip" | "rotate" | "shot" | "download" | "switch_danmu" | "error_retry";
1022
+ from: string | number | boolean | null;
1023
+ to: string | number | boolean | null;
1024
+ };
1025
+ }) => any) | undefined;
1026
+ onDeliveredPlayerEvent?: ((payload: {
1027
+ event: {
1028
+ event: "pagefullscreenchange";
1029
+ payload: {
1030
+ active: boolean;
1031
+ };
1032
+ } | {
1033
+ event: "sourceroute";
1034
+ payload: {
1035
+ outcome: "selected";
1036
+ sessionId: string;
1037
+ candidateTypes: ("mp4" | "hls" | "flv")[];
1038
+ streamKind: "live" | "vod";
1039
+ runtime: {
1040
+ platform: "unknown" | "ios" | "android" | "desktop";
1041
+ browser: "unknown" | "webkit" | "gecko" | "chromium" | "embedded";
1042
+ mse: "standard" | "managed" | "unavailable";
1043
+ };
1044
+ mediaType: "mp4" | "hls" | "flv";
1045
+ kernel: "native" | "hls.js" | "flv.js";
1046
+ reason: "required_hls" | "live_preference" | "vod_preference" | "native_mp4_fallback";
1047
+ } | {
1048
+ outcome: "unsupported";
1049
+ sessionId: string;
1050
+ candidateTypes: ("mp4" | "hls" | "flv")[];
1051
+ streamKind: "live" | "vod";
1052
+ runtime: {
1053
+ platform: "unknown" | "ios" | "android" | "desktop";
1054
+ browser: "unknown" | "webkit" | "gecko" | "chromium" | "embedded";
1055
+ mse: "standard" | "managed" | "unavailable";
1056
+ };
1057
+ mediaType: null;
1058
+ kernel: null;
1059
+ reason: "no_supported_candidate";
1060
+ errorCode: "E_MEDIA_NOT_SUPPORTED";
1061
+ };
1062
+ } | {
1063
+ event: "ready";
1064
+ payload: {
1065
+ duration: number;
1066
+ quality: {
1067
+ level: number;
1068
+ label?: string | undefined;
1069
+ height?: number | undefined;
1070
+ bitrate?: number | undefined;
1071
+ }[];
1072
+ subtitles?: {
1073
+ locale: string;
1074
+ label: string;
1075
+ id: number;
1076
+ }[] | undefined;
1077
+ };
1078
+ } | {
1079
+ event: "play";
1080
+ payload: {};
1081
+ } | {
1082
+ event: "pause";
1083
+ payload: {};
1084
+ } | {
1085
+ event: "ended";
1086
+ payload: {};
1087
+ } | {
1088
+ event: "timeupdate";
1089
+ payload: {
1090
+ duration: number;
1091
+ time: number;
1092
+ };
1093
+ } | {
1094
+ event: "volumechange";
1095
+ payload: {
1096
+ volume: number;
1097
+ muted: boolean;
1098
+ };
1099
+ } | {
1100
+ event: "seeking";
1101
+ payload: {
1102
+ time: number;
1103
+ };
1104
+ } | {
1105
+ event: "seeked";
1106
+ payload: {
1107
+ time: number;
1108
+ };
1109
+ } | {
1110
+ event: "waiting";
1111
+ payload: {};
1112
+ } | {
1113
+ event: "playing";
1114
+ payload: {};
1115
+ } | {
1116
+ event: "qualitychange";
1117
+ payload: {
1118
+ auto: boolean;
1119
+ level: number;
1120
+ };
1121
+ } | {
1122
+ event: "subtitlechange";
1123
+ payload: {
1124
+ id: number | null;
1125
+ };
1126
+ } | {
1127
+ event: "error";
1128
+ payload: {
1129
+ code: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED";
1130
+ message: string;
1131
+ retryable: boolean;
1132
+ category: "autoplay" | "manifest" | "media" | "network" | "auth" | "env";
1133
+ cause?: import('zod').objectOutputType<{
1134
+ name: import('zod').ZodString;
1135
+ message: import('zod').ZodString;
1136
+ code: import('zod').ZodOptional<import('zod').ZodNumber>;
1137
+ status: import('zod').ZodOptional<import('zod').ZodNumber>;
1138
+ }, import('zod').ZodUnion<[import('zod').ZodString, import('zod').ZodNumber, import('zod').ZodBoolean]>, "strip"> | undefined;
1139
+ };
1140
+ } | {
1141
+ event: "autoplayblocked";
1142
+ payload: {};
1143
+ } | {
1144
+ event: "recovery";
1145
+ payload: {
1146
+ sessionId: string;
1147
+ phase: "detected";
1148
+ recoveryId: number;
1149
+ strategy: "reconnect" | "media_recovery" | "visibility_reload";
1150
+ trigger: "error" | "manual" | "visibility" | "stall" | "startup_timeout";
1151
+ attempt: number;
1152
+ maxAttempts: number;
1153
+ elapsedMs: number;
1154
+ reason?: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED" | undefined;
1155
+ } | {
1156
+ sessionId: string;
1157
+ phase: "backoff";
1158
+ recoveryId: number;
1159
+ strategy: "reconnect" | "media_recovery" | "visibility_reload";
1160
+ trigger: "error" | "manual" | "visibility" | "stall" | "startup_timeout";
1161
+ attempt: number;
1162
+ maxAttempts: number;
1163
+ elapsedMs: number;
1164
+ reason?: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED" | undefined;
1165
+ } | {
1166
+ sessionId: string;
1167
+ phase: "attempting";
1168
+ recoveryId: number;
1169
+ strategy: "reconnect" | "media_recovery" | "visibility_reload";
1170
+ trigger: "error" | "manual" | "visibility" | "stall" | "startup_timeout";
1171
+ attempt: number;
1172
+ maxAttempts: number;
1173
+ elapsedMs: number;
1174
+ reason?: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED" | undefined;
1175
+ } | {
1176
+ sessionId: string;
1177
+ phase: "validating";
1178
+ recoveryId: number;
1179
+ strategy: "reconnect" | "media_recovery" | "visibility_reload";
1180
+ trigger: "error" | "manual" | "visibility" | "stall" | "startup_timeout";
1181
+ attempt: number;
1182
+ maxAttempts: number;
1183
+ elapsedMs: number;
1184
+ reason?: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED" | undefined;
1185
+ } | {
1186
+ sessionId: string;
1187
+ phase: "recovered";
1188
+ recoveryId: number;
1189
+ strategy: "reconnect" | "media_recovery" | "visibility_reload";
1190
+ trigger: "error" | "manual" | "visibility" | "stall" | "startup_timeout";
1191
+ attempt: number;
1192
+ maxAttempts: number;
1193
+ elapsedMs: number;
1194
+ validatedBy: "playing_position_advance";
1195
+ reason?: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED" | undefined;
1196
+ } | {
1197
+ outcome: "timeout" | "attempts_exhausted";
1198
+ sessionId: string;
1199
+ phase: "failed";
1200
+ recoveryId: number;
1201
+ strategy: "reconnect" | "media_recovery" | "visibility_reload";
1202
+ trigger: "error" | "manual" | "visibility" | "stall" | "startup_timeout";
1203
+ attempt: number;
1204
+ maxAttempts: number;
1205
+ elapsedMs: number;
1206
+ reason?: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED" | undefined;
1207
+ } | {
1208
+ outcome: "source_changed" | "destroyed" | "superseded" | "user_paused" | "natural_recovery";
1209
+ sessionId: string;
1210
+ phase: "cancelled";
1211
+ recoveryId: number;
1212
+ strategy: "reconnect" | "media_recovery" | "visibility_reload";
1213
+ trigger: "error" | "manual" | "visibility" | "stall" | "startup_timeout";
1214
+ attempt: number;
1215
+ maxAttempts: number;
1216
+ elapsedMs: number;
1217
+ reason?: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED" | undefined;
1218
+ };
1219
+ } | {
1220
+ event: "compatwarning";
1221
+ payload: {
1222
+ code: "W_BROWSER_INCOMPATIBLE" | "W_VERSION_MISMATCH" | "W_EVENT_REJECTED";
1223
+ message: string;
1224
+ ua: string;
1225
+ hostVersion?: string | undefined;
1226
+ iframeVersion?: string | undefined;
1227
+ rejectedEvent?: string | undefined;
1228
+ };
1229
+ } | {
1230
+ event: "stalled";
1231
+ payload: {
1232
+ phase: "start" | "end";
1233
+ position: number;
1234
+ durationMs?: number | undefined;
1235
+ kind?: "seek" | "playback" | "firstframe" | undefined;
1236
+ };
1237
+ } | {
1238
+ event: "playablechange";
1239
+ payload: {
1240
+ reason: "error" | "stalled" | "ok" | "initializing" | "buffering" | "reconnecting" | "autoplay_blocked" | "frame_disconnected" | "degraded";
1241
+ playable: boolean;
1242
+ recoverable: boolean;
1243
+ action?: "play" | "none" | "retry" | "replace-source" | "recreate-frame" | undefined;
1244
+ };
1245
+ } | {
1246
+ event: "kernelhealth";
1247
+ payload: {
1248
+ reason: "media" | "network" | "other";
1249
+ durationMs: number;
1250
+ degraded: boolean;
1251
+ count: number;
1252
+ detail: string;
1253
+ };
1254
+ } | {
1255
+ event: "audiohealth";
1256
+ payload: {
1257
+ reason: "audio_data_gap";
1258
+ durationMs: number;
1259
+ degraded: boolean;
1260
+ };
1261
+ } | {
1262
+ event: "bufferhealth";
1263
+ payload: {
1264
+ draining: boolean;
1265
+ marginSec: number;
1266
+ };
1267
+ } | {
1268
+ event: "contextchange";
1269
+ payload: {
1270
+ sessionId: string;
1271
+ kernel: "native" | "hls.js" | "flv.js";
1272
+ position: number;
1273
+ qualityLevel: number | null;
1274
+ srcOrigin: string;
1275
+ srcPath: string;
1276
+ streamKind?: "live" | "vod" | undefined;
1277
+ runtime?: {
1278
+ platform: "unknown" | "ios" | "android" | "desktop";
1279
+ browser: "unknown" | "webkit" | "gecko" | "chromium" | "embedded";
1280
+ mse: "standard" | "managed" | "unavailable";
1281
+ } | undefined;
1282
+ mediaType?: "mp4" | "hls" | "flv" | undefined;
1283
+ };
1284
+ } | {
1285
+ event: "firstframe";
1286
+ payload: {
1287
+ fvt: number;
1288
+ };
1289
+ } | {
1290
+ event: "framefreeze";
1291
+ payload: {
1292
+ durationMs: number;
1293
+ droppedFrames: number;
1294
+ totalFrames: number;
1295
+ };
1296
+ } | {
1297
+ event: "useraction";
1298
+ payload: {
1299
+ source: string;
1300
+ action: "seek" | "switch_play_pause" | "switch_fullscreen" | "switch_cssfullscreen" | "switch_css_fullscreen" | "change_definition" | "change_rate" | "change_volume" | "change_muted" | "change_pip" | "rotate" | "shot" | "download" | "switch_danmu" | "error_retry";
1301
+ from: string | number | boolean | null;
1302
+ to: string | number | boolean | null;
1303
+ };
1304
+ };
1305
+ producerSessionId: string;
1306
+ sequence: number;
1307
+ deliveryId: string;
1308
+ occurredAtMs: number;
1309
+ }) => any) | undefined;
1310
+ onReady?: ((payload: {
1311
+ duration: number;
1312
+ quality: import('@video-lab/protocol').QualityLevel[];
1313
+ subtitles?: import('@video-lab/protocol').SubtitleTrackInfo[];
1314
+ }) => any) | undefined;
1315
+ onPlay?: (() => any) | undefined;
1316
+ onPause?: (() => any) | undefined;
1317
+ onEnded?: (() => any) | undefined;
1318
+ onTimeUpdate?: ((payload: {
1319
+ time: number;
1320
+ duration: number;
1321
+ }) => any) | undefined;
1322
+ onVolumeChange?: ((payload: {
1323
+ volume: number;
1324
+ muted: boolean;
1325
+ }) => any) | undefined;
1326
+ onSeeking?: ((payload: {
1327
+ time: number;
1328
+ }) => any) | undefined;
1329
+ onSeeked?: ((payload: {
1330
+ time: number;
1331
+ }) => any) | undefined;
1332
+ onWaiting?: (() => any) | undefined;
1333
+ onPlaying?: (() => any) | undefined;
1334
+ onQualityChange?: ((payload: {
1335
+ level: number;
1336
+ auto: boolean;
1337
+ }) => any) | undefined;
1338
+ onSubtitleChange?: ((payload: {
1339
+ id: number | null;
1340
+ }) => any) | undefined;
1341
+ onError?: ((payload: {
1342
+ code: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED";
1343
+ message: string;
1344
+ retryable: boolean;
1345
+ category: "autoplay" | "manifest" | "media" | "network" | "auth" | "env";
1346
+ cause?: import('zod').objectOutputType<{
1347
+ name: import('zod').ZodString;
1348
+ message: import('zod').ZodString;
1349
+ code: import('zod').ZodOptional<import('zod').ZodNumber>;
1350
+ status: import('zod').ZodOptional<import('zod').ZodNumber>;
1351
+ }, import('zod').ZodUnion<[import('zod').ZodString, import('zod').ZodNumber, import('zod').ZodBoolean]>, "strip"> | undefined;
1352
+ }) => any) | undefined;
1353
+ onAutoplayBlocked?: (() => any) | undefined;
1354
+ onCompatWarning?: ((payload: {
1355
+ code: string;
1356
+ message: string;
1357
+ ua: string;
1358
+ }) => any) | undefined;
1359
+ onStalled?: ((payload: {
1360
+ phase: "start" | "end";
1361
+ position: number;
1362
+ durationMs?: number;
1363
+ }) => any) | undefined;
1364
+ onPlayableChange?: ((payload: {
1365
+ reason: "error" | "stalled" | "ok" | "initializing" | "buffering" | "reconnecting" | "autoplay_blocked" | "frame_disconnected" | "degraded";
1366
+ playable: boolean;
1367
+ recoverable: boolean;
1368
+ action?: "play" | "none" | "retry" | "replace-source" | "recreate-frame" | undefined;
1369
+ }) => any) | undefined;
1370
+ onKernelHealth?: ((payload: {
1371
+ reason: "media" | "network" | "other";
1372
+ durationMs: number;
1373
+ degraded: boolean;
1374
+ count: number;
1375
+ detail: string;
1376
+ }) => any) | undefined;
1377
+ onAudioHealth?: ((payload: {
1378
+ reason: "audio_data_gap";
1379
+ durationMs: number;
1380
+ degraded: boolean;
1381
+ }) => any) | undefined;
1382
+ onBufferHealth?: ((payload: {
1383
+ draining: boolean;
1384
+ marginSec: number;
1385
+ }) => any) | undefined;
1386
+ onContextChange?: ((payload: {
1387
+ sessionId: string;
1388
+ kernel: "native" | "hls.js" | "flv.js";
1389
+ position: number;
1390
+ qualityLevel: number | null;
1391
+ srcOrigin: string;
1392
+ srcPath: string;
1393
+ streamKind?: "live" | "vod" | undefined;
1394
+ runtime?: {
1395
+ platform: "unknown" | "ios" | "android" | "desktop";
1396
+ browser: "unknown" | "webkit" | "gecko" | "chromium" | "embedded";
1397
+ mse: "standard" | "managed" | "unavailable";
1398
+ } | undefined;
1399
+ mediaType?: "mp4" | "hls" | "flv" | undefined;
1400
+ }) => any) | undefined;
1401
+ onSourceRoute?: ((payload: {
1402
+ outcome: "selected";
1403
+ sessionId: string;
1404
+ candidateTypes: ("mp4" | "hls" | "flv")[];
1405
+ streamKind: "live" | "vod";
1406
+ runtime: {
1407
+ platform: "unknown" | "ios" | "android" | "desktop";
1408
+ browser: "unknown" | "webkit" | "gecko" | "chromium" | "embedded";
1409
+ mse: "standard" | "managed" | "unavailable";
1410
+ };
1411
+ mediaType: "mp4" | "hls" | "flv";
1412
+ kernel: "native" | "hls.js" | "flv.js";
1413
+ reason: "required_hls" | "live_preference" | "vod_preference" | "native_mp4_fallback";
1414
+ } | {
1415
+ outcome: "unsupported";
1416
+ sessionId: string;
1417
+ candidateTypes: ("mp4" | "hls" | "flv")[];
1418
+ streamKind: "live" | "vod";
1419
+ runtime: {
1420
+ platform: "unknown" | "ios" | "android" | "desktop";
1421
+ browser: "unknown" | "webkit" | "gecko" | "chromium" | "embedded";
1422
+ mse: "standard" | "managed" | "unavailable";
1423
+ };
1424
+ mediaType: null;
1425
+ kernel: null;
1426
+ reason: "no_supported_candidate";
1427
+ errorCode: "E_MEDIA_NOT_SUPPORTED";
1428
+ }) => any) | undefined;
1429
+ onFirstFrame?: ((payload: {
1430
+ fvt: number;
1431
+ }) => any) | undefined;
1432
+ onFrameFreeze?: ((payload: {
1433
+ durationMs: number;
1434
+ droppedFrames: number;
1435
+ totalFrames: number;
1436
+ }) => any) | undefined;
1437
+ onPageFullscreenChange?: ((payload: {
1438
+ active: boolean;
1439
+ }) => any) | undefined;
1440
+ onUserAction?: ((payload: {
1441
+ source: string;
1442
+ action: "seek" | "switch_play_pause" | "switch_fullscreen" | "switch_cssfullscreen" | "switch_css_fullscreen" | "change_definition" | "change_rate" | "change_volume" | "change_muted" | "change_pip" | "rotate" | "shot" | "download" | "switch_danmu" | "error_retry";
1443
+ from: string | number | boolean | null;
1444
+ to: string | number | boolean | null;
1445
+ }) => any) | undefined;
1446
+ }, {
34
1447
  autoplay: boolean;
35
1448
  muted: boolean;
36
1449
  loop: boolean;
37
1450
  playsinline: boolean;
38
1451
  controls: boolean;
1452
+ showErrorOverlay: boolean;
1453
+ showLoadingOverlay: boolean;
39
1454
  interactive: boolean;
40
1455
  debug: boolean;
41
- }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
1456
+ }, {}>;
42
1457
  declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
43
1458
  export default _default;
1459
+ type __VLS_WithDefaults<P, D> = {
1460
+ [K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_PrettifyLocal<P[K] & {
1461
+ default: D[K];
1462
+ }> : P[K];
1463
+ };
1464
+ type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
1465
+ type __VLS_TypePropsToOption<T> = {
1466
+ [K in keyof T]-?: {} extends Pick<T, K> ? {
1467
+ type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
1468
+ } : {
1469
+ type: import('vue').PropType<T[K]>;
1470
+ required: true;
1471
+ };
1472
+ };
44
1473
  type __VLS_WithSlots<T, S> = T & {
45
1474
  new (): {
46
1475
  $slots: S;
47
1476
  };
48
1477
  };
1478
+ type __VLS_PrettifyLocal<T> = {
1479
+ [K in keyof T]: T[K];
1480
+ } & {};
49
1481
  //# sourceMappingURL=VideoPlayerFrame.vue.d.ts.map