@jtdigital/renderbox-sdk 0.7.0 → 0.8.2

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,52 @@
1
1
  # Changelog — @jtdigital/renderbox-sdk
2
2
 
3
+ ## 0.8.2 — 2026-08-19
4
+
5
+ ### Fixed
6
+ - **A path used twice in one `makeSlideshow` render killed FFmpeg (exit 254).** Each slide
7
+ called `g.open`, so a repeated path put two decoders on the same input file. Every open in
8
+ the recipe now goes through a per-render cache: one `open` per distinct file, fanned out
9
+ into as many filter chains as the render needs. Composer pads a row with a single hero
10
+ image into two slides, so every such row failed. Verified against the live fleet.
11
+
12
+ ## 0.8.1 — 2026-08-19
13
+
14
+ ### Fixed
15
+ - **`makeSlideshow`'s `title` overlay killed FFmpeg (exit 234).** Its backing band was a
16
+ `drawbox` sized `y: 'h*0.70', h: 'h*0.14'`, but inside drawbox `h` is the BOX's own
17
+ height, not the frame's, so the expression was self-referential and the job died before
18
+ a frame was written. Sized in `ih` now.
19
+ - **Ken Burns rendered every slide ~100x too long.** `kenBurns` passed zoompan
20
+ `d = duration * fps` while its input (the recipe's image clip: loop -> fps -> trim) was
21
+ already that many frames, and zoompan emits `d` frames PER input frame, so a 4 s slide
22
+ came back 400 s. Now `d: 1`, one output frame per input frame, motion driven by
23
+ zoompan's global `on` counter. Matches the Rust SDK's split between `ops::fx::punch_in`
24
+ (`d=1`, moving stream) and `ops::timeline::apply_ken_burns` (`d=frames`, single still).
25
+ - **Overlay copy reached FFmpeg unescaped and unguarded.** `makeSlideshow` bypassed
26
+ `escapeDrawtext`, so a `:` in a row truncated the line and a `'` dropped it; with text
27
+ expansion left on, a literal `%` silently dropped the whole overlay, job still reporting
28
+ success. Overlay text is now escaped, and every text preset sets `expansion: 'none'`.
29
+ - **`escapeDrawtext` escaped apostrophes the shell way** (`'\''`), which broke out of the
30
+ filter option and leaked the remaining options into the burned-in text. It emits `\'`
31
+ now, which is what the engine's own quoting expects.
32
+ - **`makeSlideshow` output was not web-playable.** Filter negotiation settled the tail at
33
+ `yuv444p`, which Safari refuses to decode, and a sink `pix_fmt` does not survive the
34
+ compiler. The recipe pins `yuv420p` before the sink.
35
+
36
+ All five verified against the live fleet (submit -> render -> inspect the returned file),
37
+ not just against the emitted graph.
38
+
39
+ ## 0.8.0 — 2026-08-03
40
+
41
+ ### Added
42
+ - **`mti(opts?)` on `VideoStream`** — ego-motion-compensated moving target
43
+ indication for moving platforms (drone / vehicle ISR). Classical OpenCV, no
44
+ model: consecutive frames are registered via a ground-plane homography and
45
+ whatever still moves is emitted as a `mover` box (frame pixel space) on a
46
+ `DetectionStream`, so `track()` and the detection sinks consume it like any
47
+ detector output. Knobs: `diff_threshold`, `fps`, `max_features`, `min_area`,
48
+ `min_features`, `on_degenerate` (`'skip' | 'full_frame'`), `ransac_reproj_px`.
49
+
3
50
  ## 0.7.0 — 2026-07-21
4
51
 
5
52
  ### Added
@@ -98,7 +98,7 @@ export interface LoudnormArgs {
98
98
  export interface TranscribeArgs {
99
99
  /** @default "srt" */
100
100
  format?: string;
101
- /** @default "parakeet-tdt-0.6b" */
101
+ /** @default "parakeet-tdt-0.6b-v3-int8" */
102
102
  model?: string;
103
103
  }
104
104
  export interface SmartCropArgs {
@@ -384,15 +384,6 @@ export interface PeopleCountArgs {
384
384
  /** @default 0.6 */
385
385
  alpha?: number;
386
386
  }
387
- export interface SceneDetectArgs {
388
- /** @default 0.5 */
389
- intensity?: number;
390
- /** @default "places365-resnet50" */
391
- model?: string;
392
- /** @default "auto" */
393
- preset?: string;
394
- transition_frames?: number;
395
- }
396
387
  export interface TextRedactArgs {
397
388
  /** @default 20 */
398
389
  blur_radius?: number;
@@ -431,8 +422,6 @@ export interface ScooterHelmetArgs {
431
422
  detect_model?: string;
432
423
  /** @default 0.005 */
433
424
  min_area?: number;
434
- /** @default 10 */
435
- min_track_frames?: number;
436
425
  /** @default true */
437
426
  show_confidence?: boolean;
438
427
  /** @default 1.5 */
@@ -451,8 +440,6 @@ export interface HelmetDetectMqttArgs {
451
440
  detect_model?: string;
452
441
  /** @default 0.005 */
453
442
  min_area?: number;
454
- /** @default 10 */
455
- min_track_frames?: number;
456
443
  qos?: number;
457
444
  /** @default 1.5 */
458
445
  smoothing_window?: number;
@@ -494,7 +481,6 @@ export interface PipelineArgsMap {
494
481
  'pose-estimate': PoseEstimateArgs;
495
482
  'pose-detect': PoseDetectArgs;
496
483
  'people-count': PeopleCountArgs;
497
- 'scene-detect': SceneDetectArgs;
498
484
  'text-redact': TextRedactArgs;
499
485
  'segment': SegmentArgs;
500
486
  'evidence-package': EvidencePackageArgs;
@@ -1 +1 @@
1
- {"version":3,"file":"pipelines.d.ts","sourceRoot":"","sources":["../src/pipelines.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pipelines.d.ts","sourceRoot":"","sources":["../src/pipelines.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"pipelines.js","sourceRoot":"","sources":["../src/pipelines.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,2EAA2E;AAC3E,EAAE;AACF,8EAA8E;AAC9E,gFAAgF;AAChF,+EAA+E;AAC/E,kDAAkD;AAyiBlD;6DAC6D;AAC7D,MAAM,CAAC,MAAM,oBAAoB,GAA0B,CAAC,aAAa,EAAE,oBAAoB,EAAE,eAAe,CAAC,CAAC;AAElH;uDACuD;AACvD,MAAM,UAAU,YAAY,CAC1B,UAAa,EACb,IAAwB;IAExB,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;AAC3C,CAAC"}
1
+ {"version":3,"file":"pipelines.js","sourceRoot":"","sources":["../src/pipelines.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,2EAA2E;AAC3E,EAAE;AACF,8EAA8E;AAC9E,gFAAgF;AAChF,+EAA+E;AAC/E,kDAAkD;AA0hBlD;6DAC6D;AAC7D,MAAM,CAAC,MAAM,oBAAoB,GAA0B,CAAC,aAAa,EAAE,oBAAoB,EAAE,eAAe,CAAC,CAAC;AAElH;uDACuD;AACvD,MAAM,UAAU,YAAY,CAC1B,UAAa,EACb,IAAwB;IAExB,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;AAC3C,CAAC"}
@@ -5,7 +5,16 @@
5
5
  */
6
6
  import type { VideoStream } from '../streams.js';
7
7
  import { type Position } from './position.js';
8
- /** Escape drawtext-special characters (`\`, `:`, `'`). */
8
+ /**
9
+ * Escape the characters FFmpeg's filter-argument parser treats specially, so caller
10
+ * copy cannot truncate its own line or break out into the next option.
11
+ *
12
+ * `:` ends the option, `\` escapes the following character, and `'` opens a quoted
13
+ * run. NB the apostrophe takes a plain `\'`, NOT the Rust SDK's shell-style
14
+ * `'\''` dance: this SDK hands the value to the engine, which does its own
15
+ * quoting, so the shell form leaked the remaining filter options into the burned-in
16
+ * text (verified against the live fleet, 19 Aug 2026).
17
+ */
9
18
  export declare function escapeDrawtext(text: string): string;
10
19
  /** Drop-shadow for {@link TextOpts}. */
11
20
  export interface Shadow {
@@ -1 +1 @@
1
- {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../src/presets/text.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,WAAW,EAAgB,MAAM,eAAe,CAAC;AAC/D,OAAO,EAAgC,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE5E,0DAA0D;AAC1D,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKnD;AAED,wCAAwC;AACxC,MAAM,WAAW,MAAM;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;CACZ;AAED,4DAA4D;AAC5D,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;GAIG;AACH,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB;4CACwC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0DAA0D;IAC1D,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAgB,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,QAAQ,GAAG,WAAW,CAqBtF;AAED;;;GAGG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,QAAQ,GAAG,WAAW,CAQvF;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,QAAQ,GAAG,WAAW,CAQzF;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,QAAQ,GAAG,WAAW,CAQ/F;AAkBD,8EAA8E;AAC9E,MAAM,WAAW,cAAc;IAC7B,8CAA8C;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB,iDAAiD;IACjD,OAAO,EAAE,MAAM,CAAC;IAChB,oDAAoD;IACpD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iDAAiD;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yDAAyD;IACzD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oCAAoC;IACpC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qCAAqC;IACrC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mBAAmB;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0DAA0D;IAC1D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sDAAsD;IACtD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,WAAW,EAClB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,cAAc,GACnB,WAAW,CAyCb"}
1
+ {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../src/presets/text.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,WAAW,EAAgB,MAAM,eAAe,CAAC;AAC/D,OAAO,EAAgC,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE5E;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKnD;AAED,wCAAwC;AACxC,MAAM,WAAW,MAAM;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;CACZ;AAED,4DAA4D;AAC5D,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;GAIG;AACH,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB;4CACwC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0DAA0D;IAC1D,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAgB,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,QAAQ,GAAG,WAAW,CAyBtF;AAED;;;GAGG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,QAAQ,GAAG,WAAW,CAQvF;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,QAAQ,GAAG,WAAW,CAQzF;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,QAAQ,GAAG,WAAW,CAQ/F;AAkBD,8EAA8E;AAC9E,MAAM,WAAW,cAAc;IAC7B,8CAA8C;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB,iDAAiD;IACjD,OAAO,EAAE,MAAM,CAAC;IAChB,oDAAoD;IACpD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iDAAiD;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yDAAyD;IACzD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oCAAoC;IACpC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qCAAqC;IACrC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mBAAmB;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0DAA0D;IAC1D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sDAAsD;IACtD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,WAAW,EAClB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,cAAc,GACnB,WAAW,CA2Cb"}
@@ -1,10 +1,19 @@
1
1
  import { DRAWTEXT_NS, pos, resolvePos } from './position.js';
2
- /** Escape drawtext-special characters (`\`, `:`, `'`). */
2
+ /**
3
+ * Escape the characters FFmpeg's filter-argument parser treats specially, so caller
4
+ * copy cannot truncate its own line or break out into the next option.
5
+ *
6
+ * `:` ends the option, `\` escapes the following character, and `'` opens a quoted
7
+ * run. NB the apostrophe takes a plain `\'`, NOT the Rust SDK's shell-style
8
+ * `'\''` dance: this SDK hands the value to the engine, which does its own
9
+ * quoting, so the shell form leaked the remaining filter options into the burned-in
10
+ * text (verified against the live fleet, 19 Aug 2026).
11
+ */
3
12
  export function escapeDrawtext(text) {
4
13
  return text
5
14
  .replaceAll('\\', '\\\\')
6
15
  .replaceAll(':', '\\:')
7
- .replaceAll("'", "'\\\\\\''");
16
+ .replaceAll("'", "\\'");
8
17
  }
9
18
  /**
10
19
  * Positioned text with sensible defaults: centred, font size `48`, white.
@@ -17,6 +26,10 @@ export function text(input, textStr, opts) {
17
26
  const { x, y } = resolvePos(opts?.position ?? pos('center', 'center'), DRAWTEXT_NS);
18
27
  const dt = {
19
28
  text: escapeDrawtext(textStr),
29
+ // Escaping alone is not enough: with expansion on, a literal `%` in the copy makes
30
+ // FFmpeg drop the overlay entirely, no error and no text. These presets burn caller
31
+ // copy, never format strings, so expansion has nothing to do here.
32
+ expansion: 'none',
20
33
  fontsize: opts?.fontSize ?? 48,
21
34
  fontcolor: opts?.fontColor ?? 'white',
22
35
  x,
@@ -116,6 +129,7 @@ export function lowerThird(input, name, titleStr, opts) {
116
129
  })
117
130
  .drawtext({
118
131
  text: escapeDrawtext(name),
132
+ expansion: 'none',
119
133
  fontsize: nameFs, fontcolor: nameColor,
120
134
  x: `${margin}`, y: nameY,
121
135
  alpha, enable,
@@ -123,6 +137,7 @@ export function lowerThird(input, name, titleStr, opts) {
123
137
  })
124
138
  .drawtext({
125
139
  text: escapeDrawtext(titleStr),
140
+ expansion: 'none',
126
141
  fontsize: titleFs, fontcolor: titleColor,
127
142
  x: `${margin}`, y: titleY,
128
143
  alpha, enable,
@@ -1 +1 @@
1
- {"version":3,"file":"text.js","sourceRoot":"","sources":["../../src/presets/text.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"text.js","sourceRoot":"","sources":["../../src/presets/text.ts"],"names":[],"mappings":"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"}
@@ -19,7 +19,18 @@ export declare function xfadeChain(clips: TimedClip[], transition: string, cross
19
19
  export declare function concatChain(clips: VideoStream[]): VideoStream;
20
20
  export declare function fadeBookend(video: VideoStream, fadeInDur: number, fadeOutStart: number, fadeOutDur: number): VideoStream;
21
21
  export type KenBurnsPreset = 'gentleZoomIn' | 'gentleZoomOut' | 'gentlePan' | 'zoomIn' | 'zoomOut' | 'panRight' | 'panLeft' | 'punchIn' | 'pullBack' | 'spiral' | 'diagonal' | 'parallax';
22
- /** The zoompan `z`/`x`/`y` expressions for a preset over `frames` frames. */
22
+ /**
23
+ * The zoompan `z`/`x`/`y` expressions for a preset over `frames` frames.
24
+ *
25
+ * A ramp has to arrive at its endpoint on the LAST frame, and zoompan's output
26
+ * counter `on` runs `0 … frames-1`, not `0 … frames` — measured by panning
27
+ * `x=on*100` across a five-band image and reading the bands back. Normalising
28
+ * by the frame count leaves every move short of where it was asked to end, by a
29
+ * whole fifth of its travel on a five-frame clip, so the ramps normalise by the
30
+ * span between first and last frame. The periodic drift keeps `frames`, where
31
+ * it is the PERIOD of the turn and putting the last frame one step shy of the
32
+ * start is what stops the turn repeating itself.
33
+ */
23
34
  export declare function kenBurnsExprs(preset: KenBurnsPreset, frames: number): {
24
35
  z: string;
25
36
  x: string;
@@ -28,6 +39,15 @@ export declare function kenBurnsExprs(preset: KenBurnsPreset, frames: number): {
28
39
  /**
29
40
  * Apply a Ken Burns move to a clip, emitting `w`×`h` at `fps`.
30
41
  *
42
+ * `input` must be a MOVING stream already `duration * fps` frames long (what
43
+ * `makeSlideshow`'s image clip produces: loop -> fps -> trim). Hence `d: 1`,
44
+ * one output frame per input frame, with the motion driven by zoompan's global
45
+ * output counter `on`. The Rust SDK draws the same distinction: `ops::fx::punch_in`
46
+ * uses `d=1` on a moving stream, while `ops::timeline::apply_ken_burns` uses
47
+ * `d=frames` because its input is a SINGLE looped frame. Passing `d=frames` here
48
+ * cost 100x the frames (zoompan emits `d` per input frame), so a 4 s slide
49
+ * rendered 400 s long; that was live until 0.8.1.
50
+ *
31
51
  * Modest 2x working size for zoom headroom. NOT 4x: that produced ~8K
32
52
  * intermediate frames which, with the deflicker/tmix/gblur smoothing stack,
33
53
  * OOM'd render workers (ffmpeg exit 254). Integer (trunc'd) pan positions keep
@@ -1 +1 @@
1
- {"version":3,"file":"video.d.ts","sourceRoot":"","sources":["../../src/presets/video.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,0DAA0D;AAC1D,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,WAAW,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAMD;;;;GAIG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,SAAS,EAAE,EAClB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,GAChB,WAAW,CAWb;AAMD,iEAAiE;AACjE,wBAAgB,WAAW,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,WAAW,CAK7D;AAMD,wBAAgB,WAAW,CACzB,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,GACjB,WAAW,CAIb;AAMD,MAAM,MAAM,cAAc,GACtB,cAAc,GAAG,eAAe,GAAG,WAAW,GAC9C,QAAQ,GAAG,SAAS,GACpB,UAAU,GAAG,SAAS,GACtB,SAAS,GAAG,UAAU,GACtB,QAAQ,GAAG,UAAU,GAAG,UAAU,CAAC;AAiBvC,6EAA6E;AAC7E,wBAAgB,aAAa,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CA2BzG;AAED;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CACtB,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,cAAc,EACtB,QAAQ,EAAE,MAAM,EAChB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,GAAG,EAAE,MAAM,GACV,WAAW,CAWb;AAED,yCAAyC;AACzC,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,EAAE,cAAc,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,6EAA6E;AAC7E,wBAAgB,aAAa,CAC3B,MAAM,EAAE,aAAa,EAAE,EACvB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,GAAG,EAAE,MAAM,GACV,SAAS,EAAE,CAKb"}
1
+ {"version":3,"file":"video.d.ts","sourceRoot":"","sources":["../../src/presets/video.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,0DAA0D;AAC1D,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,WAAW,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAMD;;;;GAIG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,SAAS,EAAE,EAClB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,GAChB,WAAW,CAWb;AAMD,iEAAiE;AACjE,wBAAgB,WAAW,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,WAAW,CAK7D;AAMD,wBAAgB,WAAW,CACzB,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,GACjB,WAAW,CAIb;AAMD,MAAM,MAAM,cAAc,GACtB,cAAc,GAAG,eAAe,GAAG,WAAW,GAC9C,QAAQ,GAAG,SAAS,GACpB,UAAU,GAAG,SAAS,GACtB,SAAS,GAAG,UAAU,GACtB,QAAQ,GAAG,UAAU,GAAG,UAAU,CAAC;AAkBvC;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CA4BzG;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,QAAQ,CACtB,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,cAAc,EACtB,QAAQ,EAAE,MAAM,EAChB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,GAAG,EAAE,MAAM,GACV,WAAW,CAWb;AAED,yCAAyC;AACzC,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,EAAE,cAAc,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,6EAA6E;AAC7E,wBAAgB,aAAa,CAC3B,MAAM,EAAE,aAAa,EAAE,EACvB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,GAAG,EAAE,MAAM,GACV,SAAS,EAAE,CAKb"}
@@ -42,37 +42,50 @@ const EDGE_X = 'iw-(iw/zoom)';
42
42
  const EDGE_Y = 'ih-(ih/zoom)';
43
43
  const DRIFT_X = 'iw/6';
44
44
  const DRIFT_Y = 'ih/6';
45
- function lerp(frames, from, to) {
46
- return `${from}+(${to}-(${from}))*on/${frames}`;
45
+ /** `span` is how far `on` travels, not the frame count — see {@link kenBurnsExprs}. */
46
+ function lerp(span, from, to) {
47
+ return `${from}+(${to}-(${from}))*on/${span}`;
47
48
  }
48
- function easeInOut(frames, from, to) {
49
- return `${from}+(${to}-(${from}))*(3*pow(on/${frames},2)-2*pow(on/${frames},3))`;
49
+ function easeInOut(span, from, to) {
50
+ return `${from}+(${to}-(${from}))*(3*pow(on/${span},2)-2*pow(on/${span},3))`;
50
51
  }
51
- /** The zoompan `z`/`x`/`y` expressions for a preset over `frames` frames. */
52
+ /**
53
+ * The zoompan `z`/`x`/`y` expressions for a preset over `frames` frames.
54
+ *
55
+ * A ramp has to arrive at its endpoint on the LAST frame, and zoompan's output
56
+ * counter `on` runs `0 … frames-1`, not `0 … frames` — measured by panning
57
+ * `x=on*100` across a five-band image and reading the bands back. Normalising
58
+ * by the frame count leaves every move short of where it was asked to end, by a
59
+ * whole fifth of its travel on a five-frame clip, so the ramps normalise by the
60
+ * span between first and last frame. The periodic drift keeps `frames`, where
61
+ * it is the PERIOD of the turn and putting the last frame one step shy of the
62
+ * start is what stops the turn repeating itself.
63
+ */
52
64
  export function kenBurnsExprs(preset, frames) {
65
+ const span = Math.max(frames - 1, 1);
53
66
  switch (preset) {
54
- case 'gentleZoomIn': return { z: lerp(frames, '1', '1.15'), x: CENTER_X, y: CENTER_Y };
55
- case 'gentleZoomOut': return { z: lerp(frames, '1.15', '1'), x: CENTER_X, y: CENTER_Y };
56
- case 'gentlePan': return { z: '1.05', x: easeInOut(frames, '0', CENTER_X), y: CENTER_Y };
57
- case 'zoomIn': return { z: easeInOut(frames, '1', '1.5'), x: CENTER_X, y: CENTER_Y };
58
- case 'zoomOut': return { z: easeInOut(frames, '1.5', '1'), x: CENTER_X, y: CENTER_Y };
59
- case 'panRight': return { z: '1.1', x: easeInOut(frames, '0', EDGE_X), y: CENTER_Y };
60
- case 'panLeft': return { z: '1.1', x: easeInOut(frames, EDGE_X, '0'), y: CENTER_Y };
61
- case 'punchIn': return { z: easeInOut(frames, '1', '2'), x: CENTER_X, y: CENTER_Y };
62
- case 'pullBack': return { z: easeInOut(frames, '2', '1'), x: CENTER_X, y: CENTER_Y };
67
+ case 'gentleZoomIn': return { z: lerp(span, '1', '1.15'), x: CENTER_X, y: CENTER_Y };
68
+ case 'gentleZoomOut': return { z: lerp(span, '1.15', '1'), x: CENTER_X, y: CENTER_Y };
69
+ case 'gentlePan': return { z: '1.05', x: easeInOut(span, '0', CENTER_X), y: CENTER_Y };
70
+ case 'zoomIn': return { z: easeInOut(span, '1', '1.5'), x: CENTER_X, y: CENTER_Y };
71
+ case 'zoomOut': return { z: easeInOut(span, '1.5', '1'), x: CENTER_X, y: CENTER_Y };
72
+ case 'panRight': return { z: '1.1', x: easeInOut(span, '0', EDGE_X), y: CENTER_Y };
73
+ case 'panLeft': return { z: '1.1', x: easeInOut(span, EDGE_X, '0'), y: CENTER_Y };
74
+ case 'punchIn': return { z: easeInOut(span, '1', '2'), x: CENTER_X, y: CENTER_Y };
75
+ case 'pullBack': return { z: easeInOut(span, '2', '1'), x: CENTER_X, y: CENTER_Y };
63
76
  case 'spiral': return {
64
- z: easeInOut(frames, '1', '1.4'),
77
+ z: easeInOut(span, '1', '1.4'),
65
78
  x: `${CENTER_X}+${DRIFT_X}*sin(2*PI*on/${frames})`,
66
79
  y: `${CENTER_Y}+${DRIFT_Y}*cos(2*PI*on/${frames})`,
67
80
  };
68
81
  case 'diagonal': return {
69
- z: easeInOut(frames, '1', '1.3'),
70
- x: easeInOut(frames, '0', EDGE_X),
71
- y: easeInOut(frames, '0', EDGE_Y),
82
+ z: easeInOut(span, '1', '1.3'),
83
+ x: easeInOut(span, '0', EDGE_X),
84
+ y: easeInOut(span, '0', EDGE_Y),
72
85
  };
73
86
  case 'parallax': return {
74
87
  z: '1.2',
75
- x: easeInOut(frames, DRIFT_X, `${EDGE_X}-${DRIFT_X}`),
88
+ x: easeInOut(span, DRIFT_X, `${EDGE_X}-${DRIFT_X}`),
76
89
  y: CENTER_Y,
77
90
  };
78
91
  }
@@ -80,6 +93,15 @@ export function kenBurnsExprs(preset, frames) {
80
93
  /**
81
94
  * Apply a Ken Burns move to a clip, emitting `w`×`h` at `fps`.
82
95
  *
96
+ * `input` must be a MOVING stream already `duration * fps` frames long (what
97
+ * `makeSlideshow`'s image clip produces: loop -> fps -> trim). Hence `d: 1`,
98
+ * one output frame per input frame, with the motion driven by zoompan's global
99
+ * output counter `on`. The Rust SDK draws the same distinction: `ops::fx::punch_in`
100
+ * uses `d=1` on a moving stream, while `ops::timeline::apply_ken_burns` uses
101
+ * `d=frames` because its input is a SINGLE looped frame. Passing `d=frames` here
102
+ * cost 100x the frames (zoompan emits `d` per input frame), so a 4 s slide
103
+ * rendered 400 s long; that was live until 0.8.1.
104
+ *
83
105
  * Modest 2x working size for zoom headroom. NOT 4x: that produced ~8K
84
106
  * intermediate frames which, with the deflicker/tmix/gblur smoothing stack,
85
107
  * OOM'd render workers (ffmpeg exit 254). Integer (trunc'd) pan positions keep
@@ -95,7 +117,7 @@ export function kenBurns(input, preset, duration, w, h, fps) {
95
117
  .scale({ w: scaledW, h: scaledH, force_original_aspect_ratio: 'decrease', flags: 'lanczos' })
96
118
  .pad({ w: scaledW, h: scaledH, x: '(ow-iw)/2', y: '(oh-ih)/2', color: 'black' })
97
119
  .setsar({ sar: '1' })
98
- .zoompan({ z: exprs.z, x: `trunc(${exprs.x})`, y: `trunc(${exprs.y})`, d: frames, fps, s: `${w}x${h}` })
120
+ .zoompan({ z: exprs.z, x: `trunc(${exprs.x})`, y: `trunc(${exprs.y})`, d: 1, fps, s: `${w}x${h}` })
99
121
  .format({ pix_fmts: 'yuv420p' });
100
122
  }
101
123
  /** Prepare slides with Ken Burns moves, ready to feed {@link xfadeChain}. */
@@ -1 +1 @@
1
- {"version":3,"file":"video.js","sourceRoot":"","sources":["../../src/presets/video.ts"],"names":[],"mappings":"AAaA,8EAA8E;AAC9E,6DAA6D;AAC7D,8EAA8E;AAE9E;;;;GAIG;AACH,MAAM,UAAU,UAAU,CACxB,KAAkB,EAClB,UAAkB,EAClB,SAAiB;IAEjB,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,8CAA8C,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IAChF,CAAC;IACD,IAAI,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAC1B,IAAI,gBAAgB,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,SAAS,CAAC;IACrD,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QAClC,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;QAC5F,gBAAgB,IAAI,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;IAChD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,8EAA8E;AAC9E,sCAAsC;AACtC,8EAA8E;AAE9E,iEAAiE;AACjE,MAAM,UAAU,WAAW,CAAC,KAAoB;IAC9C,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,+CAA+C,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IACjF,CAAC;IACD,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,CAAC;AAED,8EAA8E;AAC9E,sDAAsD;AACtD,8EAA8E;AAE9E,MAAM,UAAU,WAAW,CACzB,KAAkB,EAClB,SAAiB,EACjB,YAAoB,EACpB,UAAkB;IAElB,OAAO,KAAK;SACT,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC;SACzC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;AAC5D,CAAC;AAaD,MAAM,QAAQ,GAAG,kBAAkB,CAAC;AACpC,MAAM,QAAQ,GAAG,kBAAkB,CAAC;AACpC,MAAM,MAAM,GAAG,cAAc,CAAC;AAC9B,MAAM,MAAM,GAAG,cAAc,CAAC;AAC9B,MAAM,OAAO,GAAG,MAAM,CAAC;AACvB,MAAM,OAAO,GAAG,MAAM,CAAC;AAEvB,SAAS,IAAI,CAAC,MAAc,EAAE,IAAY,EAAE,EAAU;IACpD,OAAO,GAAG,IAAI,KAAK,EAAE,KAAK,IAAI,SAAS,MAAM,EAAE,CAAC;AAClD,CAAC;AAED,SAAS,SAAS,CAAC,MAAc,EAAE,IAAY,EAAE,EAAU;IACzD,OAAO,GAAG,IAAI,KAAK,EAAE,KAAK,IAAI,gBAAgB,MAAM,gBAAgB,MAAM,MAAM,CAAC;AACnF,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,aAAa,CAAC,MAAsB,EAAE,MAAc;IAClE,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,cAAc,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC;QACvF,KAAK,eAAe,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC;QACxF,KAAK,WAAW,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC;QACzF,KAAK,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC;QACrF,KAAK,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC;QACtF,KAAK,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC;QACrF,KAAK,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC;QACpF,KAAK,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC;QACpF,KAAK,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC;QACrF,KAAK,QAAQ,CAAC,CAAC,OAAO;YACpB,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC;YAChC,CAAC,EAAE,GAAG,QAAQ,IAAI,OAAO,gBAAgB,MAAM,GAAG;YAClD,CAAC,EAAE,GAAG,QAAQ,IAAI,OAAO,gBAAgB,MAAM,GAAG;SACnD,CAAC;QACF,KAAK,UAAU,CAAC,CAAC,OAAO;YACtB,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC;YAChC,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC;YACjC,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC;SAClC,CAAC;QACF,KAAK,UAAU,CAAC,CAAC,OAAO;YACtB,CAAC,EAAE,KAAK;YACR,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,OAAO,EAAE,CAAC;YACrD,CAAC,EAAE,QAAQ;SACZ,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,QAAQ,CACtB,KAAkB,EAClB,MAAsB,EACtB,QAAgB,EAChB,CAAS,EACT,CAAS,EACT,GAAW;IAEX,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAC;IAC1C,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;IACtB,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;IACtB,OAAO,KAAK;SACT,KAAK,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,2BAA2B,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;SAC5F,GAAG,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;SAC/E,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;SACpB,OAAO,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,SAAS,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;SACvG,MAAM,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;AACrC,CAAC;AASD,6EAA6E;AAC7E,MAAM,UAAU,aAAa,CAC3B,MAAuB,EACvB,CAAS,EACT,CAAS,EACT,GAAW;IAEX,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACxB,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;QAC3D,QAAQ,EAAE,CAAC,CAAC,QAAQ;KACrB,CAAC,CAAC,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"video.js","sourceRoot":"","sources":["../../src/presets/video.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"makeSlideshow.d.ts","sourceRoot":"","sources":["../../src/recipes/makeSlideshow.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"makeSlideshow.d.ts","sourceRoot":"","sources":["../../src/recipes/makeSlideshow.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,29 @@
1
1
  import { graph } from '../graph.js';
2
2
  import { kenBurns, xfadeChain } from '../presets/video.js';
3
+ import { escapeDrawtext } from '../presets/text.js';
3
4
  const DEFAULT_DETECT_MODEL = 'yolov9-c';
4
- function imageClip(g, path, duration, fpsRate) {
5
- const [v] = g.open(path);
5
+ /**
6
+ * One `open` per distinct file, reused wherever that file appears again.
7
+ *
8
+ * A path can legitimately repeat inside one render: a row with a single hero image padded
9
+ * into two slides, a logo that is also a slide, a bed used twice. Opening it twice puts two
10
+ * decoders on the same input and FFmpeg dies with exit 254 (verified against the live fleet,
11
+ * 19 Aug 2026); fanning one source into several filter chains is what the graph is for, and
12
+ * the compiler splits it. Every `open` in this recipe goes through here.
13
+ */
14
+ function opener(g) {
15
+ const cache = new Map();
16
+ return (path) => {
17
+ const hit = cache.get(path);
18
+ if (hit)
19
+ return hit;
20
+ const io = g.open(path);
21
+ cache.set(path, io);
22
+ return io;
23
+ };
24
+ }
25
+ function imageClip(open, path, duration, fpsRate) {
26
+ const [v] = open(path);
6
27
  return v
7
28
  .loop({ loop: -1, size: 1, start: 0 })
8
29
  .fps({ fps: fpsRate })
@@ -56,20 +77,27 @@ function watermarkXY(position, margin) {
56
77
  }
57
78
  }
58
79
  /** Composite the logo lockup as a persistent corner watermark. */
59
- function applyWatermark(g, video, w, opts) {
80
+ function applyWatermark(open, video, w, opts) {
60
81
  const scaleFrac = opts.scale ?? 0.14;
61
82
  const margin = opts.margin ?? 40;
62
- const [logoRaw] = g.open(opts.path);
83
+ const [logoRaw] = open(opts.path);
63
84
  const logo = logoRaw
64
85
  .loop({ loop: -1, size: 1, start: 0 })
65
86
  .scale({ w: Math.round(w * scaleFrac), h: -1, flags: 'lanczos' });
66
87
  const { x, y } = watermarkXY(opts.position ?? 'bottomRight', margin);
67
88
  return video.overlay(logo, { x, y, ...(opts.opacity !== undefined ? { alpha: opts.opacity } : {}) });
68
89
  }
69
- /** Placement + weight per text-overlay preset, as fractions of frame width/height. */
90
+ /**
91
+ * Placement + weight per text-overlay preset, as fractions of frame width/height.
92
+ *
93
+ * NB the band is sized in `ih`, not `h`. drawtext's `h` IS the frame height, but
94
+ * inside drawbox `h` is the BOX's own height, so `h*0.70` is self-referential and
95
+ * FFmpeg exits 234 before a frame is written. That killed every `title` overlay
96
+ * until 0.8.1.
97
+ */
70
98
  function textPreset(preset) {
71
99
  switch (preset) {
72
- case 'title': return { fontsize: 'h/14', y: 'h*0.72', band: { y: 'h*0.70', h: 'h*0.14' } };
100
+ case 'title': return { fontsize: 'h/14', y: 'h*0.72', band: { y: 'ih*0.70', h: 'ih*0.14' } };
73
101
  case 'watermark': return { fontsize: 'h/30', y: 'h*0.05' };
74
102
  case 'caption':
75
103
  default: return { fontsize: 'h/24', y: 'h*0.85' };
@@ -90,7 +118,13 @@ function applyTextOverlay(video, overlay) {
90
118
  });
91
119
  }
92
120
  return out.drawtext({
93
- text: overlay.text,
121
+ // Overlay text is CALLER copy: prices, times, names. It reaches FFmpeg through the
122
+ // filter-argument parser, where `:` ends the option, `'` opens a quoted run and `\`
123
+ // escapes the next character, and then through text expansion, where a literal `%`
124
+ // drops the whole overlay with no error. Escape the first three (the same helper the
125
+ // text presets use) and turn the second off. All four were live until 0.8.1.
126
+ text: escapeDrawtext(overlay.text),
127
+ expansion: 'none',
94
128
  fontsize: spec.fontsize,
95
129
  fontcolor: overlay.fontcolor ?? 'white',
96
130
  x: '(w-text_w)/2',
@@ -104,8 +138,8 @@ function applyTextOverlay(video, overlay) {
104
138
  });
105
139
  }
106
140
  /** Build the music-bed audio (volume + fades), independent of the voiceover. */
107
- function buildMusic(g, music, totalDur) {
108
- let a = g.open(music.path)[1];
141
+ function buildMusic(open, music, totalDur) {
142
+ let a = open(music.path)[1];
109
143
  if (music.volume !== undefined)
110
144
  a = a.volume({ volume: music.volume });
111
145
  if (music.fadeIn !== undefined)
@@ -120,10 +154,10 @@ function buildMusic(g, music, totalDur) {
120
154
  * `autoDuck`, the bed is side-chain compressed by the voiceover (ducks under speech)
121
155
  * before the two are mixed.
122
156
  */
123
- function buildAudio(g, music, voiceover) {
157
+ function buildAudio(open, music, voiceover) {
124
158
  if (!voiceover)
125
159
  return music;
126
- const vo = g.open(voiceover.path)[1].volume({ volume: voiceover.volume ?? 1.0 });
160
+ const vo = open(voiceover.path)[1].volume({ volume: voiceover.volume ?? 1.0 });
127
161
  if (!music)
128
162
  return vo;
129
163
  const autoDuck = voiceover.autoDuck ?? true;
@@ -136,8 +170,9 @@ export function makeSlideshow(outputPath, opts) {
136
170
  const [w, h] = opts.resolution;
137
171
  const fpsRate = opts.fps ?? 25;
138
172
  const g = graph();
173
+ const open = opener(g);
139
174
  const clips = opts.slides.map((slide) => {
140
- const clip = imageClip(g, slide.path, slide.duration, fpsRate);
175
+ const clip = imageClip(open, slide.path, slide.duration, fpsRate);
141
176
  return slide.kenBurns
142
177
  ? kenBurns(clip, slide.kenBurns, slide.duration, w, h, fpsRate)
143
178
  : fitSlide(clip, w, h, opts.smartCrop);
@@ -159,12 +194,16 @@ export function makeSlideshow(outputPath, opts) {
159
194
  if (opts.videoFilter)
160
195
  video = video.eq(opts.videoFilter);
161
196
  if (opts.watermark)
162
- video = applyWatermark(g, video, w, opts.watermark);
197
+ video = applyWatermark(open, video, w, opts.watermark);
163
198
  for (const overlay of opts.textOverlays ?? [])
164
199
  video = applyTextOverlay(video, overlay);
200
+ // Pin the delivery pixel format. Filter negotiation settles the tail at yuv444p, which
201
+ // Safari refuses to decode, and a sink `pix_fmt` does not survive the compiler, so the
202
+ // recipe's own output was not web-playable until 0.8.1.
203
+ video = video.format({ pix_fmts: 'yuv420p' });
165
204
  const totalDur = durations.reduce((sum, d) => sum + d, 0) - Math.max(0, clips.length - 1) * transitionDur;
166
- const music = opts.music ? buildMusic(g, opts.music, totalDur) : undefined;
167
- let audio = buildAudio(g, music, opts.voiceover);
205
+ const music = opts.music ? buildMusic(open, opts.music, totalDur) : undefined;
206
+ let audio = buildAudio(open, music, opts.voiceover);
168
207
  if (audio && opts.mastering) {
169
208
  audio = audio.loudnorm({ I: opts.mastering.lufs ?? -14, TP: opts.mastering.truePeak ?? -1, LRA: opts.mastering.lra ?? 11 });
170
209
  }