@banou/media-player 0.8.8 → 0.8.10

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.
@@ -1,4 +1,4 @@
1
- export { startPlayback, terminateRemuxer, DEFAULT_BUFFER_SIZE } from './playback';
1
+ export { startPlayback, terminateRemuxer, MediaElementError, isMediaElementError, DEFAULT_BUFFER_SIZE } from './playback';
2
2
  export type { PlaybackOptions, PlaybackController, MediaIndex, AudioStream } from './playback';
3
3
  export { createSubtitleRenderer, SUBTITLES_OFF } from './subtitles';
4
4
  export type { SubtitleRenderer, SubtitleRendererOptions, SubtitleStream } from './subtitles';
@@ -1,2 +1,2 @@
1
- import { a as e, c as t, i as n, l as r, n as i, o as a, r as o, s, t as c, u as l } from "../engine-B6flRjLd.js";
2
- export { n as DEFAULT_BUFFER_SIZE, s as SUBTITLES_OFF, c as createPictureInPicture, t as createSubtitleRenderer, o as createThumbnailGenerator, r as getTimeRanges, i as pictureInPictureMode, e as startPlayback, a as terminateRemuxer, l as updateSourceBuffer };
1
+ import { a as e, c as t, d as n, f as r, i, l as a, n as o, o as s, r as c, s as l, t as u, u as d } from "../engine-Cownv8gD.js";
2
+ export { i as DEFAULT_BUFFER_SIZE, e as MediaElementError, a as SUBTITLES_OFF, u as createPictureInPicture, d as createSubtitleRenderer, c as createThumbnailGenerator, n as getTimeRanges, s as isMediaElementError, o as pictureInPictureMode, l as startPlayback, t as terminateRemuxer, r as updateSourceBuffer };
@@ -37,6 +37,19 @@ export type PlaybackController = {
37
37
  videoMimeType: string;
38
38
  audioMimeType: string;
39
39
  };
40
+ /**
41
+ * A terminal failure of the media element itself, as opposed to anything this pipeline did.
42
+ *
43
+ * It is worth its own type because it is the one error class that says something about the CURE:
44
+ * the element is finished and no append will ever succeed against it again, so reporting it to the
45
+ * viewer is pointless and only a rebuilt element clears it. The flag rather than an `instanceof`
46
+ * is what survives the error crossing a module boundary.
47
+ */
48
+ export declare class MediaElementError extends Error {
49
+ readonly mediaElement = true;
50
+ constructor(message: string, options?: ErrorOptions);
51
+ }
52
+ export declare const isMediaElementError: (error: unknown) => boolean;
40
53
  export declare const DEFAULT_BUFFER_SIZE = 2500000;
41
54
  export declare const terminateRemuxer: (remuxer: {
42
55
  worker: Worker;
@@ -162,32 +162,37 @@ var a = (e) => Array(e.buffered.length).fill(void 0).map((t, n) => ({
162
162
  clearInterval(y), t.removeEventListener("ratechange", b), c?.destroy(), c = void 0;
163
163
  }
164
164
  };
165
- }, h = -20, g = 60, _ = 30, v = -5, y = 20, b = 5, x = 15e3, S = 1, C = 25e5, w = (e) => {
165
+ }, h = class extends Error {
166
+ mediaElement = !0;
167
+ constructor(e, t) {
168
+ super(e, t), this.name = "MediaElementError";
169
+ }
170
+ }, g = (e) => !!e && typeof e == "object" && e.mediaElement === !0, _ = -20, v = 60, y = 30, b = -5, x = 20, S = 5, C = 15e3, w = 1, T = 200, E = 250, D = 25e5, O = (e) => {
166
171
  let { worker: t } = e, n = setTimeout(() => t.terminate(), 2e3);
167
172
  e.destroy().catch(() => {}).finally(() => {
168
173
  clearTimeout(n), t.terminate();
169
174
  });
170
- }, T = async (t) => {
171
- let { videoElement: n, canvasElement: r, read: i, length: o, publicPath: c, libavWorkerUrl: l, jassubWorkerUrl: u, jassubWasmUrl: d, jassubLegacyWasmUrl: f, defaultFontUrl: p, bufferSize: T = C, audioStreamIndex: E, onReady: D, onError: O, onRecovered: k, onSeek: A, onSubtitleStreams: j, onAudioStreams: ee } = t, M = await e({
175
+ }, k = async (t) => {
176
+ let { videoElement: n, canvasElement: r, read: i, length: o, publicPath: c, libavWorkerUrl: l, jassubWorkerUrl: u, jassubWasmUrl: d, jassubLegacyWasmUrl: f, defaultFontUrl: p, bufferSize: g = D, audioStreamIndex: k, onReady: A, onError: j, onRecovered: ee, onSeek: M, onSubtitleStreams: te, onAudioStreams: ne } = t, N = await e({
172
177
  publicPath: c,
173
178
  workerUrl: l,
174
179
  workerOptions: { type: "module" },
175
- bufferSize: T,
180
+ bufferSize: g,
176
181
  length: o,
177
- audioStreamIndex: E,
182
+ audioStreamIndex: k,
178
183
  read: i
179
- }), N = [], P = !1, F = () => {
180
- if (!P) {
181
- P = !0;
182
- for (let e of [...N].reverse()) try {
184
+ }), P = [], F = !1, I = () => {
185
+ if (!F) {
186
+ F = !0;
187
+ for (let e of [...P].reverse()) try {
183
188
  e();
184
189
  } catch {}
185
190
  }
186
191
  };
187
- N.push(() => w(M));
192
+ P.push(() => O(N));
188
193
  try {
189
- let e = await M.init(), t = e.audioStreams ?? [], i = t.some((e) => e.streamIndex === E) ? E : t[0]?.streamIndex ?? -1;
190
- ee?.(t, i);
194
+ let e = await N.init(), t = e.audioStreams ?? [], i = t.some((e) => e.streamIndex === k) ? k : t[0]?.streamIndex ?? -1;
195
+ ne?.(t, i);
191
196
  let o = m({
192
197
  video: n,
193
198
  canvas: r,
@@ -195,117 +200,153 @@ var a = (e) => Array(e.buffered.length).fill(void 0).map((t, n) => ({
195
200
  wasmUrl: d,
196
201
  legacyWasmUrl: f,
197
202
  defaultFontUrl: p,
198
- onStreams: j
203
+ onStreams: te
199
204
  });
200
- if (N.push(() => o.destroy()), e.attachments?.length && o.pushAttachments(e.attachments), !e.info.output.videoMimeType) throw Error("The video codec in this file could not be identified");
205
+ if (P.push(() => o.destroy()), e.attachments?.length && o.pushAttachments(e.attachments), !e.info.output.videoMimeType) throw Error("The video codec in this file could not be identified");
201
206
  let c = [e.info.output.videoMimeType, e.info.output.audioMimeType].filter(Boolean).join(","), l = `video/mp4; codecs="${c}"`;
202
207
  if (!MediaSource.isTypeSupported(l)) throw Error(`This browser cannot play the codecs in this file: ${c}`);
203
- let C = new MediaSource(), w = URL.createObjectURL(C);
204
- N.push(() => URL.revokeObjectURL(w)), n.src = w;
205
- let T = await new Promise((t, n) => {
208
+ let g = new MediaSource(), D = URL.createObjectURL(g);
209
+ P.push(() => URL.revokeObjectURL(D)), n.src = D, P.push(() => {
210
+ try {
211
+ n.pause();
212
+ } catch {}
213
+ n.removeAttribute("src"), n.load();
214
+ });
215
+ let O = await new Promise((t, n) => {
206
216
  let r = setTimeout(() => {
207
217
  i(), n(/* @__PURE__ */ Error("The MediaSource never opened"));
208
- }, x), i = () => {
209
- clearTimeout(r), C.removeEventListener("sourceopen", a), C.removeEventListener("sourceclose", o), C.removeEventListener("error", o);
218
+ }, C), i = () => {
219
+ clearTimeout(r), g.removeEventListener("sourceopen", a), g.removeEventListener("sourceclose", o), g.removeEventListener("error", o);
210
220
  }, a = () => {
211
221
  try {
212
- let n = C.addSourceBuffer(l);
222
+ let n = g.addSourceBuffer(l);
213
223
  n.mode = "segments";
214
224
  let r = e.info.input.duration;
215
- Number.isFinite(r) && r > 0 && (C.duration = r), i(), t(n);
225
+ Number.isFinite(r) && r > 0 && (g.duration = r), i(), t(n);
216
226
  } catch (e) {
217
227
  i(), n(e);
218
228
  }
219
229
  }, o = () => {
220
230
  i(), n(/* @__PURE__ */ Error("The MediaSource closed before a SourceBuffer could be created"));
221
231
  };
222
- C.addEventListener("sourceopen", a, { once: !0 }), C.addEventListener("sourceclose", o, { once: !0 }), C.addEventListener("error", o, { once: !0 });
223
- }), { appendBuffer: I, unbufferRange: L, updateTimestampOffset: R, endOfStream: z } = s(T, C);
224
- await I(e.data), e.subtitles?.length && o.pushFragments(e.subtitles), D?.();
225
- let B = !1, V = !1, H = !1, U = 0, W = 0, G = null, K = 0, q = 0, J = !1, te = 0, Y = (e, t) => {
226
- let n = e?.message === "Cancelled";
227
- t && n || (console.error(e), !J && (J = !0, O?.(n ? Error("Reading the video file failed", { cause: e }) : e)));
228
- }, X = async (e = !1) => {
229
- let t = n.currentTime, r = e ? v : h, i = e ? y : g;
230
- for (let { start: e, end: n } of a(T)) e < t + r && await L(e, t + r), n > t + i && await L(t + i, n);
231
- }, ne = () => {
232
- let e = a(T);
232
+ g.addEventListener("sourceopen", a, { once: !0 }), g.addEventListener("sourceclose", o, { once: !0 }), g.addEventListener("error", o, { once: !0 });
233
+ }), { appendBuffer: L, unbufferRange: re, updateTimestampOffset: ie, endOfStream: ae } = s(O, g);
234
+ await L(e.data), e.subtitles?.length && o.pushFragments(e.subtitles), A?.();
235
+ let R = !1, z = !1, B = !1, V = 0, H = 0, U = null, W = 0, G = 0, K = !1, oe = 0, q = (e, t, n = !1) => {
236
+ let r = e?.message === "Cancelled";
237
+ t && r || (console.error(e), !(K && !n) && (K = !0, j?.(r ? Error("Reading the video file failed", { cause: e }) : e)));
238
+ }, se = async (e = !1) => {
239
+ let t = n.currentTime, r = e ? b : _, i = e ? x : v;
240
+ for (let { start: e, end: n } of a(O)) e < t + r && await re(e, t + r), n > t + i && await re(t + i, n);
241
+ }, ce = () => {
242
+ let e = a(O);
233
243
  if (!e.length) return !0;
234
244
  let t = n.currentTime;
235
- if (Math.max(...e.map((e) => e.end)) >= t + g) return !1;
236
- let r = e.find((e) => e.start <= t + S && t < e.end);
237
- return !r || r.end < t + _;
238
- }, Z = () => {
245
+ if (Math.max(...e.map((e) => e.end)) >= t + v) return !1;
246
+ let r = e.find((e) => e.start <= t + w && t < e.end);
247
+ return !r || r.end < t + y;
248
+ }, J = () => {
239
249
  let e = n.currentTime;
240
- return a(T).find((t) => t.start <= e + S && e < t.end);
241
- }, re = () => {
242
- let e = Z();
243
- return !!e && e.end >= q - .1;
244
- }, Q = () => {
245
- let e = a(T).map((e) => e.end);
246
- e.length && (q = Math.max(q, ...e));
247
- }, ie = async (e) => {
248
- V = !0, G = null, K = 0, te = e;
249
- let t = ++W;
250
+ return a(O).find((t) => t.start <= e + w && e < t.end);
251
+ }, le = () => {
252
+ let e = J();
253
+ return !!e && e.end >= G - .1;
254
+ }, ue = () => {
255
+ let e = a(O).map((e) => e.end);
256
+ e.length && (G = Math.max(G, ...e));
257
+ }, Y = async (e) => {
258
+ z = !0, U = null, W = 0, oe = e;
259
+ let t = ++H;
250
260
  try {
251
- let { data: n, pts: r, subtitles: i } = await M.seek(e);
252
- if (P || t !== W || (i?.length && o.pushFragments(i), await R(r), P || t !== W)) return;
253
- n.byteLength && (await I(n), Q());
261
+ let { data: n, pts: r, subtitles: i, finished: a } = await N.seek(e);
262
+ if (F || t !== H || (a && (B = !0), i?.length && o.pushFragments(i), await ie(r), F || t !== H)) return;
263
+ n.byteLength && (await L(n), ue());
254
264
  } catch (e) {
255
- Y(e, P || t !== W);
265
+ q(e, F || t !== H);
256
266
  } finally {
257
- t === W && (V = !1);
267
+ t === H && (z = !1);
258
268
  }
259
- }, ae = async () => {
260
- let e = G;
269
+ }, de = async () => {
270
+ let e = U;
261
271
  if (e) try {
262
- await I(e), Q(), G === e && (G = null, K = 0);
272
+ await L(e), ue(), U === e && (U = null, W = 0);
263
273
  } catch (t) {
264
- if (G !== e) return;
274
+ if (U !== e) return;
265
275
  if (t?.name === "QuotaExceededError") {
266
- let t = await X(!0).then(() => !0, () => !1);
267
- if (G !== e) return;
276
+ let t = await se(!0).then(() => !0, () => !1);
277
+ if (U !== e) return;
268
278
  if (t) {
269
- H = !1, await ie(Z()?.end ?? n.currentTime);
279
+ B = !1, await Y(J()?.end ?? n.currentTime);
270
280
  return;
271
281
  }
272
282
  }
273
- if (K += 1, K < b) return;
274
- throw G = null, t;
283
+ if (W += 1, W < S) return;
284
+ throw U = null, t;
275
285
  }
276
- }, oe = async () => {
277
- if (B || V || P || !G && (H || !ne())) return;
278
- let e = ++U, t = W, n = () => P || e !== U || t !== W;
279
- B = !0;
286
+ }, fe = async () => {
287
+ if (R || z || $ !== void 0 || F || !U && (B || !ce())) return;
288
+ let e = ++V, t = H, n = () => F || e !== V || t !== H;
289
+ R = !0;
280
290
  try {
281
- if (!G) {
282
- let { data: e, subtitles: t, finished: r } = await M.read();
283
- if (n() || (r && (H = !0), t?.length && o.pushFragments(t), !e.byteLength)) return;
284
- G = e, K = 0;
291
+ if (!U) {
292
+ let { data: e, subtitles: t, finished: r } = await N.read();
293
+ if (n() || (r && (B = !0), t?.length && o.pushFragments(t), !e.byteLength)) return;
294
+ U = e, W = 0;
285
295
  }
286
- await ae(), !n() && J && (J = !1, k?.());
296
+ await de(), !n() && K && (K = !1, ee?.());
287
297
  } catch (e) {
288
- Y(e, n());
298
+ q(e, n());
289
299
  } finally {
290
- e === U && (B = !1);
300
+ e === V && (R = !1);
301
+ }
302
+ }, pe = (e) => e >= oe && !!J(), X = 0, Z = null, Q, me = (e) => {
303
+ let t = performance.now(), n = t - X;
304
+ if (n >= T) {
305
+ X = t, Z = null, M?.(e);
306
+ return;
291
307
  }
292
- }, se = (e) => e >= te && !!Z(), ce = () => {
308
+ Z = e, !Q && (Q = setTimeout(() => {
309
+ Q = void 0;
310
+ let e = Z;
311
+ Z = null, !(e === null || F) && (X = performance.now(), M?.(e));
312
+ }, T - n));
313
+ };
314
+ P.push(() => {
315
+ Q && clearTimeout(Q);
316
+ });
317
+ let he = 0, $;
318
+ P.push(() => {
319
+ $ && clearTimeout($);
320
+ });
321
+ let ge = () => {
293
322
  let t = n.currentTime, r = e.info.input.duration || n.duration;
294
- r > 0 && A?.(Math.min(Math.max(t / r, 0), 1)), !se(t) && (H = !1, ie(t));
323
+ r > 0 && me(Math.min(Math.max(t / r, 0), 1));
324
+ let i = performance.now(), a = i - he < E;
325
+ if (he = i, !pe(t)) {
326
+ if (B = !1, $ && clearTimeout($), !a) {
327
+ $ = void 0, Y(t);
328
+ return;
329
+ }
330
+ $ = setTimeout(() => {
331
+ if ($ = void 0, F) return;
332
+ let e = n.currentTime;
333
+ pe(e) || (B = !1, Y(e));
334
+ }, E);
335
+ }
295
336
  };
296
- n.addEventListener("seeking", ce), N.push(() => n.removeEventListener("seeking", ce));
297
- let $ = !1, le = () => {
298
- if ($) return;
299
- $ = !0;
337
+ n.addEventListener("seeking", ge), P.push(() => n.removeEventListener("seeking", ge));
338
+ let _e = !1, ve = () => {
339
+ if (_e) return;
340
+ _e = !0;
300
341
  let e = n.error;
301
- Y(Error(`the media element failed: ${e?.message ?? "unknown"}`, { cause: e }), !1);
342
+ q(new h(`the media element failed: ${e?.message ?? "unknown"}`, { cause: e }), !1, !0);
302
343
  };
303
- n.addEventListener("error", le), N.push(() => n.removeEventListener("error", le));
304
- let ue = setInterval(() => {
305
- $ || n.error || (X().catch(() => {}), oe().catch((e) => Y(e, !1)), H && !G && re() && C.readyState === "open" && z().catch(() => {}));
344
+ n.addEventListener("error", ve), P.push(() => n.removeEventListener("error", ve));
345
+ let ye = setInterval(() => {
346
+ _e || n.error || (se().catch(() => {}), fe().catch((e) => q(e, !1)), B && !U && le() && g.readyState === "open" && ae().catch(() => {}));
306
347
  }, 100);
307
- return N.push(() => clearInterval(ue)), {
308
- destroy: F,
348
+ return P.push(() => clearInterval(ye)), {
349
+ destroy: I,
309
350
  selectSubtitleStream: (e) => o.selectStream(e),
310
351
  indexes: e.indexes ?? [],
311
352
  duration: e.info.input.duration,
@@ -313,10 +354,10 @@ var a = (e) => Array(e.buffered.length).fill(void 0).map((t, n) => ({
313
354
  audioMimeType: e.info.output.audioMimeType
314
355
  };
315
356
  } catch (e) {
316
- throw F(), e;
357
+ throw I(), e;
317
358
  }
318
- }, E = 5, D = 500, O = 320, k = 1e6, A = 3, j = 1e4, ee = async (e) => {
319
- let { publicPath: n, workerUrl: r, length: i, read: a, onThumbnails: o, width: s = O } = e, c = await t({
359
+ }, A = 5, j = 500, ee = 320, M = 1e6, te = 3, ne = 1e4, N = async (e) => {
360
+ let { publicPath: n, workerUrl: r, length: i, read: a, onThumbnails: o, width: s = ee } = e, c = await t({
320
361
  publicPath: n,
321
362
  workerUrl: r,
322
363
  workerOptions: { type: "module" },
@@ -324,14 +365,14 @@ var a = (e) => Array(e.buffered.length).fill(void 0).map((t, n) => ({
324
365
  read: a
325
366
  });
326
367
  try {
327
- let t = await c.init(), n = t.duration, r = Math.max(e.interval ?? E, n / D), a = [];
368
+ let t = await c.init(), n = t.duration, r = Math.max(e.interval ?? A, n / j), a = [];
328
369
  for (let [e, o] of t.indexes.entries()) {
329
370
  let s = a.at(-1);
330
371
  s && o.timestamp - s.timestamp < r || a.push({
331
372
  timestamp: o.timestamp,
332
373
  endTime: n,
333
374
  startByte: o.pos,
334
- endByte: Math.min((t.indexes[e + 1]?.pos ?? i) + k, i),
375
+ endByte: Math.min((t.indexes[e + 1]?.pos ?? i) + M, i),
335
376
  done: !1,
336
377
  attempts: 0
337
378
  });
@@ -362,7 +403,7 @@ var a = (e) => Array(e.buffered.length).fill(void 0).map((t, n) => ({
362
403
  }, p = (e) => {
363
404
  e.done = !0, d = d.then(async () => {
364
405
  if (u) return;
365
- let t = await Promise.race([c.readKeyframe(e.timestamp), new Promise((e, t) => setTimeout(() => t(/* @__PURE__ */ Error("timed out")), j))]), n = await createImageBitmap(new Blob([t], { type: "image/png" })), r = new OffscreenCanvas(s, Math.max(1, Math.round(n.height * (s / n.width))));
406
+ let t = await Promise.race([c.readKeyframe(e.timestamp), new Promise((e, t) => setTimeout(() => t(/* @__PURE__ */ Error("timed out")), ne))]), n = await createImageBitmap(new Blob([t], { type: "image/png" })), r = new OffscreenCanvas(s, Math.max(1, Math.round(n.height * (s / n.width))));
366
407
  r.getContext("2d").drawImage(n, 0, 0, r.width, r.height), n.close();
367
408
  let i = await r.convertToBlob({
368
409
  type: "image/webp",
@@ -374,7 +415,7 @@ var a = (e) => Array(e.buffered.length).fill(void 0).map((t, n) => ({
374
415
  endTime: e.endTime
375
416
  }].sort((e, t) => e.startTime - t.startTime), f());
376
417
  }).catch(() => {
377
- e.attempts += 1, e.done = e.attempts >= A;
418
+ e.attempts += 1, e.done = e.attempts >= te;
378
419
  });
379
420
  };
380
421
  return f(), {
@@ -384,14 +425,14 @@ var a = (e) => Array(e.buffered.length).fill(void 0).map((t, n) => ({
384
425
  destroy: () => {
385
426
  u = !0;
386
427
  for (let e of l) URL.revokeObjectURL(e.url);
387
- l = [], w(c);
428
+ l = [], O(c);
388
429
  }
389
430
  };
390
431
  } catch (e) {
391
- throw w(c), e;
432
+ throw O(c), e;
392
433
  }
393
- }, M = 1280, N = 1920, P = 250, F = 100, I = () => typeof HTMLCanvasElement < "u" && "captureStream" in HTMLCanvasElement.prototype, L = () => typeof document < "u" && typeof HTMLVideoElement < "u" && typeof HTMLVideoElement.prototype.requestPictureInPicture == "function" && !!document.pictureInPictureEnabled, R = () => typeof HTMLVideoElement < "u" && "mozCaptureStream" in HTMLVideoElement.prototype, z = () => I() ? L() ? "window" : R() ? "burn-in" : null : null, B = (e) => {
394
- let { video: t, canvas: n } = e, r = e.mode ?? z() ?? "window", i = e.maxWidth ?? (r === "burn-in" ? N : M), a, o, s, c = !1, l = !1, u = !1, d = !1, f, p = () => r === "burn-in" ? !!a : !!a && document.pictureInPictureElement === a.mirror, m = (e, r) => {
434
+ }, P = 1280, F = 1920, I = 250, L = 100, re = () => typeof HTMLCanvasElement < "u" && "captureStream" in HTMLCanvasElement.prototype, ie = () => typeof document < "u" && typeof HTMLVideoElement < "u" && typeof HTMLVideoElement.prototype.requestPictureInPicture == "function" && !!document.pictureInPictureEnabled, ae = () => typeof HTMLVideoElement < "u" && "mozCaptureStream" in HTMLVideoElement.prototype, R = () => re() ? ie() ? "window" : ae() ? "burn-in" : null : null, z = (e) => {
435
+ let { video: t, canvas: n } = e, r = e.mode ?? R() ?? "window", i = e.maxWidth ?? (r === "burn-in" ? F : P), a, o, s, c = !1, l = !1, u = !1, d = !1, f, p = () => r === "burn-in" ? !!a : !!a && document.pictureInPictureElement === a.mirror, m = (e, r) => {
395
436
  r.drawImage(t, 0, 0, e.width, e.height), n.width > 0 && n.height > 0 && r.drawImage(n, 0, 0, e.width, e.height);
396
437
  }, h = () => {
397
438
  a && m(a.composite, a.context);
@@ -418,11 +459,11 @@ var a = (e) => Array(e.buffered.length).fill(void 0).map((t, n) => ({
418
459
  l = !0;
419
460
  let { mirror: e } = a;
420
461
  h(), e.play().then(() => new Promise((e) => {
421
- setTimeout(e, F);
462
+ setTimeout(e, L);
422
463
  })).catch(() => {}).finally(() => {
423
464
  e.pause(), setTimeout(() => {
424
465
  l = !1;
425
- }, F);
466
+ }, L);
426
467
  });
427
468
  }, E = [["play", () => {
428
469
  t.play().catch(() => {});
@@ -459,7 +500,7 @@ var a = (e) => Array(e.buffered.length).fill(void 0).map((t, n) => ({
459
500
  };
460
501
  if (a = f, u.srcObject = f.stream, (e.container ?? t.parentElement ?? document.body).appendChild(u), v(), s = setInterval(() => {
461
502
  t.paused && h();
462
- }, P), u.play().catch(() => {}), u.readyState === 0 && await new Promise((e) => {
503
+ }, I), u.play().catch(() => {}), u.readyState === 0 && await new Promise((e) => {
463
504
  let t = () => {
464
505
  clearTimeout(n), e();
465
506
  }, n = setTimeout(t, 1e3);
@@ -505,4 +546,4 @@ var a = (e) => Array(e.buffered.length).fill(void 0).map((t, n) => ({
505
546
  };
506
547
  };
507
548
  //#endregion
508
- export { T as a, m as c, C as i, a as l, z as n, w as o, ee as r, c as s, B as t, s as u };
549
+ export { h as a, O as c, a as d, s as f, D as i, c as l, R as n, g as o, N as r, k as s, z as t, m as u };