@banou/media-player 0.8.13 → 0.8.16

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.
@@ -32,34 +32,10 @@ var a = (e) => Array(e.buffered.length).fill(void 0).map((t, n) => ({
32
32
  } catch {}
33
33
  })
34
34
  };
35
- }, c = -1, l = (e) => new Date(e).toISOString().slice(11, 22), u = (e, t) => e.createStyle({
36
- ...t,
37
- treat_fontname_as_pattern: 0,
38
- Blur: 0,
39
- Justify: 0,
40
- FontName: t.Fontname,
41
- FontSize: Number(t.Fontsize),
42
- PrimaryColour: Number(t.PrimaryColour),
43
- SecondaryColour: Number(t.SecondaryColour),
44
- OutlineColour: Number(t.OutlineColour),
45
- BackColour: Number(t.BackColour),
46
- Bold: Number(t.Bold),
47
- Italic: Number(t.Italic),
48
- Underline: Number(t.Underline),
49
- StrikeOut: Number(t.StrikeOut),
50
- ScaleX: Number(t.ScaleX),
51
- ScaleY: Number(t.ScaleY),
52
- Spacing: Number(t.Spacing),
53
- Angle: Number(t.Angle),
54
- BorderStyle: Number(t.BorderStyle),
55
- Outline: Number(t.Outline),
56
- Shadow: Number(t.Shadow),
57
- Alignment: Number(t.Alignment),
58
- MarginL: Number(t.MarginL),
59
- MarginR: Number(t.MarginR),
60
- MarginV: Number(t.MarginV),
61
- Encoding: Number(t.Encoding)
62
- }), d = (e) => {
35
+ }, c = -1, l = (e, t) => e.createEvent(t), u = (e) => new Date(e).toISOString().slice(11, 22), d = 1, f = (e) => new Map(r(e).styles.style.map((e, t) => [e.Name, t + d])), p = (e, t) => {
36
+ let n = t.replace(/^\*+/, ""), r = n.toLowerCase() === "default" ? "Default" : n;
37
+ return e.styles.get(r) ?? e.styles.get("Default") ?? 0;
38
+ }, m = (e) => {
63
39
  let t = r(e);
64
40
  return i({
65
41
  ...t,
@@ -70,17 +46,17 @@ var a = (e) => Array(e.buffered.length).fill(void 0).map((t, n) => ({
70
46
  LayoutResY: ""
71
47
  }
72
48
  });
73
- }, f = (e) => {
49
+ }, h = (e) => {
74
50
  let t = e.content.match(/\r?\n\[Events\]\r?\nFormat: (.*)/)?.[0];
75
51
  return t ? {
76
52
  type: "header",
77
53
  streamIndex: e.streamIndex,
78
54
  content: e.content,
79
55
  eventsContent: t,
80
- parsed: r(e.content)
56
+ styles: f(e.content)
81
57
  } : (console.warn(`subtitle stream ${e.streamIndex} has no Events format, ignoring the track`), null);
82
- }, p = (e, t) => {
83
- let [n, i] = t.content.split(","), a = Number(n), o = `Dialogue: ${i},${l(t.start)},${l(t.end)},${t.content.replace(`${a},${i},`, "")}`, s = r(`${e.eventsContent}\r\n${o}`).events.dialogue[0];
58
+ }, g = (e, t) => {
59
+ let [n, i] = t.content.split(","), a = Number(n), o = `Dialogue: ${i},${u(t.start)},${u(t.end)},${t.content.replace(`${a},${i},`, "")}`, s = r(`${e.eventsContent}\r\n${o}`).events.dialogue[0];
84
60
  if (!s) throw Error("dialogue event is undefined");
85
61
  return {
86
62
  type: "dialogue",
@@ -88,6 +64,7 @@ var a = (e) => Array(e.buffered.length).fill(void 0).map((t, n) => ({
88
64
  index: a,
89
65
  assEvent: {
90
66
  ...s,
67
+ Style: p(e, s.Style),
91
68
  Effect: s.Effect ?? "",
92
69
  Text: s.Text.raw,
93
70
  Duration: (s.End - s.Start) * 1e3,
@@ -97,63 +74,61 @@ var a = (e) => Array(e.buffered.length).fill(void 0).map((t, n) => ({
97
74
  _index: a
98
75
  }
99
76
  };
100
- }, m = (e) => {
101
- let { video: t, canvas: r, workerUrl: i, wasmUrl: a, legacyWasmUrl: o, defaultFontUrl: s } = e, c, l = [], m = /* @__PURE__ */ new Map(), h = [], g = /* @__PURE__ */ new Map(), _, v = e.onStreams, y = setInterval(() => {
77
+ }, _ = (e) => {
78
+ let { video: t, canvas: r, workerUrl: i, wasmUrl: a, legacyWasmUrl: o, defaultFontUrl: s } = e, c, u = [], d = /* @__PURE__ */ new Map(), f = [], p = /* @__PURE__ */ new Map(), _, v = e.onStreams, y = setInterval(() => {
102
79
  c?.setCurrentTime(t.paused, t.currentTime, t.playbackRate);
103
80
  }, 100), b = () => c?.setRate(t.playbackRate), x = (e) => {
104
81
  c = new n({
105
82
  onDemandRender: !1,
106
83
  video: t,
107
84
  canvas: r,
108
- subContent: d(e.content),
85
+ subContent: m(e.content),
109
86
  workerUrl: i,
110
87
  modernWasmUrl: a,
111
88
  ...o ? { wasmUrl: o } : {},
112
- fonts: l.map(([, e]) => e),
89
+ fonts: u.map(([, e]) => e),
113
90
  availableFonts: {
114
- ...Object.fromEntries(l),
91
+ ...Object.fromEntries(u),
115
92
  ...s ? { "liberation sans": s } : {}
116
93
  }
117
94
  }), t.removeEventListener("ratechange", c._boundSetRate), t.addEventListener("ratechange", b);
118
- for (let t of e.parsed.styles.style) u(c, t);
119
95
  };
120
96
  return {
121
97
  pushAttachments: (e) => {
122
- l = [...l, ...e.map((e) => [e.filename, new Uint8Array(e.data)])];
98
+ u = [...u, ...e.map((e) => [e.filename, new Uint8Array(e.data)])];
123
99
  },
124
100
  pushFragments: (e) => {
125
101
  for (let t of e) if (t.type === "header") {
126
- if (m.has(t.streamIndex)) continue;
127
- let e = f(t);
102
+ if (d.has(t.streamIndex)) continue;
103
+ let e = h(t);
128
104
  if (!e) continue;
129
- m.set(t.streamIndex, e), h.push({
105
+ d.set(t.streamIndex, e), f.push({
130
106
  streamIndex: t.streamIndex,
131
107
  title: t.title,
132
108
  language: t.language
133
- }), v?.([...h]), _ === void 0 && (_ = t.streamIndex), c || x(e);
109
+ }), v?.([...f]), _ === void 0 && (_ = t.streamIndex), c || x(e);
134
110
  } else {
135
- let e = m.get(t.streamIndex);
111
+ let e = d.get(t.streamIndex);
136
112
  if (!e) continue;
137
- let n = g.get(t.streamIndex);
138
- n || (n = /* @__PURE__ */ new Map(), g.set(t.streamIndex, n));
139
- let r = p(e, t);
113
+ let n = p.get(t.streamIndex);
114
+ n || (n = /* @__PURE__ */ new Map(), p.set(t.streamIndex, n));
115
+ let r = g(e, t);
140
116
  if (n.has(r.index)) continue;
141
- n.set(r.index, r), _ === t.streamIndex && c?.createEvent(r.assEvent);
117
+ n.set(r.index, r), _ === t.streamIndex && c && l(c, r.assEvent);
142
118
  }
143
119
  },
144
120
  selectStream: (e) => {
145
121
  let n = e ?? -1;
146
122
  if (n === _ || !c) return;
147
123
  _ = n, c.freeTrack();
148
- let r = m.get(n);
124
+ let r = d.get(n);
149
125
  if (r) {
150
- c.setTrack(d(r.content));
151
- for (let e of r.parsed.styles.style) u(c, e);
152
- for (let e of g.get(n)?.values() ?? []) c.createEvent(e.assEvent);
126
+ c.setTrack(m(r.content));
127
+ for (let e of p.get(n)?.values() ?? []) l(c, e.assEvent);
153
128
  c.setCurrentTime(t.paused, t.currentTime, t.playbackRate);
154
129
  }
155
130
  },
156
- getStreams: () => [...h],
131
+ getStreams: () => [...f],
157
132
  getSelectedStream: () => _,
158
133
  setOnStreams: (e) => {
159
134
  v = e;
@@ -162,24 +137,24 @@ var a = (e) => Array(e.buffered.length).fill(void 0).map((t, n) => ({
162
137
  clearInterval(y), t.removeEventListener("ratechange", b), c?.destroy(), c = void 0;
163
138
  }
164
139
  };
165
- }, h = class extends Error {
140
+ }, v = class extends Error {
166
141
  mediaElement = !0;
167
142
  constructor(e, t) {
168
143
  super(e, t), this.name = "MediaElementError";
169
144
  }
170
- }, g = (e) => !!e && typeof e == "object" && e.mediaElement === !0, _ = -20, v = 60, y = 30, b = -5, x = 20, ee = 5, te = 15e3, S = 1, C = 200, w = 250, T = 25e5, E = (e) => {
145
+ }, y = (e) => !!e && typeof e == "object" && e.mediaElement === !0, b = -20, x = 60, S = 30, C = -5, w = 20, T = 5, ee = 15e3, E = 1, D = 3, te = 12, ne = 200, re = 250, O = 25e5, k = (e) => {
171
146
  let { worker: t } = e, n = setTimeout(() => t.terminate(), 2e3);
172
147
  e.destroy().catch(() => {}).finally(() => {
173
148
  clearTimeout(n), t.terminate();
174
149
  });
175
- }, D = 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 = T, audioStreamIndex: D, onReady: O, onError: ne, onRecovered: re, onSeek: k, onSubtitleStreams: ie, onAudioStreams: ae } = t, A = await e({
150
+ }, ie = async (t) => {
151
+ let { videoElement: n, canvasElement: r, read: i, length: o, publicPath: c, libavWorkerUrl: l, jassubWorkerUrl: u, jassubWasmUrl: d, jassubLegacyWasmUrl: f, defaultFontUrl: p, bufferSize: m = O, audioStreamIndex: h, onReady: g, onError: y, onRecovered: ie, onSeek: ae, onSubtitleStreams: oe, onAudioStreams: se } = t, A = await e({
177
152
  publicPath: c,
178
153
  workerUrl: l,
179
154
  workerOptions: { type: "module" },
180
- bufferSize: g,
155
+ bufferSize: m,
181
156
  length: o,
182
- audioStreamIndex: D,
157
+ audioStreamIndex: h,
183
158
  read: i
184
159
  }), j = [], M = !1, N = () => {
185
160
  if (!M) {
@@ -189,175 +164,182 @@ var a = (e) => Array(e.buffered.length).fill(void 0).map((t, n) => ({
189
164
  } catch {}
190
165
  }
191
166
  };
192
- j.push(() => E(A));
167
+ j.push(() => k(A));
193
168
  try {
194
- let e = await A.init(), t = e.audioStreams ?? [], i = t.some((e) => e.streamIndex === D) ? D : t[0]?.streamIndex ?? -1;
195
- ae?.(t, i);
196
- let o = m({
169
+ let e = await A.init(), t = e.audioStreams ?? [], i = t.some((e) => e.streamIndex === h) ? h : t[0]?.streamIndex ?? -1;
170
+ se?.(t, i);
171
+ let o = _({
197
172
  video: n,
198
173
  canvas: r,
199
174
  workerUrl: u,
200
175
  wasmUrl: d,
201
176
  legacyWasmUrl: f,
202
177
  defaultFontUrl: p,
203
- onStreams: ie
178
+ onStreams: oe
204
179
  });
205
180
  if (j.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");
206
181
  let c = [e.info.output.videoMimeType, e.info.output.audioMimeType].filter(Boolean).join(","), l = `video/mp4; codecs="${c}"`;
207
182
  if (!MediaSource.isTypeSupported(l)) throw Error(`This browser cannot play the codecs in this file: ${c}`);
208
- let g = new MediaSource(), T = URL.createObjectURL(g);
209
- j.push(() => URL.revokeObjectURL(T)), n.src = T, j.push(() => {
183
+ let m = new MediaSource(), O = URL.createObjectURL(m);
184
+ j.push(() => URL.revokeObjectURL(O)), n.src = O, j.push(() => {
210
185
  try {
211
186
  n.pause();
212
187
  } catch {}
213
188
  n.removeAttribute("src"), n.load();
214
189
  });
215
- let E = await new Promise((t, n) => {
190
+ let k = await new Promise((t, n) => {
216
191
  let r = setTimeout(() => {
217
192
  i(), n(/* @__PURE__ */ Error("The MediaSource never opened"));
218
- }, te), i = () => {
219
- clearTimeout(r), g.removeEventListener("sourceopen", a), g.removeEventListener("sourceclose", o), g.removeEventListener("error", o);
193
+ }, ee), i = () => {
194
+ clearTimeout(r), m.removeEventListener("sourceopen", a), m.removeEventListener("sourceclose", o), m.removeEventListener("error", o);
220
195
  }, a = () => {
221
196
  try {
222
- let n = g.addSourceBuffer(l);
197
+ let n = m.addSourceBuffer(l);
223
198
  n.mode = "segments";
224
199
  let r = e.info.input.duration;
225
- Number.isFinite(r) && r > 0 && (g.duration = r), i(), t(n);
200
+ Number.isFinite(r) && r > 0 && (m.duration = r), i(), t(n);
226
201
  } catch (e) {
227
202
  i(), n(e);
228
203
  }
229
204
  }, o = () => {
230
205
  i(), n(/* @__PURE__ */ Error("The MediaSource closed before a SourceBuffer could be created"));
231
206
  };
232
- g.addEventListener("sourceopen", a, { once: !0 }), g.addEventListener("sourceclose", o, { once: !0 }), g.addEventListener("error", o, { once: !0 });
233
- }), { appendBuffer: P, unbufferRange: F, updateTimestampOffset: oe, endOfStream: se } = s(E, g);
234
- await P(e.data), e.subtitles?.length && o.pushFragments(e.subtitles), O?.();
235
- let I = !1, L = !1, R = 0, z = !1, B = 0, V = 0, H = null, U = 0, W = 0, G = !1, K = 0, q = (e, t, n = !1) => {
207
+ m.addEventListener("sourceopen", a, { once: !0 }), m.addEventListener("sourceclose", o, { once: !0 }), m.addEventListener("error", o, { once: !0 });
208
+ }), { appendBuffer: P, unbufferRange: ce, updateTimestampOffset: le, endOfStream: ue } = s(k, m);
209
+ await P(e.data), e.subtitles?.length && o.pushFragments(e.subtitles), g?.();
210
+ let F = !1, I = !1, L = 0, R, de = () => R ?? n.currentTime, z = !1, B = 0, V = 0, H = null, U = 0, W = 0, G = !1, fe = 0, K = (e, t, n = !1) => {
236
211
  let r = e?.message === "Cancelled";
237
- t && r || (console.error(e), !(G && !n) && (G = !0, ne?.(r ? Error("Reading the video file failed", { cause: e }) : e)));
238
- }, ce = async (e = !1) => {
239
- if (R > 0 && !e) return;
240
- let t = n.currentTime, r = e ? b : _, i = e ? x : v;
241
- for (let { start: e, end: n } of a(E)) e < t + r && await F(e, t + r), n > t + i && await F(t + i, n);
242
- }, le = () => {
243
- let e = a(E);
212
+ t && r || (console.error(e), !(G && !n) && (G = !0, y?.(r ? Error("Reading the video file failed", { cause: e }) : e)));
213
+ }, pe = async (e = !1) => {
214
+ if (L > 0 && !e) return;
215
+ let t = n.currentTime, r = e ? C : b, i = e ? w : x;
216
+ for (let { start: e, end: n } of a(k)) e < t + r && await ce(e, t + r), n > t + i && await ce(t + i, n);
217
+ }, me = () => {
218
+ let e = a(k);
244
219
  if (!e.length) return !0;
245
- let t = n.currentTime;
246
- if (Math.max(...e.map((e) => e.end)) >= t + v) return !1;
247
- let r = e.find((e) => e.start <= t + S && t < e.end);
248
- return !r || r.end < t + y;
249
- }, J = () => {
220
+ let t = de(), n = e.find((e) => e.start <= t + E && t < e.end);
221
+ return n && n.end >= t + x ? !1 : !n || n.end < t + S;
222
+ }, he = () => {
250
223
  let e = n.currentTime;
251
- return a(E).find((t) => t.start <= e + S && e < t.end);
252
- }, ue = () => {
253
- let e = J();
224
+ return a(k).find((t) => t.start <= e + E && e < t.end);
225
+ }, ge = () => {
226
+ let e = he();
254
227
  return !!e && e.end >= W - .1;
255
- }, de = () => {
256
- let e = a(E).map((e) => e.end);
228
+ }, _e = () => {
229
+ let e = a(k).map((e) => e.end);
257
230
  e.length && (W = Math.max(W, ...e));
258
- }, Y = async (e) => {
259
- L = !0, H = null, U = 0, K = e;
231
+ }, q = async (e) => {
232
+ I = !0, H = null, U = 0, fe = e;
260
233
  let t = ++V;
261
234
  try {
262
235
  let { data: n, pts: r, subtitles: i, finished: a } = await A.seek(e);
263
- if (M || t !== V || (a && (z = !0), i?.length && o.pushFragments(i), await oe(r), M || t !== V)) return;
264
- n.byteLength && (await P(n), de());
236
+ if (M || t !== V || (a && (z = !0), i?.length && o.pushFragments(i), await le(r), M || t !== V)) return;
237
+ n.byteLength && (await P(n), _e());
265
238
  } catch (e) {
266
- q(e, M || t !== V);
239
+ K(e, M || t !== V);
267
240
  } finally {
268
- t === V && (L = !1);
241
+ t === V && (I = !1);
269
242
  }
270
- }, fe = async () => {
243
+ }, ve = async () => {
271
244
  let e = H;
272
245
  if (e) try {
273
- await P(e), de(), H === e && (H = null, U = 0);
246
+ await P(e), _e(), H === e && (H = null, U = 0);
274
247
  } catch (t) {
275
248
  if (H !== e) return;
276
249
  if (t?.name === "QuotaExceededError") {
277
- let t = await ce(!0).then(() => !0, () => !1);
250
+ let t = await pe(!0).then(() => !0, () => !1);
278
251
  if (H !== e) return;
279
252
  if (t) {
280
- z = !1, await Y(J()?.end ?? n.currentTime);
253
+ z = !1, await q(he()?.end ?? n.currentTime);
281
254
  return;
282
255
  }
283
256
  }
284
- if (U += 1, U < ee) return;
257
+ if (U += 1, U < T) return;
285
258
  throw H = null, t;
286
259
  }
287
- }, pe = async () => {
288
- if (I || L || $ !== void 0 || M || !H && (z || !le())) return;
260
+ }, ye = async () => {
261
+ if (F || I || Q !== void 0 || M || !H && (z || !me())) return;
289
262
  let e = ++B, t = V, n = () => M || e !== B || t !== V;
290
- I = !0;
263
+ F = !0;
291
264
  try {
292
265
  if (!H) {
293
266
  let { data: e, subtitles: t, finished: r } = await A.read();
294
267
  if (n() || (r && (z = !0), t?.length && o.pushFragments(t), !e.byteLength)) return;
295
268
  H = e, U = 0;
296
269
  }
297
- await fe(), !n() && G && (G = !1, re?.());
270
+ await ve(), !n() && G && (G = !1, ie?.());
298
271
  } catch (e) {
299
- q(e, n());
272
+ K(e, n());
300
273
  } finally {
301
- e === B && (I = !1);
274
+ e === B && (F = !1);
302
275
  }
303
- }, me = (e) => e >= K && !!J(), he = (e) => a(E).some((t) => t.start <= e + S && e < t.end), ge = async (e) => {
304
- if (!(M || he(e))) {
305
- z = !1, R++;
276
+ }, be = (e) => e >= fe && !!he(), xe = (e) => a(k).some((t) => t.start <= e + E && e < t.end), J = (e) => {
277
+ let t = a(k).find((t) => t.start <= e + E && e < t.end);
278
+ return t ? t.end - e : 0;
279
+ }, Se = async (e) => {
280
+ if (!M && !(J(e) >= D)) {
281
+ z = !1, L++, R = e;
306
282
  try {
307
- await Y(e);
283
+ xe(e) || await q(e);
284
+ let t = V;
285
+ for (let n = 0; n < te && !(M || t !== V || z || J(e) >= D); n++) {
286
+ let t = J(e);
287
+ if (await ye(), J(e) <= t) break;
288
+ }
308
289
  } finally {
309
- R--;
290
+ L--, R === e && (R = void 0);
310
291
  }
311
292
  }
312
- }, X = 0, Z = null, Q, _e = (e) => {
313
- let t = performance.now(), n = t - X;
314
- if (n >= C) {
315
- X = t, Z = null, k?.(e);
293
+ }, Y = 0, X = null, Z, Ce = (e) => {
294
+ let t = performance.now(), n = t - Y;
295
+ if (n >= ne) {
296
+ Y = t, X = null, ae?.(e);
316
297
  return;
317
298
  }
318
- Z = e, !Q && (Q = setTimeout(() => {
319
- Q = void 0;
320
- let e = Z;
321
- Z = null, !(e === null || M) && (X = performance.now(), k?.(e));
322
- }, C - n));
299
+ X = e, !Z && (Z = setTimeout(() => {
300
+ Z = void 0;
301
+ let e = X;
302
+ X = null, !(e === null || M) && (Y = performance.now(), ae?.(e));
303
+ }, ne - n));
323
304
  };
324
305
  j.push(() => {
325
- Q && clearTimeout(Q);
306
+ Z && clearTimeout(Z);
326
307
  });
327
- let ve = 0, $;
308
+ let we = 0, Q;
328
309
  j.push(() => {
329
- $ && clearTimeout($);
310
+ Q && clearTimeout(Q);
330
311
  });
331
- let ye = () => {
312
+ let Te = () => {
332
313
  let t = n.currentTime, r = e.info.input.duration || n.duration;
333
- r > 0 && _e(Math.min(Math.max(t / r, 0), 1));
334
- let i = performance.now(), a = i - ve < w;
335
- if (ve = i, !me(t) && !(L && Math.abs(t - K) < .001)) {
336
- if (z = !1, $ && clearTimeout($), !a) {
337
- $ = void 0, Y(t);
314
+ r > 0 && Ce(Math.min(Math.max(t / r, 0), 1));
315
+ let i = performance.now(), a = i - we < re;
316
+ if (we = i, !be(t) && !(I && Math.abs(t - fe) < .001)) {
317
+ if (z = !1, Q && clearTimeout(Q), !a) {
318
+ Q = void 0, q(t);
338
319
  return;
339
320
  }
340
- $ = setTimeout(() => {
341
- if ($ = void 0, M) return;
321
+ Q = setTimeout(() => {
322
+ if (Q = void 0, M) return;
342
323
  let e = n.currentTime;
343
- me(e) || (z = !1, Y(e));
344
- }, w);
324
+ be(e) || (z = !1, q(e));
325
+ }, re);
345
326
  }
346
327
  };
347
- n.addEventListener("seeking", ye), j.push(() => n.removeEventListener("seeking", ye));
348
- let be = !1, xe = () => {
349
- if (be) return;
350
- be = !0;
328
+ n.addEventListener("seeking", Te), j.push(() => n.removeEventListener("seeking", Te));
329
+ let $ = !1, Ee = () => {
330
+ if ($) return;
331
+ $ = !0;
351
332
  let e = n.error;
352
- q(new h(`the media element failed: ${e?.message ?? "unknown"}`, { cause: e }), !1, !0);
333
+ K(new v(`the media element failed: ${e?.message ?? "unknown"}`, { cause: e }), !1, !0);
353
334
  };
354
- n.addEventListener("error", xe), j.push(() => n.removeEventListener("error", xe));
355
- let Se = setInterval(() => {
356
- be || n.error || (ce().catch(() => {}), pe().catch((e) => q(e, !1)), z && !H && ue() && g.readyState === "open" && se().catch(() => {}));
335
+ n.addEventListener("error", Ee), j.push(() => n.removeEventListener("error", Ee));
336
+ let De = setInterval(() => {
337
+ $ || n.error || (pe().catch(() => {}), ye().catch((e) => K(e, !1)), z && !H && ge() && m.readyState === "open" && ue().catch(() => {}));
357
338
  }, 100);
358
- return j.push(() => clearInterval(Se)), {
339
+ return j.push(() => clearInterval(De)), {
359
340
  destroy: N,
360
- prepareSeek: ge,
341
+ prepareSeek: Se,
342
+ videoElement: n,
361
343
  selectSubtitleStream: (e) => o.selectStream(e),
362
344
  indexes: e.indexes ?? [],
363
345
  duration: e.info.input.duration,
@@ -367,8 +349,8 @@ var a = (e) => Array(e.buffered.length).fill(void 0).map((t, n) => ({
367
349
  } catch (e) {
368
350
  throw N(), e;
369
351
  }
370
- }, O = 5, ne = 500, re = 320, k = 1e6, ie = 3, ae = 1e4, A = async (e) => {
371
- let { publicPath: n, workerUrl: r, length: i, read: a, onThumbnails: o, width: s = re } = e, c = await t({
352
+ }, ae = 5, oe = 500, se = 320, A = 1e6, j = 3, M = 1e4, N = async (e) => {
353
+ let { publicPath: n, workerUrl: r, length: i, read: a, onThumbnails: o, width: s = se } = e, c = await t({
372
354
  publicPath: n,
373
355
  workerUrl: r,
374
356
  workerOptions: { type: "module" },
@@ -376,14 +358,14 @@ var a = (e) => Array(e.buffered.length).fill(void 0).map((t, n) => ({
376
358
  read: a
377
359
  });
378
360
  try {
379
- let t = await c.init(), n = t.duration, r = Math.max(e.interval ?? O, n / ne), a = [];
361
+ let t = await c.init(), n = t.duration, r = Math.max(e.interval ?? ae, n / oe), a = [];
380
362
  for (let [e, o] of t.indexes.entries()) {
381
363
  let s = a.at(-1);
382
364
  s && o.timestamp - s.timestamp < r || a.push({
383
365
  timestamp: o.timestamp,
384
366
  endTime: n,
385
367
  startByte: o.pos,
386
- endByte: Math.min((t.indexes[e + 1]?.pos ?? i) + k, i),
368
+ endByte: Math.min((t.indexes[e + 1]?.pos ?? i) + A, i),
387
369
  done: !1,
388
370
  attempts: 0
389
371
  });
@@ -414,7 +396,7 @@ var a = (e) => Array(e.buffered.length).fill(void 0).map((t, n) => ({
414
396
  }, p = (e) => {
415
397
  e.done = !0, d = d.then(async () => {
416
398
  if (u) return;
417
- let t = await Promise.race([c.readKeyframe(e.timestamp), new Promise((e, t) => setTimeout(() => t(/* @__PURE__ */ Error("timed out")), ae))]), n = await createImageBitmap(new Blob([t], { type: "image/png" })), r = new OffscreenCanvas(s, Math.max(1, Math.round(n.height * (s / n.width))));
399
+ let t = await Promise.race([c.readKeyframe(e.timestamp), new Promise((e, t) => setTimeout(() => t(/* @__PURE__ */ Error("timed out")), M))]), n = await createImageBitmap(new Blob([t], { type: "image/png" })), r = new OffscreenCanvas(s, Math.max(1, Math.round(n.height * (s / n.width))));
418
400
  r.getContext("2d").drawImage(n, 0, 0, r.width, r.height), n.close();
419
401
  let i = await r.convertToBlob({
420
402
  type: "image/webp",
@@ -426,7 +408,7 @@ var a = (e) => Array(e.buffered.length).fill(void 0).map((t, n) => ({
426
408
  endTime: e.endTime
427
409
  }].sort((e, t) => e.startTime - t.startTime), f());
428
410
  }).catch(() => {
429
- e.attempts += 1, e.done = e.attempts >= ie;
411
+ e.attempts += 1, e.done = e.attempts >= j;
430
412
  });
431
413
  };
432
414
  return f(), {
@@ -436,14 +418,14 @@ var a = (e) => Array(e.buffered.length).fill(void 0).map((t, n) => ({
436
418
  destroy: () => {
437
419
  u = !0;
438
420
  for (let e of l) URL.revokeObjectURL(e.url);
439
- l = [], E(c);
421
+ l = [], k(c);
440
422
  }
441
423
  };
442
424
  } catch (e) {
443
- throw E(c), e;
425
+ throw k(c), e;
444
426
  }
445
- }, j = 1280, M = 1920, N = 250, P = 100, F = () => typeof HTMLCanvasElement < "u" && "captureStream" in HTMLCanvasElement.prototype, oe = () => typeof document < "u" && typeof HTMLVideoElement < "u" && typeof HTMLVideoElement.prototype.requestPictureInPicture == "function" && !!document.pictureInPictureEnabled, se = () => typeof HTMLVideoElement < "u" && "mozCaptureStream" in HTMLVideoElement.prototype, I = () => F() ? oe() ? "window" : se() ? "burn-in" : null : null, L = (e) => {
446
- let { video: t, canvas: n } = e, r = e.mode ?? I() ?? "window", i = e.maxWidth ?? (r === "burn-in" ? M : j), 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) => {
427
+ }, P = 1280, ce = 1920, le = 250, ue = 100, F = () => typeof HTMLCanvasElement < "u" && "captureStream" in HTMLCanvasElement.prototype, I = () => typeof document < "u" && typeof HTMLVideoElement < "u" && typeof HTMLVideoElement.prototype.requestPictureInPicture == "function" && !!document.pictureInPictureEnabled, L = () => typeof HTMLVideoElement < "u" && "mozCaptureStream" in HTMLVideoElement.prototype, R = () => F() ? I() ? "window" : L() ? "burn-in" : null : null, de = (e) => {
428
+ let { video: t, canvas: n } = e, r = e.mode ?? R() ?? "window", i = e.maxWidth ?? (r === "burn-in" ? ce : 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) => {
447
429
  r.drawImage(t, 0, 0, e.width, e.height), n.width > 0 && n.height > 0 && r.drawImage(n, 0, 0, e.width, e.height);
448
430
  }, h = () => {
449
431
  a && m(a.composite, a.context);
@@ -457,52 +439,52 @@ var a = (e) => Array(e.buffered.length).fill(void 0).map((t, n) => ({
457
439
  "mediaSession" in navigator && (navigator.mediaSession.playbackState = t.paused ? "paused" : "playing");
458
440
  }, x = () => {
459
441
  c || l || !t.paused || t.play().catch(() => {});
460
- }, ee = () => {
442
+ }, S = () => {
461
443
  c || l || (t.paused || t.pause(), r !== "burn-in" && (c = !0, a?.mirror.play().catch(() => {}).finally(() => {
462
444
  c = !1;
463
445
  })));
464
- }, te = () => {
446
+ }, C = () => {
465
447
  b(), a?.mirror.play().catch(() => {});
466
- }, S = () => {
448
+ }, w = () => {
467
449
  b(), r === "burn-in" && a?.mirror.pause();
468
- }, C = () => {
450
+ }, T = () => {
469
451
  if (r !== "burn-in" || !a || !t.paused || l) return;
470
452
  l = !0;
471
453
  let { mirror: e } = a;
472
454
  h(), e.play().then(() => new Promise((e) => {
473
- setTimeout(e, P);
455
+ setTimeout(e, ue);
474
456
  })).catch(() => {}).finally(() => {
475
457
  e.pause(), setTimeout(() => {
476
458
  l = !1;
477
- }, P);
459
+ }, ue);
478
460
  });
479
- }, w = [["play", () => {
461
+ }, ee = [["play", () => {
480
462
  t.play().catch(() => {});
481
- }], ["pause", () => t.pause()]], T = (e) => {
482
- if ("mediaSession" in navigator) for (let [t, n] of w) try {
463
+ }], ["pause", () => t.pause()]], E = (e) => {
464
+ if ("mediaSession" in navigator) for (let [t, n] of ee) try {
483
465
  navigator.mediaSession.setActionHandler(t, e ? n : null);
484
466
  } catch {}
485
- }, E = () => {
486
- if (y(), T(!1), t.removeEventListener("play", te), t.removeEventListener("pause", S), t.removeEventListener("seeked", C), !a) {
467
+ }, D = () => {
468
+ if (y(), E(!1), t.removeEventListener("play", C), t.removeEventListener("pause", w), t.removeEventListener("seeked", T), !a) {
487
469
  f?.();
488
470
  return;
489
471
  }
490
472
  let { stream: e, mirror: n } = a;
491
- n.removeEventListener("play", x), n.removeEventListener("pause", ee), n.removeEventListener("leavepictureinpicture", D);
473
+ n.removeEventListener("play", x), n.removeEventListener("pause", S), n.removeEventListener("leavepictureinpicture", te);
492
474
  for (let t of e.getTracks()) t.stop();
493
475
  n.remove(), a = void 0, f?.();
494
- }, D = () => E(), O = (e) => {
476
+ }, te = () => D(), ne = (e) => {
495
477
  let r = t.style.opacity, i = n.style.display;
496
478
  e.style.cssText = "position:absolute;inset:0;width:100%;height:100%;object-fit:contain;background:#000;z-index:1", t.style.opacity = "0", n.style.display = "none", f = () => {
497
479
  f = void 0, t.style.opacity = r, n.style.display = i;
498
480
  };
499
- }, ne = async () => {
481
+ }, re = async () => {
500
482
  let n = Math.min(t.videoWidth || i, i), o = Math.round(n * ((t.videoHeight || 9) / (t.videoWidth || 16))), c = document.createElement("canvas");
501
483
  c.width = n, c.height = o;
502
484
  let l = c.getContext("2d");
503
485
  if (!l) throw Error("the picture in picture composite has no 2d context");
504
486
  let u = document.createElement("video");
505
- u.muted = !0, u.playsInline = !0, r === "burn-in" ? O(u) : u.style.cssText = "position:fixed;width:1px;height:1px;opacity:0;pointer-events:none;left:-1px;top:-1px", m(c, l);
487
+ u.muted = !0, u.playsInline = !0, r === "burn-in" ? ne(u) : u.style.cssText = "position:fixed;width:1px;height:1px;opacity:0;pointer-events:none;left:-1px;top:-1px", m(c, l);
506
488
  let f = {
507
489
  composite: c,
508
490
  context: l,
@@ -511,7 +493,7 @@ var a = (e) => Array(e.buffered.length).fill(void 0).map((t, n) => ({
511
493
  };
512
494
  if (a = f, u.srcObject = f.stream, (e.container ?? t.parentElement ?? document.body).appendChild(u), v(), s = setInterval(() => {
513
495
  t.paused && h();
514
- }, N), u.play().catch(() => {}), u.readyState === 0 && await new Promise((e) => {
496
+ }, le), u.play().catch(() => {}), u.readyState === 0 && await new Promise((e) => {
515
497
  let t = () => {
516
498
  clearTimeout(n), e();
517
499
  }, n = setTimeout(t, 1e3);
@@ -520,7 +502,7 @@ var a = (e) => Array(e.buffered.length).fill(void 0).map((t, n) => ({
520
502
  u.remove();
521
503
  return;
522
504
  }
523
- if (u.addEventListener("play", x), u.addEventListener("pause", ee), u.addEventListener("leavepictureinpicture", D), t.addEventListener("play", te), t.addEventListener("pause", S), t.addEventListener("seeked", C), T(!0), b(), r === "burn-in") {
505
+ if (u.addEventListener("play", x), u.addEventListener("pause", S), u.addEventListener("leavepictureinpicture", te), t.addEventListener("play", C), t.addEventListener("pause", w), t.addEventListener("seeked", T), E(!0), b(), r === "burn-in") {
524
506
  t.paused && u.pause(), e.onBurnedInChange?.(!0);
525
507
  return;
526
508
  }
@@ -533,7 +515,7 @@ var a = (e) => Array(e.buffered.length).fill(void 0).map((t, n) => ({
533
515
  try {
534
516
  if (p()) {
535
517
  if (r === "burn-in") {
536
- E(), e.onBurnedInChange?.(!1);
518
+ D(), e.onBurnedInChange?.(!1);
537
519
  return;
538
520
  }
539
521
  await document.exitPictureInPicture().catch(() => {});
@@ -541,9 +523,9 @@ var a = (e) => Array(e.buffered.length).fill(void 0).map((t, n) => ({
541
523
  }
542
524
  r !== "burn-in" && document.pictureInPictureElement && await document.exitPictureInPicture().catch(() => {});
543
525
  try {
544
- await ne();
526
+ await re();
545
527
  } catch (t) {
546
- console.warn("subtitle compositing for picture in picture failed", t), E(), r === "burn-in" && e.onBurnedInChange?.(!1);
528
+ console.warn("subtitle compositing for picture in picture failed", t), D(), r === "burn-in" && e.onBurnedInChange?.(!1);
547
529
  }
548
530
  } finally {
549
531
  u = !1;
@@ -552,9 +534,9 @@ var a = (e) => Array(e.buffered.length).fill(void 0).map((t, n) => ({
552
534
  },
553
535
  mode: r,
554
536
  destroy: () => {
555
- d = !0, r !== "burn-in" && p() && document.exitPictureInPicture().catch(() => {}), E(), r === "burn-in" && e.onBurnedInChange?.(!1);
537
+ d = !0, r !== "burn-in" && p() && document.exitPictureInPicture().catch(() => {}), D(), r === "burn-in" && e.onBurnedInChange?.(!1);
556
538
  }
557
539
  };
558
540
  };
559
541
  //#endregion
560
- export { h as a, E as c, a as d, s as f, T as i, c as l, I as n, g as o, A as r, D as s, L as t, m as u };
542
+ export { v as a, k as c, a as d, s as f, O as i, c as l, R as n, y as o, N as r, ie as s, de as t, _ as u };