@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 +47 -0
- package/dist/pipelines.d.ts +1 -15
- package/dist/pipelines.d.ts.map +1 -1
- package/dist/pipelines.js.map +1 -1
- package/dist/presets/text.d.ts +10 -1
- package/dist/presets/text.d.ts.map +1 -1
- package/dist/presets/text.js +17 -2
- package/dist/presets/text.js.map +1 -1
- package/dist/presets/video.d.ts +21 -1
- package/dist/presets/video.d.ts.map +1 -1
- package/dist/presets/video.js +42 -20
- package/dist/presets/video.js.map +1 -1
- package/dist/recipes/makeSlideshow.d.ts.map +1 -1
- package/dist/recipes/makeSlideshow.js +54 -15
- package/dist/recipes/makeSlideshow.js.map +1 -1
- package/dist/streams.d.ts +75 -49
- package/dist/streams.d.ts.map +1 -1
- package/dist/streams.js +12 -12
- package/dist/streams.js.map +1 -1
- package/dist/types.d.ts +1 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +5 -2
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
|
package/dist/pipelines.d.ts
CHANGED
|
@@ -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;
|
package/dist/pipelines.d.ts.map
CHANGED
|
@@ -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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"}
|
package/dist/pipelines.js.map
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/presets/text.d.ts
CHANGED
|
@@ -5,7 +5,16 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import type { VideoStream } from '../streams.js';
|
|
7
7
|
import { type Position } from './position.js';
|
|
8
|
-
/**
|
|
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
|
|
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"}
|
package/dist/presets/text.js
CHANGED
|
@@ -1,10 +1,19 @@
|
|
|
1
1
|
import { DRAWTEXT_NS, pos, resolvePos } from './position.js';
|
|
2
|
-
/**
|
|
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,
|
package/dist/presets/text.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"text.js","sourceRoot":"","sources":["../../src/presets/text.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,UAAU,EAAiB,MAAM,eAAe,CAAC;AAE5E
|
|
1
|
+
{"version":3,"file":"text.js","sourceRoot":"","sources":["../../src/presets/text.ts"],"names":[],"mappings":"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"}
|
package/dist/presets/video.d.ts
CHANGED
|
@@ -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
|
-
/**
|
|
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;
|
|
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"}
|
package/dist/presets/video.js
CHANGED
|
@@ -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
|
-
|
|
46
|
-
|
|
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(
|
|
49
|
-
return `${from}+(${to}-(${from}))*(3*pow(on/${
|
|
49
|
+
function easeInOut(span, from, to) {
|
|
50
|
+
return `${from}+(${to}-(${from}))*(3*pow(on/${span},2)-2*pow(on/${span},3))`;
|
|
50
51
|
}
|
|
51
|
-
/**
|
|
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(
|
|
55
|
-
case 'gentleZoomOut': return { z: lerp(
|
|
56
|
-
case 'gentlePan': return { z: '1.05', x: easeInOut(
|
|
57
|
-
case 'zoomIn': return { z: easeInOut(
|
|
58
|
-
case 'zoomOut': return { z: easeInOut(
|
|
59
|
-
case 'panRight': return { z: '1.1', x: easeInOut(
|
|
60
|
-
case 'panLeft': return { z: '1.1', x: easeInOut(
|
|
61
|
-
case 'punchIn': return { z: easeInOut(
|
|
62
|
-
case 'pullBack': return { z: easeInOut(
|
|
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(
|
|
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(
|
|
70
|
-
x: easeInOut(
|
|
71
|
-
y: easeInOut(
|
|
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(
|
|
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:
|
|
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,
|
|
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":"AAAA,OAAO,EAAS,KAAK,KAAK,EAAE,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAEjE,OAAO,EAAwB,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"makeSlideshow.d.ts","sourceRoot":"","sources":["../../src/recipes/makeSlideshow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,KAAK,EAAE,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAEjE,OAAO,EAAwB,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGhF,YAAY,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,4CAA4C;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uFAAuF;IACvF,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,UAAU,GAAG,YAAY,GAAG,aAAa,CAAC;AAEtF,qFAAqF;AACrF,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,wDAAwD;IACxD,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,4EAA4E;IAC5E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yDAAyD;IACzD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,yCAAyC;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,SAAS,GAAG,WAAW,CAAC;AAElE;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,gFAAgF;AAChF,MAAM,WAAW,oBAAoB;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,uFAAuF;AACvF,MAAM,WAAW,sBAAsB;IACrC,mEAAmE;IACnE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kCAAkC;IAClC,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,mBAAmB,CAAC;IACjC,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAC3B,+EAA+E;IAC/E,SAAS,CAAC,EAAE,sBAAsB,CAAC;IACnC,gDAAgD;IAChD,SAAS,CAAC,EAAE,sBAAsB,CAAC;IACnC,kFAAkF;IAClF,YAAY,CAAC,EAAE,oBAAoB,EAAE,CAAC;IACtC,qDAAqD;IACrD,WAAW,CAAC,EAAE,oBAAoB,CAAC;IACnC,wDAAwD;IACxD,SAAS,CAAC,EAAE,sBAAsB,CAAC;IACnC,wFAAwF;IACxF,SAAS,CAAC,EAAE,sBAAsB,CAAC;IACnC,MAAM,CAAC,EAAE,UAAU,CAAC;CACrB;AAiLD,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,GAAG,KAAK,CAuDhF"}
|
|
@@ -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
|
-
|
|
5
|
-
|
|
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(
|
|
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] =
|
|
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
|
-
/**
|
|
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: '
|
|
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:
|
|
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(
|
|
108
|
-
let a =
|
|
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(
|
|
157
|
+
function buildAudio(open, music, voiceover) {
|
|
124
158
|
if (!voiceover)
|
|
125
159
|
return music;
|
|
126
|
-
const vo =
|
|
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(
|
|
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(
|
|
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(
|
|
167
|
-
let audio = buildAudio(
|
|
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
|
}
|