@hyperframes/engine 0.8.2 → 0.8.4

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.
@@ -5,7 +5,7 @@
5
5
  * BeginFrame-based deterministic screenshot capture and video frame injection.
6
6
  */
7
7
  import { COLOR_GRADING_SOURCE_HIDDEN_ATTR } from "@hyperframes/core/color-grading";
8
- import { HF_COLOR_GRADING_CANVAS_ID_PREFIX, MEDIA_VISUAL_STYLE_PROPERTIES, } from "@hyperframes/core";
8
+ import { HF_COLOR_GRADING_CANVAS_ID_PREFIX, MEDIA_RENDER_ID_ATTR, MEDIA_VISUAL_STYLE_PROPERTIES, RENDER_FRAME_ID_PREFIX, RENDER_FRAME_ID_SUFFIX, renderFrameIdForRenderId, } from "@hyperframes/core";
9
9
  export const cdpSessionCache = new WeakMap();
10
10
  export async function getCdpSession(page) {
11
11
  let client = cdpSessionCache.get(page);
@@ -352,6 +352,9 @@ export async function applyDomLayerMask(page, showIds, extraHideIds) {
352
352
  const existing = document.getElementById(args.styleId);
353
353
  if (existing)
354
354
  existing.remove();
355
+ // Affixes come from core's renderFrameSibling, so the runtime readers and
356
+ // this lookup cannot drift apart on the id format.
357
+ const renderFrameId = (id) => `${args.renderFramePrefix}${id}${args.renderFrameSuffix}`;
355
358
  const restoreMaskedElements = () => {
356
359
  const masked = document.querySelectorAll(`[${args.hiddenAttr}="1"]`);
357
360
  for (const node of masked) {
@@ -406,12 +409,23 @@ export async function applyDomLayerMask(page, showIds, extraHideIds) {
406
409
  };
407
410
  const showSelectors = [];
408
411
  for (const id of args.show) {
409
- const el = document.getElementById(id);
412
+ const el = window.__hfMediaEl?.(id) ?? document.getElementById(id);
410
413
  if (el)
411
414
  rememberHiddenTimedDescendants(el);
412
- const escaped = CSS.escape(id);
413
- showSelectors.push(`#${escaped}`, `#${escaped} *`);
414
- const renderEscaped = CSS.escape(`__render_frame_${id}__`);
415
+ // Address the element by its render id when it has one. `#id` must not
416
+ // be used as an extra fallback here: an id is duplicated exactly when
417
+ // two compositions share it, so `#id` would also unhide the other
418
+ // scene's element — the collision this render id exists to resolve.
419
+ if (el?.hasAttribute(args.renderIdAttr)) {
420
+ const attrEscaped = id.replace(/\\/g, "\\\\").replace(/"/g, '\\"');
421
+ const byRenderId = `[${args.renderIdAttr}="${attrEscaped}"]`;
422
+ showSelectors.push(byRenderId, `${byRenderId} *`);
423
+ }
424
+ else {
425
+ const escaped = CSS.escape(id);
426
+ showSelectors.push(`#${escaped}`, `#${escaped} *`);
427
+ }
428
+ const renderEscaped = CSS.escape(renderFrameId(id));
415
429
  showSelectors.push(`#${renderEscaped}`, `#${renderEscaped} *`);
416
430
  const colorGradingEscaped = CSS.escape(`${args.canvasIdPrefix}${id}`);
417
431
  showSelectors.push(`#${colorGradingEscaped}`, `#${colorGradingEscaped} *`);
@@ -428,11 +442,11 @@ export async function applyDomLayerMask(page, showIds, extraHideIds) {
428
442
  rememberAndHideElement(el);
429
443
  }
430
444
  for (const id of args.hide) {
431
- const el = document.getElementById(id);
432
- if (el) {
445
+ const el = window.__hfMediaEl?.(id) ?? document.getElementById(id);
446
+ if (el instanceof HTMLElement) {
433
447
  rememberAndHideElement(el);
434
448
  }
435
- const img = document.getElementById(`__render_frame_${id}__`);
449
+ const img = document.getElementById(renderFrameId(id));
436
450
  if (img) {
437
451
  rememberAndHideElement(img);
438
452
  }
@@ -444,6 +458,9 @@ export async function applyDomLayerMask(page, showIds, extraHideIds) {
444
458
  }, {
445
459
  show: showIds,
446
460
  hide: extraHideIds,
461
+ renderIdAttr: MEDIA_RENDER_ID_ATTR,
462
+ renderFramePrefix: RENDER_FRAME_ID_PREFIX,
463
+ renderFrameSuffix: RENDER_FRAME_ID_SUFFIX,
447
464
  styleId: DOM_LAYER_MASK_STYLE_ID,
448
465
  hiddenAttr: DOM_LAYER_MASK_HIDDEN_ATTR,
449
466
  prevVisibilityAttr: DOM_LAYER_MASK_PREV_VISIBILITY_ATTR,
@@ -517,20 +534,24 @@ export async function removeDomLayerMask(page, _extraHideIds) {
517
534
  * callers that don't run through `initializeSession`.
518
535
  */
519
536
  export async function ensureRenderFrameSiblings(page) {
520
- await page.evaluate(() => {
537
+ await page.evaluate((prefix, suffix) => {
521
538
  for (const video of Array.from(document.querySelectorAll("video[data-start]"))) {
522
539
  const next = video.nextElementSibling;
523
540
  if (next !== null && next.classList.contains("__render_frame__"))
524
541
  continue;
525
542
  const img = document.createElement("img");
526
543
  img.classList.add("__render_frame__");
527
- img.id = `__render_frame_${video.id}__`;
544
+ // Derive from the render id, not `video.id` — two scenes can share an
545
+ // element id, and two siblings sharing an id would collide in turn.
546
+ // `||`, not `??`: `__hfMediaId` returns "" for an element with neither
547
+ // id, and core's reader treats that as "no id" rather than a key.
548
+ img.id = `${prefix}${window.__hfMediaId?.(video) || video.id}${suffix}`;
528
549
  img.style.pointerEvents = "none";
529
550
  img.style.position = "absolute";
530
551
  img.style.visibility = "hidden";
531
552
  video.parentNode?.insertBefore(img, video.nextSibling);
532
553
  }
533
- });
554
+ }, RENDER_FRAME_ID_PREFIX, RENDER_FRAME_ID_SUFFIX);
534
555
  }
535
556
  /**
536
557
  * Returns the subset of `updates.videoId`s that were actually painted in
@@ -596,7 +617,8 @@ export async function injectVideoFramesBatch(page, updates) {
596
617
  return false;
597
618
  };
598
619
  for (const item of items) {
599
- const video = document.getElementById(item.videoId);
620
+ const video = (window.__hfMediaEl?.(item.videoId) ??
621
+ document.getElementById(item.videoId));
600
622
  if (!video)
601
623
  continue;
602
624
  let img = video.nextElementSibling;
@@ -630,7 +652,7 @@ export async function injectVideoFramesBatch(page, updates) {
630
652
  if (isNewImage) {
631
653
  img = document.createElement("img");
632
654
  img.classList.add("__render_frame__");
633
- img.id = `__render_frame_${item.videoId}__`;
655
+ img.id = item.frameId;
634
656
  img.style.pointerEvents = "none";
635
657
  video.parentNode?.insertBefore(img, video.nextSibling);
636
658
  }
@@ -709,7 +731,10 @@ export async function injectVideoFramesBatch(page, updates) {
709
731
  redraw?.();
710
732
  }
711
733
  return injectedIds;
712
- }, updates, [...MEDIA_VISUAL_STYLE_PROPERTIES], COLOR_GRADING_SOURCE_HIDDEN_ATTR);
734
+ },
735
+ // Build the sibling id with core's function rather than a template here,
736
+ // so the id the readers look up has exactly one definition.
737
+ updates.map((update) => ({ ...update, frameId: renderFrameIdForRenderId(update.videoId) })), [...MEDIA_VISUAL_STYLE_PROPERTIES], COLOR_GRADING_SOURCE_HIDDEN_ATTR);
713
738
  }
714
739
  export async function syncVideoFrameVisibility(page, activeVideoIds) {
715
740
  await page.evaluate(
@@ -1 +1 @@
1
- {"version":3,"file":"screenshotService.js","sourceRoot":"","sources":["../../src/services/screenshotService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"screenshotService.js","sourceRoot":"","sources":["../../src/services/screenshotService.ts"],"names":[],"mappings":"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"}
@@ -15,6 +15,7 @@ export interface VideoElement {
15
15
  start: number;
16
16
  end: number;
17
17
  mediaStart: number;
18
+ playbackRate?: number;
18
19
  loop: boolean;
19
20
  hasAudio: boolean;
20
21
  }
@@ -205,6 +206,8 @@ export interface TimelineExtractionWindow {
205
206
  compositionStart: number;
206
207
  mediaStart: number;
207
208
  durationSeconds: number;
209
+ /** Visible duration on the authored composition timeline after retiming. */
210
+ timelineDurationSeconds?: number;
208
211
  /**
209
212
  * Preserve the authored timeline origin and mediaStart for lookup. This is
210
213
  * required when a looped visible interval crosses a source boundary and
@@ -226,7 +229,7 @@ export interface TimelineExtractionWindow {
226
229
  /** FFmpeg emits one decoded frame; lookup then holds that frame. */
227
230
  finalFrameOnly?: boolean;
228
231
  }
229
- type TimelineWindowVideo = Pick<VideoElement, "start" | "end" | "mediaStart"> & Partial<Pick<VideoElement, "loop">>;
232
+ type TimelineWindowVideo = Pick<VideoElement, "start" | "end" | "mediaStart"> & Partial<Pick<VideoElement, "playbackRate">> & Partial<Pick<VideoElement, "loop">>;
230
233
  /**
231
234
  * Intersect an authored slot with the render timeline, then select the
232
235
  * smallest playable source range that preserves timeline lookup semantics.
@@ -293,7 +296,7 @@ export declare class FrameLookupTable {
293
296
  private activeVideoIds;
294
297
  private startCursor;
295
298
  private lastTime;
296
- addVideo(extracted: ExtractedFrames, start: number, end: number, mediaStart: number, loop?: boolean): void;
299
+ addVideo(extracted: ExtractedFrames, start: number, end: number, mediaStart: number, loop?: boolean, playbackRate?: number): void;
297
300
  getFrame(videoId: string, globalTime: number): string | null;
298
301
  private resetActiveState;
299
302
  private refreshActiveSet;
@@ -1 +1 @@
1
- {"version":3,"file":"videoFrameExtractor.d.ts","sourceRoot":"","sources":["../../src/services/videoFrameExtractor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"videoFrameExtractor.d.ts","sourceRoot":"","sources":["../../src/services/videoFrameExtractor.ts"],"names":[],"mappings":"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"}
@@ -8,8 +8,9 @@
8
8
  import { copyFileSync, existsSync, linkSync, mkdirSync, readdirSync, rmSync } from "fs";
9
9
  import { isAbsolute, join, posix, resolve, sep } from "path";
10
10
  import { parseHTML } from "linkedom";
11
- import { decodeUrlPathVariants, fpsToFfmpegArg, fpsToNumber, MEDIA_DURATION_CLAMP_EPSILON_SECONDS, toFps, } from "@hyperframes/core";
11
+ import { MEDIA_RENDER_ID_ATTR, decodeUrlPathVariants, fpsToFfmpegArg, fpsToNumber, MEDIA_DURATION_CLAMP_EPSILON_SECONDS, normalizePlaybackRate, parseStrictFiniteTimingNumber, readMediaStart, toFps, } from "@hyperframes/core";
12
12
  import { resolveReferencedStart } from "./referenceResolver.js";
13
+ import { isKnownInactiveTimelineWindow } from "./mediaTimelineWindow.js";
13
14
  import { extractFinalVideoFrameTimestamp, extractMediaMetadata, } from "../utils/ffprobe.js";
14
15
  import { analyzeCompositionHdr, isHdrColorSpace as isHdrColorSpaceUtil, } from "../utils/hdr.js";
15
16
  import { downloadToTemp, isHttpUrl, UrlDownloadError, writeUrlDownloadTelemetry, } from "../utils/urlDownloader.js";
@@ -236,14 +237,19 @@ export function parseVideoElements(html) {
236
237
  continue;
237
238
  // Generate a stable ID for videos without one — the producer needs IDs
238
239
  // to track extracted frames and composite them during encoding.
239
- const id = el.getAttribute("id") || `hf-video-${autoIdCounter++}`;
240
+ // A compiled render document stamps a document-unique render id; prefer it,
241
+ // because element ids are only unique within one composition file and the
242
+ // render document inlines many.
243
+ const id = el.getAttribute(MEDIA_RENDER_ID_ATTR) ||
244
+ el.getAttribute("id") ||
245
+ `hf-video-${autoIdCounter++}`;
240
246
  if (!el.getAttribute("id")) {
241
247
  el.setAttribute("id", id);
242
248
  }
243
249
  const startAttr = el.getAttribute("data-start");
244
250
  const endAttr = el.getAttribute("data-end");
245
251
  const durationAttr = el.getAttribute("data-duration");
246
- const mediaStartAttr = el.getAttribute("data-media-start");
252
+ const playbackRateAttr = el.getAttribute("data-playback-rate");
247
253
  const hasAudioAttr = el.getAttribute("data-has-audio");
248
254
  // Resolve data-start, including relative references ("intro", "intro + 2")
249
255
  // to another clip's end — the browser runtime resolves these but a raw
@@ -251,17 +257,21 @@ export function parseVideoElements(html) {
251
257
  // blank in the final render. `startAttr` may be a plain number or a
252
258
  // reference; the resolver handles both.
253
259
  const start = startAttr ? resolveReferencedStart(document, el, startCache, visiting) : 0;
260
+ if (isKnownInactiveTimelineWindow(el, start))
261
+ continue;
254
262
  // Derive end from data-end → data-start+data-duration → Infinity (natural duration).
255
263
  // Static compilation cannot always clamp root media because GSAP may supply
256
264
  // the root duration at runtime. The producer passes the resolved timeline
257
265
  // end into frame extraction, which caps the source duration only after the
258
266
  // natural duration is known without rewriting authored timing metadata.
259
267
  let end = 0;
260
- if (endAttr) {
261
- end = parseFloat(endAttr);
268
+ const authoredEnd = parseStrictFiniteTimingNumber(endAttr);
269
+ const authoredDuration = parseStrictFiniteTimingNumber(durationAttr);
270
+ if (authoredEnd != null) {
271
+ end = authoredEnd;
262
272
  }
263
- else if (durationAttr) {
264
- end = start + parseFloat(durationAttr);
273
+ else if (authoredDuration != null) {
274
+ end = start + authoredDuration;
265
275
  }
266
276
  else {
267
277
  end = Infinity; // no explicit bounds — play for the full natural video duration
@@ -271,7 +281,8 @@ export function parseVideoElements(html) {
271
281
  src,
272
282
  start,
273
283
  end,
274
- mediaStart: mediaStartAttr ? parseFloat(mediaStartAttr) : 0,
284
+ mediaStart: readMediaStart(el),
285
+ playbackRate: normalizePlaybackRate(playbackRateAttr ? parseFloat(playbackRateAttr) : Number.NaN),
275
286
  loop: el.hasAttribute("loop"),
276
287
  hasAudio: hasAudioAttr === "true",
277
288
  });
@@ -289,7 +300,8 @@ export function parseImageElements(html) {
289
300
  const src = el.getAttribute("src");
290
301
  if (!src)
291
302
  continue;
292
- const id = el.getAttribute("id") || `hf-img-${autoIdCounter++}`;
303
+ // See parseVideoElements: the stamped render id wins over the authored id.
304
+ const id = el.getAttribute(MEDIA_RENDER_ID_ATTR) || el.getAttribute("id") || `hf-img-${autoIdCounter++}`;
293
305
  if (!el.getAttribute("id")) {
294
306
  el.setAttribute("id", id);
295
307
  }
@@ -300,11 +312,13 @@ export function parseImageElements(html) {
300
312
  // referenced image start doesn't become NaN and drop the image from the render.
301
313
  const start = startAttr ? resolveReferencedStart(document, el, startCache, visiting) : 0;
302
314
  let end = 0;
303
- if (endAttr) {
304
- end = parseFloat(endAttr);
315
+ const authoredEnd = parseStrictFiniteTimingNumber(endAttr);
316
+ const authoredDuration = parseStrictFiniteTimingNumber(durationAttr);
317
+ if (authoredEnd != null) {
318
+ end = authoredEnd;
305
319
  }
306
- else if (durationAttr) {
307
- end = start + parseFloat(durationAttr);
320
+ else if (authoredDuration != null) {
321
+ end = start + authoredDuration;
308
322
  }
309
323
  else {
310
324
  end = Infinity;
@@ -509,51 +523,55 @@ const FINAL_FRAME_LOGICAL_DURATION_SECONDS = 1e-6;
509
523
  * behaviours survive the source-duration cap.
510
524
  */
511
525
  export function resolveTimelineExtractionWindow(video, resolvedDuration, timelineEnd, sourceDuration) {
526
+ const playbackRate = normalizePlaybackRate(video.playbackRate ?? 1);
527
+ const withTimelineDuration = (window, timelineDurationSeconds) => playbackRate === 1 ? window : { ...window, timelineDurationSeconds };
512
528
  if (timelineEnd === undefined) {
513
- return {
529
+ return withTimelineDuration({
514
530
  compositionStart: video.start,
515
531
  mediaStart: video.mediaStart,
516
- durationSeconds: resolvedDuration,
517
- };
532
+ durationSeconds: resolvedDuration * playbackRate,
533
+ }, resolvedDuration);
518
534
  }
519
535
  if (!Number.isFinite(timelineEnd)) {
520
536
  throw new Error(`Video extraction timelineEnd must be finite; got ${String(timelineEnd)}`);
521
537
  }
522
538
  const compositionStart = Math.max(0, video.start);
523
539
  const trimmedPreroll = compositionStart - video.start;
540
+ const trimmedSourcePreroll = trimmedPreroll * playbackRate;
524
541
  const timelineDuration = Math.max(0, timelineEnd - compositionStart);
525
542
  // Infinity means "natural source duration", not an authored infinite slot.
526
543
  // Explicit finite slots may outlive the source (loop or held tail), while an
527
544
  // omitted duration remains source-bounded exactly like the browser runtime.
528
545
  const resolvedVisibleDuration = resolvedDuration - trimmedPreroll;
529
546
  const visibleDuration = Math.max(0, Math.min(resolvedVisibleDuration, timelineDuration));
530
- let mediaStart = video.mediaStart + trimmedPreroll;
547
+ const visibleSourceDuration = visibleDuration * playbackRate;
548
+ let mediaStart = video.mediaStart + trimmedSourcePreroll;
531
549
  if (visibleDuration > 0 && sourceDuration !== undefined) {
532
550
  const sourceRemaining = Math.max(0, sourceDuration - video.mediaStart);
533
551
  if (sourceRemaining > 0 && video.loop && Number.isFinite(video.end)) {
534
- const phaseOffset = trimmedPreroll % sourceRemaining;
552
+ const phaseOffset = trimmedSourcePreroll % sourceRemaining;
535
553
  const phaseRemaining = sourceRemaining - phaseOffset;
536
554
  // The element visibility contract includes its end boundary. Preserve a
537
555
  // complete cycle on equality as well, otherwise a rebased suffix would
538
556
  // wrap to its own first frame instead of the source cycle's first frame.
539
- if (visibleDuration >= phaseRemaining) {
540
- return {
557
+ if (visibleSourceDuration >= phaseRemaining) {
558
+ return withTimelineDuration({
541
559
  compositionStart: video.start,
542
560
  mediaStart: video.mediaStart,
543
561
  durationSeconds: sourceRemaining,
544
562
  preserveTimelinePhase: true,
545
- };
563
+ }, visibleDuration);
546
564
  }
547
565
  mediaStart = video.mediaStart + phaseOffset;
548
566
  }
549
567
  else if (sourceRemaining > 0) {
550
- const sourceVisibleAfterPreroll = Math.max(0, sourceRemaining - trimmedPreroll);
551
- if (visibleDuration <= sourceVisibleAfterPreroll) {
552
- return {
568
+ const sourceVisibleAfterPreroll = Math.max(0, sourceRemaining - trimmedSourcePreroll);
569
+ if (visibleSourceDuration <= sourceVisibleAfterPreroll) {
570
+ return withTimelineDuration({
553
571
  compositionStart,
554
572
  mediaStart,
555
- durationSeconds: visibleDuration,
556
- };
573
+ durationSeconds: visibleSourceDuration,
574
+ }, visibleDuration);
557
575
  }
558
576
  // The visible interval enters (or is entirely inside) the held tail.
559
577
  // Extract the visible source suffix. If preroll is already at/past the
@@ -561,20 +579,20 @@ export function resolveTimelineExtractionWindow(video, resolvedDuration, timelin
561
579
  // provisional suffix with one exact final frame.
562
580
  const extractionDuration = Math.min(sourceRemaining, Math.max(sourceVisibleAfterPreroll, FINAL_FRAME_LOGICAL_DURATION_SECONDS));
563
581
  const extractionOffset = sourceRemaining - extractionDuration;
564
- return {
565
- compositionStart: video.start + extractionOffset,
582
+ return withTimelineDuration({
583
+ compositionStart: video.start + extractionOffset / playbackRate,
566
584
  mediaStart: video.mediaStart + extractionOffset,
567
585
  durationSeconds: extractionDuration,
568
586
  preserveTimelineEnd: true,
569
587
  ensureFinalFrame: true,
570
- };
588
+ }, visibleDuration);
571
589
  }
572
590
  }
573
- return {
591
+ return withTimelineDuration({
574
592
  compositionStart,
575
593
  mediaStart,
576
- durationSeconds: visibleDuration,
577
- };
594
+ durationSeconds: visibleSourceDuration,
595
+ }, visibleDuration);
578
596
  }
579
597
  /**
580
598
  * Replace a held-tail suffix that starts at/after the final decoded timestamp
@@ -598,6 +616,9 @@ export async function resolveFinalFrameExtractionWindow(videoPath, video, metada
598
616
  mediaStart: playableDuration - logicalDuration,
599
617
  extractionMediaStart: finalFrameTimestamp,
600
618
  durationSeconds: logicalDuration,
619
+ ...(window.timelineDurationSeconds !== undefined
620
+ ? { timelineDurationSeconds: window.timelineDurationSeconds }
621
+ : {}),
601
622
  preserveTimelineEnd: true,
602
623
  finalFrameOnly: true,
603
624
  };
@@ -611,7 +632,12 @@ export function resolveVideoExtractionWindow(video, metadata, timelineEnd) {
611
632
  if (video.mediaStart >= playableDuration) {
612
633
  throw new VideoSourceExtractionError("media_start_out_of_range", false, "Video media start is outside the source duration", `Video media start ${video.mediaStart}s is outside playable video duration ${playableDuration}s`);
613
634
  }
614
- const resolvedDuration = resolveSegmentDuration(video.end - video.start, video.mediaStart, playableDuration);
635
+ const playbackRate = normalizePlaybackRate(video.playbackRate ?? 1);
636
+ const requestedTimelineDuration = video.end - video.start;
637
+ const resolvedDuration = Number.isFinite(requestedTimelineDuration) && requestedTimelineDuration > 0
638
+ ? requestedTimelineDuration
639
+ : resolveSegmentDuration(requestedTimelineDuration, video.mediaStart, playableDuration) /
640
+ playbackRate;
615
641
  return resolveTimelineExtractionWindow(video, resolvedDuration, timelineEnd, playableDuration);
616
642
  }
617
643
  export function resolveVideoExtractionDuration(video, metadata, timelineEnd) {
@@ -1268,7 +1294,7 @@ export async function extractAllVideoFrames(videos, baseDir, options, signal, co
1268
1294
  if (!window.preserveTimelinePhase) {
1269
1295
  video.start = window.compositionStart;
1270
1296
  if (!window.preserveTimelineEnd) {
1271
- video.end = window.compositionStart + videoDuration;
1297
+ video.end = window.compositionStart + (window.timelineDurationSeconds ?? videoDuration);
1272
1298
  }
1273
1299
  video.mediaStart = window.mediaStart;
1274
1300
  }
@@ -1393,17 +1419,19 @@ export async function extractAllVideoFrames(videos, baseDir, options, signal, co
1393
1419
  phaseBreakdown: breakdown,
1394
1420
  };
1395
1421
  }
1396
- function getFrameIndexAtTime(extracted, globalTime, videoStart, loop = false, mediaStart = 0, holdLastFrame = false) {
1422
+ function getFrameIndexAtTime(extracted, globalTime, videoStart, loop = false, mediaStart = 0, holdLastFrame = false, playbackRate = 1) {
1397
1423
  let localTime = globalTime - videoStart;
1398
1424
  if (localTime < 0)
1399
1425
  return null;
1400
- const loopDuration = Math.max(0, resolvePlayableVideoDuration(extracted.metadata) - mediaStart);
1426
+ const normalizedPlaybackRate = normalizePlaybackRate(playbackRate);
1427
+ const loopDuration = Math.max(0, resolvePlayableVideoDuration(extracted.metadata) - mediaStart) /
1428
+ normalizedPlaybackRate;
1401
1429
  if (loop && loopDuration > 0 && localTime >= loopDuration) {
1402
1430
  localTime %= loopDuration;
1403
1431
  }
1404
1432
  // Add epsilon before flooring to avoid IEEE 754 boundary errors where
1405
1433
  // e.g. 0.28 * 25 === 6.999999999999999 instead of 7.
1406
- const frameIndex = Math.floor(localTime * extracted.fps + 1e-9);
1434
+ const frameIndex = Math.floor(localTime * normalizedPlaybackRate * extracted.fps + 1e-9);
1407
1435
  if (frameIndex < 0 || extracted.totalFrames <= 0)
1408
1436
  return null;
1409
1437
  if (frameIndex >= extracted.totalFrames) {
@@ -1439,8 +1467,15 @@ export class FrameLookupTable {
1439
1467
  activeVideoIds = new Set();
1440
1468
  startCursor = 0;
1441
1469
  lastTime = null;
1442
- addVideo(extracted, start, end, mediaStart, loop = false) {
1443
- this.videos.set(extracted.videoId, { extracted, start, end, mediaStart, loop });
1470
+ addVideo(extracted, start, end, mediaStart, loop = false, playbackRate = 1) {
1471
+ this.videos.set(extracted.videoId, {
1472
+ extracted,
1473
+ start,
1474
+ end,
1475
+ mediaStart,
1476
+ loop,
1477
+ playbackRate: normalizePlaybackRate(playbackRate),
1478
+ });
1444
1479
  this.orderedVideos = Array.from(this.videos.entries())
1445
1480
  .map(([videoId, video]) => ({ videoId, ...video }))
1446
1481
  .sort((a, b) => a.start - b.start);
@@ -1452,7 +1487,7 @@ export class FrameLookupTable {
1452
1487
  return null;
1453
1488
  if (globalTime < video.start || globalTime > video.end)
1454
1489
  return null;
1455
- const frameIndex = getFrameIndexAtTime(video.extracted, globalTime, video.start, video.loop, video.mediaStart, true);
1490
+ const frameIndex = getFrameIndexAtTime(video.extracted, globalTime, video.start, video.loop, video.mediaStart, true, video.playbackRate);
1456
1491
  return frameIndex == null ? null : video.extracted.framePaths.get(frameIndex) || null;
1457
1492
  }
1458
1493
  resetActiveState() {
@@ -1510,7 +1545,7 @@ export class FrameLookupTable {
1510
1545
  const video = this.videos.get(videoId);
1511
1546
  if (!video)
1512
1547
  continue;
1513
- const frameIndex = getFrameIndexAtTime(video.extracted, globalTime, video.start, video.loop, video.mediaStart, true);
1548
+ const frameIndex = getFrameIndexAtTime(video.extracted, globalTime, video.start, video.loop, video.mediaStart, true, video.playbackRate);
1514
1549
  if (frameIndex == null)
1515
1550
  continue;
1516
1551
  const framePath = video.extracted.framePaths.get(frameIndex);
@@ -1551,8 +1586,9 @@ export function createFrameLookupTable(videos, extracted) {
1551
1586
  extractedMap.set(ext.videoId, ext);
1552
1587
  for (const video of videos) {
1553
1588
  const ext = extractedMap.get(video.id);
1554
- if (ext)
1555
- table.addVideo(ext, video.start, video.end, video.mediaStart, video.loop);
1589
+ if (ext) {
1590
+ table.addVideo(ext, video.start, video.end, video.mediaStart, video.loop, video.playbackRate);
1591
+ }
1556
1592
  }
1557
1593
  return table;
1558
1594
  }