gooseworks 0.5.7-dev.46.ade46de2 → 0.5.8
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/dist/kit/core/run.d.ts +1 -5
- package/dist/kit/core/run.d.ts.map +1 -1
- package/dist/kit/core/run.js +0 -10
- package/dist/kit/core/run.js.map +1 -1
- package/dist/kit/core/style.d.ts +0 -1
- package/dist/kit/core/style.d.ts.map +1 -1
- package/dist/kit/maker/encode.d.ts +0 -5
- package/dist/kit/maker/encode.d.ts.map +1 -1
- package/dist/kit/maker/encode.js +1 -7
- package/dist/kit/maker/encode.js.map +1 -1
- package/dist/kit/maker/inputs.d.ts +3 -48
- package/dist/kit/maker/inputs.d.ts.map +1 -1
- package/dist/kit/maker/inputs.js +22 -151
- package/dist/kit/maker/inputs.js.map +1 -1
- package/dist/kit/maker/make.d.ts +1 -20
- package/dist/kit/maker/make.d.ts.map +1 -1
- package/dist/kit/maker/make.js +19 -125
- package/dist/kit/maker/make.js.map +1 -1
- package/dist/kit/maker/page.d.ts.map +1 -1
- package/dist/kit/maker/page.js +1 -49
- package/dist/kit/maker/page.js.map +1 -1
- package/dist/kit/maker/parts/html-frames/1.1.0/part.json +199 -0
- package/dist/kit/maker/parts/html-frames/src/part.d.ts.map +1 -1
- package/dist/kit/maker/parts/html-frames/src/part.js +1 -4
- package/dist/kit/maker/parts/html-frames/src/part.js.map +1 -1
- package/dist/kit/maker/runtime.d.ts.map +1 -1
- package/dist/kit/maker/runtime.js +7 -54
- package/dist/kit/maker/runtime.js.map +1 -1
- package/dist/skills/master-skill.d.ts +3 -3
- package/dist/skills/master-skill.d.ts.map +1 -1
- package/dist/skills/master-skill.js +18 -20
- package/dist/skills/master-skill.js.map +1 -1
- package/dist/skills/production-video-skills.json +5 -0
- package/package.json +3 -3
- package/skills/goose-video/SKILL.md +599 -23
- package/skills/goose-video-local/SKILL.md +1572 -3
- package/skills/make-custom-video/SKILL.md +689 -23
- package/skills/manifest.json +4 -4
- package/dist/kit/maker/cues.d.ts +0 -67
- package/dist/kit/maker/cues.d.ts.map +0 -1
- package/dist/kit/maker/cues.js +0 -204
- package/dist/kit/maker/cues.js.map +0 -1
- package/dist/kit/maker/facts.d.ts +0 -46
- package/dist/kit/maker/facts.d.ts.map +0 -1
- package/dist/kit/maker/facts.js +0 -159
- package/dist/kit/maker/facts.js.map +0 -1
- package/dist/kit/maker/parts/html-frames/1.2.0/part.json +0 -1083
- package/dist/kit/maker/timing.d.ts +0 -74
- package/dist/kit/maker/timing.d.ts.map +0 -1
- package/dist/kit/maker/timing.js +0 -152
- package/dist/kit/maker/timing.js.map +0 -1
- package/dist/kit/maker/under.d.ts +0 -126
- package/dist/kit/maker/under.d.ts.map +0 -1
- package/dist/kit/maker/under.js +0 -299
- package/dist/kit/maker/under.js.map +0 -1
package/dist/kit/maker/inputs.js
CHANGED
|
@@ -1,17 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.LIMITS = exports.SHORT_SIDES = exports.DESIGN_SIZE = void 0;
|
|
4
4
|
exports.isFileRef = isFileRef;
|
|
5
|
+
exports.countWords = countWords;
|
|
5
6
|
exports.readInputs = readInputs;
|
|
6
7
|
// The html-frames inputs, read and checked before anything starts. Bundled
|
|
7
8
|
// into the part (part.mjs) with the input schema from its part.json and the
|
|
8
9
|
// kit core's schema checker, so the part refuses exactly what part.json does,
|
|
9
10
|
// however it is called.
|
|
10
11
|
const schema_1 = require("../core/schema");
|
|
11
|
-
const part_json_1 = require("./parts/html-frames/1.
|
|
12
|
-
const timing_1 = require("./timing");
|
|
13
|
-
Object.defineProperty(exports, "countWords", { enumerable: true, get: function () { return timing_1.countWords; } });
|
|
14
|
-
const under_1 = require("./under");
|
|
12
|
+
const part_json_1 = require("./parts/html-frames/1.1.0/part.json");
|
|
15
13
|
/** Every frame page is laid out at a 1080 px short side (CSS px). */
|
|
16
14
|
exports.DESIGN_SIZE = {
|
|
17
15
|
'9:16': { width: 1080, height: 1920 },
|
|
@@ -32,8 +30,6 @@ exports.LIMITS = {
|
|
|
32
30
|
maxWords: 200,
|
|
33
31
|
textChars: 2000,
|
|
34
32
|
};
|
|
35
|
-
/** The inputs that set the video's length; exactly one is given. */
|
|
36
|
-
const LENGTH_SOURCES = ['duration_s', 'scene_s', 'pace', 'speech', 'under'];
|
|
37
33
|
function isObject(value) {
|
|
38
34
|
return !!value && typeof value === 'object' && !Array.isArray(value);
|
|
39
35
|
}
|
|
@@ -63,6 +59,12 @@ function optionalText(value, at, fail) {
|
|
|
63
59
|
fail(`${at} is longer than ${exports.LIMITS.textChars} characters`);
|
|
64
60
|
return value;
|
|
65
61
|
}
|
|
62
|
+
/** Words as a reader counts them: runs of letters or digits, joined by ' or -. */
|
|
63
|
+
function countWords(text) {
|
|
64
|
+
if (!text)
|
|
65
|
+
return 0;
|
|
66
|
+
return text.split(/\s+/u).filter((token) => /[\p{L}\p{N}]/u.test(token)).length;
|
|
67
|
+
}
|
|
66
68
|
function scenesOf(value, maxWords, fail) {
|
|
67
69
|
if (!Array.isArray(value) || value.length === 0)
|
|
68
70
|
fail('scenes should list at least one scene');
|
|
@@ -82,7 +84,7 @@ function scenesOf(value, maxWords, fail) {
|
|
|
82
84
|
const line = optionalText(raw.line, `${at}.line`, fail);
|
|
83
85
|
const onScreen = optionalText(raw.on_screen, `${at}.on_screen`, fail);
|
|
84
86
|
for (const [field, text] of [['line', line], ['on_screen', onScreen]]) {
|
|
85
|
-
const words =
|
|
87
|
+
const words = countWords(text);
|
|
86
88
|
if (words > maxWords) {
|
|
87
89
|
fail(`scene ${index + 1} (${id}) has ${words} words in ${field}; this style allows ${maxWords} per scene`);
|
|
88
90
|
}
|
|
@@ -93,11 +95,7 @@ function scenesOf(value, maxWords, fail) {
|
|
|
93
95
|
else
|
|
94
96
|
picture = optionalText(raw.picture, `${at}.picture`, fail);
|
|
95
97
|
const image = raw.image === undefined || raw.image === null ? null : fileOf(raw.image, `${at}.image`, ['image'], fail);
|
|
96
|
-
|
|
97
|
-
if (raw.extra !== undefined && raw.extra !== null && !isObject(raw.extra))
|
|
98
|
-
fail(`${at}.extra should be an object`);
|
|
99
|
-
const extra = isObject(raw.extra) ? raw.extra : null;
|
|
100
|
-
return { id, index, line, on_screen: onScreen, picture, image, speaker, extra };
|
|
98
|
+
return { id, index, line, on_screen: onScreen, picture, image };
|
|
101
99
|
});
|
|
102
100
|
}
|
|
103
101
|
function productsOf(value, fail) {
|
|
@@ -162,53 +160,8 @@ function brandOf(value, fail) {
|
|
|
162
160
|
}
|
|
163
161
|
return { name, logo, colors, fonts, cta };
|
|
164
162
|
}
|
|
165
|
-
function mediaOf(value, fail) {
|
|
166
|
-
if (value === undefined || value === null)
|
|
167
|
-
return [];
|
|
168
|
-
if (!Array.isArray(value))
|
|
169
|
-
fail('media should be a list');
|
|
170
|
-
const ids = new Set();
|
|
171
|
-
return value.map((raw, i) => {
|
|
172
|
-
const at = `media[${i}]`;
|
|
173
|
-
if (!isObject(raw))
|
|
174
|
-
fail(`${at} should be an object`);
|
|
175
|
-
if (typeof raw.id !== 'string' || !raw.id)
|
|
176
|
-
fail(`${at}.id should be text`);
|
|
177
|
-
if (ids.has(raw.id))
|
|
178
|
-
fail(`${at}.id "${raw.id}" is used twice`);
|
|
179
|
-
ids.add(raw.id);
|
|
180
|
-
return { id: raw.id, image: fileOf(raw.image, `${at}.image`, ['image'], fail) };
|
|
181
|
-
});
|
|
182
|
-
}
|
|
183
|
-
function secondsOf(ms) {
|
|
184
|
-
return typeof ms === 'number' && Number.isFinite(ms) ? Math.round(ms) / 1000 : null;
|
|
185
|
-
}
|
|
186
|
-
function footageOf(value, fail) {
|
|
187
|
-
if (value === undefined || value === null)
|
|
188
|
-
return [];
|
|
189
|
-
if (!Array.isArray(value))
|
|
190
|
-
fail('footage should be a list');
|
|
191
|
-
return value.map((raw, index) => {
|
|
192
|
-
const at = `footage[${index}]`;
|
|
193
|
-
if (!isObject(raw))
|
|
194
|
-
fail(`${at} should be an object`);
|
|
195
|
-
const start = secondsOf(raw.start_ms);
|
|
196
|
-
const end = secondsOf(raw.end_ms);
|
|
197
|
-
if (start !== null && end !== null && end < start)
|
|
198
|
-
fail(`${at} ends before it starts`);
|
|
199
|
-
return {
|
|
200
|
-
index,
|
|
201
|
-
scene_id: typeof raw.scene_id === 'string' && raw.scene_id ? raw.scene_id : null,
|
|
202
|
-
kind: typeof raw.kind === 'string' && raw.kind ? raw.kind : 'video',
|
|
203
|
-
start_s: start,
|
|
204
|
-
end_s: end,
|
|
205
|
-
crop: raw.crop ?? null,
|
|
206
|
-
fit: typeof raw.fit === 'string' && raw.fit ? raw.fit : null,
|
|
207
|
-
};
|
|
208
|
-
});
|
|
209
|
-
}
|
|
210
163
|
/** Reads the part's inputs into a render plan, or throws bad_input naming the problem. */
|
|
211
|
-
function readInputs(raw, ctx
|
|
164
|
+
function readInputs(raw, ctx) {
|
|
212
165
|
const fail = (detail) => {
|
|
213
166
|
throw ctx.error('bad_input', detail);
|
|
214
167
|
};
|
|
@@ -235,32 +188,7 @@ function readInputs(raw, ctx, measured = {}) {
|
|
|
235
188
|
if (typeof aspect !== 'string' || !(aspect in exports.DESIGN_SIZE))
|
|
236
189
|
fail(`aspect should be one of ${Object.keys(exports.DESIGN_SIZE).join(', ')}`);
|
|
237
190
|
const design = exports.DESIGN_SIZE[aspect];
|
|
238
|
-
const
|
|
239
|
-
if (given.length !== 1)
|
|
240
|
-
fail('give exactly one of duration_s (the whole video), scene_s (each scene), pace, speech or under (a video to draw over)');
|
|
241
|
-
const source = given[0];
|
|
242
|
-
let under = null;
|
|
243
|
-
if (source === 'under') {
|
|
244
|
-
const file = fileOf(raw.under, 'under', ['video'], fail);
|
|
245
|
-
if (!isObject(raw.under_timeline))
|
|
246
|
-
fail('under_timeline should be the timeline of the video to draw over');
|
|
247
|
-
const timeline = raw.under_timeline;
|
|
248
|
-
const info = measured.under === undefined ? null : measured.under;
|
|
249
|
-
if (measured.under === null)
|
|
250
|
-
fail('the video to draw over could not be read');
|
|
251
|
-
// Before it is measured (a dry read), the timeline's own length stands in.
|
|
252
|
-
const seconds = info?.seconds ?? (typeof file.duration_s === 'number' ? file.duration_s : timeline.duration_s);
|
|
253
|
-
under = {
|
|
254
|
-
file,
|
|
255
|
-
timeline,
|
|
256
|
-
info: info ?? { seconds, width: timeline.width, height: timeline.height, fps: timeline.fps, hasAudio: false },
|
|
257
|
-
};
|
|
258
|
-
}
|
|
259
|
-
else if (raw.under_timeline !== undefined && raw.under_timeline !== null)
|
|
260
|
-
fail('under_timeline is given without under');
|
|
261
|
-
// Drawn over a video, the frame rate follows it unless the step sets one.
|
|
262
|
-
const underFps = under?.info.fps ? Math.min(exports.LIMITS.maxFps, Math.max(1, Math.round(under.info.fps))) : null;
|
|
263
|
-
const fps = raw.fps ?? underFps ?? 30;
|
|
191
|
+
const fps = raw.fps ?? 30;
|
|
264
192
|
if (typeof fps !== 'number' || !Number.isInteger(fps) || fps < 1 || fps > exports.LIMITS.maxFps)
|
|
265
193
|
fail(`fps should be a whole number from 1 to ${exports.LIMITS.maxFps}`);
|
|
266
194
|
const shortSide = raw.short_side ?? 1080;
|
|
@@ -268,73 +196,25 @@ function readInputs(raw, ctx, measured = {}) {
|
|
|
268
196
|
fail(`short_side should be ${exports.SHORT_SIDES.join(' or ')}`);
|
|
269
197
|
const scale = shortSide / 1080;
|
|
270
198
|
const output = { width: Math.round(design.width * scale), height: Math.round(design.height * scale) };
|
|
271
|
-
|
|
272
|
-
const
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
if (typeof times === 'string')
|
|
277
|
-
fail(times);
|
|
278
|
-
timed = times;
|
|
279
|
-
}
|
|
280
|
-
else if (source === 'pace') {
|
|
281
|
-
const holds = (0, timing_1.paceHolds)(scenes, raw.pace);
|
|
282
|
-
if (typeof holds === 'string')
|
|
283
|
-
fail(holds);
|
|
284
|
-
timed = (0, timing_1.startsOfHolds)(holds);
|
|
285
|
-
}
|
|
286
|
-
const seconds = under
|
|
287
|
-
? under.info.seconds
|
|
288
|
-
: timed
|
|
289
|
-
? timed.seconds
|
|
290
|
-
: source === 'duration_s'
|
|
291
|
-
? raw.duration_s
|
|
292
|
-
: raw.scene_s * scenes.length;
|
|
199
|
+
const hasTotal = raw.duration_s !== undefined && raw.duration_s !== null;
|
|
200
|
+
const hasPerScene = raw.scene_s !== undefined && raw.scene_s !== null;
|
|
201
|
+
if (hasTotal === hasPerScene)
|
|
202
|
+
fail('give exactly one of duration_s (the whole video) or scene_s (each scene)');
|
|
203
|
+
const seconds = hasTotal ? raw.duration_s : raw.scene_s * scenes.length;
|
|
293
204
|
if (typeof seconds !== 'number' || !Number.isFinite(seconds) || seconds < exports.LIMITS.minSeconds || seconds > exports.LIMITS.maxSeconds) {
|
|
294
205
|
fail(`the video would be ${String(seconds)} seconds; it must be ${exports.LIMITS.minSeconds} to ${exports.LIMITS.maxSeconds}`);
|
|
295
206
|
}
|
|
296
207
|
const frameCount = Math.round(seconds * fps);
|
|
297
208
|
if (frameCount < scenes.length)
|
|
298
209
|
fail(`${scenes.length} scenes need at least ${scenes.length} frames; the video has ${frameCount}`);
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
if (!Array.isArray(frames)) {
|
|
303
|
-
const scene = scenes[frames.empty];
|
|
304
|
-
fail(`scene ${frames.empty + 1} (${scene.id}) gets no time at ${fps} fps: ${source === 'speech' ? 'the speech gives it none (a scene with no speech needs a gap, or tail_s at the end)' : 'its pace hold is too short'}`);
|
|
305
|
-
}
|
|
306
|
-
sceneFrames = frames;
|
|
307
|
-
}
|
|
308
|
-
else if (under) {
|
|
309
|
-
// Scenes take the real times of the video drawn over.
|
|
310
|
-
const fromUnder = (0, under_1.underSceneFrames)(scenes.map((scene) => scene.id), under.timeline, fps, frameCount);
|
|
311
|
-
if (!fromUnder) {
|
|
312
|
-
fail(`the plan's ${scenes.length} scenes do not match the ${under.timeline.scenes.length} scenes of the video to draw over (by id or in order)`);
|
|
313
|
-
}
|
|
314
|
-
sceneFrames = fromUnder;
|
|
315
|
-
}
|
|
316
|
-
else {
|
|
317
|
-
// Scenes share the video evenly, on whole frames, so every scene starts on a frame.
|
|
318
|
-
sceneFrames = scenes.map((_, i) => Math.round((i * frameCount) / scenes.length));
|
|
319
|
-
sceneFrames.push(frameCount);
|
|
320
|
-
}
|
|
210
|
+
// Scenes share the video evenly, on whole frames, so every scene starts on a frame.
|
|
211
|
+
const sceneFrames = scenes.map((_, i) => Math.round((i * frameCount) / scenes.length));
|
|
212
|
+
sceneFrames.push(frameCount);
|
|
321
213
|
const values = raw.values ?? {};
|
|
322
214
|
if (!isObject(values))
|
|
323
215
|
fail('values should be an object');
|
|
324
|
-
if (
|
|
216
|
+
if (JSON.stringify(values).length > 64 * 1024)
|
|
325
217
|
fail('values is larger than 64 KB');
|
|
326
|
-
let captionZone = null;
|
|
327
|
-
if (raw.caption_zone !== undefined && raw.caption_zone !== null) {
|
|
328
|
-
captionZone = (0, timing_1.clipZone)(raw.caption_zone, design);
|
|
329
|
-
if (!captionZone)
|
|
330
|
-
fail(`caption_zone lies outside the ${design.width}x${design.height} page`);
|
|
331
|
-
if (!(0, timing_1.zoneOnVideo)(captionZone, scale, output))
|
|
332
|
-
fail(`caption_zone is less than a pixel of the ${output.width}x${output.height} video`);
|
|
333
|
-
}
|
|
334
|
-
const endCardScenes = typeof raw.end_card_scenes === 'number' ? raw.end_card_scenes : 0;
|
|
335
|
-
if (endCardScenes > scenes.length)
|
|
336
|
-
fail(`end_card_scenes is ${endCardScenes}, but there are only ${scenes.length} scenes`);
|
|
337
|
-
const speech = speechIn ?? under?.timeline.speech ?? [];
|
|
338
218
|
return {
|
|
339
219
|
template,
|
|
340
220
|
frames,
|
|
@@ -350,15 +230,6 @@ function readInputs(raw, ctx, measured = {}) {
|
|
|
350
230
|
output,
|
|
351
231
|
scale,
|
|
352
232
|
values,
|
|
353
|
-
under,
|
|
354
|
-
speech,
|
|
355
|
-
words: (0, timing_1.wordsByScene)(speech, sceneFrames, fps),
|
|
356
|
-
captionZone,
|
|
357
|
-
endCardScenes,
|
|
358
|
-
skip: raw.skip_blank === true && scenes.every(timing_1.isBlankScene),
|
|
359
|
-
media: mediaOf(raw.media, fail),
|
|
360
|
-
footage: footageOf(raw.footage, fail),
|
|
361
|
-
facts: raw.facts === true,
|
|
362
233
|
};
|
|
363
234
|
}
|
|
364
235
|
//# sourceMappingURL=inputs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inputs.js","sourceRoot":"","sources":["../../../src/kit/maker/inputs.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"inputs.js","sourceRoot":"","sources":["../../../src/kit/maker/inputs.ts"],"names":[],"mappings":"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"}
|
package/dist/kit/maker/make.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import type { FileRef, PartContext, Timeline } from '../part-interface';
|
|
2
|
-
import { type MakerSpec } from './inputs';
|
|
3
2
|
/** What the maker gives back; the part returns the first three. */
|
|
4
3
|
export interface MakerResult {
|
|
5
4
|
video: FileRef;
|
|
@@ -8,31 +7,13 @@ export interface MakerResult {
|
|
|
8
7
|
/** sha256 of every captured frame, in order. */
|
|
9
8
|
frameHashes: string[];
|
|
10
9
|
}
|
|
11
|
-
type MakerContext = Pick<PartContext, 'workDir' | 'tmpDir' | 'tools' | 'browser' | 'progress' | 'log' | 'error' | 'signal' | 'file'
|
|
12
|
-
/** The part's folder; its assets/sfx bank is read only when the page marks sound cues. */
|
|
13
|
-
part?: Pick<PartContext['part'], 'dir'>;
|
|
14
|
-
};
|
|
15
|
-
/** Where the page drew the brand's logo, in the page's CSS pixels. */
|
|
16
|
-
export interface LogoRect {
|
|
17
|
-
x: number;
|
|
18
|
-
y: number;
|
|
19
|
-
w: number;
|
|
20
|
-
h: number;
|
|
21
|
-
}
|
|
22
|
-
export declare function timelineOf(spec: MakerSpec, logo: LogoRect | null): Timeline;
|
|
10
|
+
type MakerContext = Pick<PartContext, 'workDir' | 'tmpDir' | 'tools' | 'browser' | 'progress' | 'log' | 'error' | 'signal' | 'file'>;
|
|
23
11
|
export interface MakerOptions {
|
|
24
12
|
/** Working space the maker may use, in bytes: page files, frames, segments and the video. */
|
|
25
13
|
diskLimitBytes?: number;
|
|
26
14
|
}
|
|
27
15
|
/** The working space html-frames may use; part.json's needs.disk_mb says the same. */
|
|
28
16
|
export declare const DISK_LIMIT_MB = 1024;
|
|
29
|
-
/** The video, refusing a step that skip_blank would leave empty. */
|
|
30
17
|
export declare function makeVideo(rawInputs: unknown, ctx: MakerContext, options?: MakerOptions): Promise<MakerResult>;
|
|
31
|
-
/**
|
|
32
|
-
* What the part runs: the video, or null when skip_blank is on and no scene
|
|
33
|
-
* has on-screen text or a line (the step then gives no outputs, and the kit
|
|
34
|
-
* leaves out every reference to them).
|
|
35
|
-
*/
|
|
36
|
-
export declare function makeOrSkip(rawInputs: unknown, ctx: MakerContext, options?: MakerOptions): Promise<MakerResult | null>;
|
|
37
18
|
export {};
|
|
38
19
|
//# sourceMappingURL=make.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"make.d.ts","sourceRoot":"","sources":["../../../src/kit/maker/make.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,OAAO,EAAW,WAAW,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"make.d.ts","sourceRoot":"","sources":["../../../src/kit/maker/make.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,OAAO,EAAW,WAAW,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAMjF,mEAAmE;AACnE,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,QAAQ,CAAC;IACnB,gDAAgD;IAChD,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAKD,KAAK,YAAY,GAAG,IAAI,CAAC,WAAW,EAAE,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,UAAU,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC,CAAC;AAsErI,MAAM,WAAW,YAAY;IAC3B,6FAA6F;IAC7F,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,sFAAsF;AACtF,eAAO,MAAM,aAAa,OAAO,CAAC;AASlC,wBAAsB,SAAS,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,CAkKvH"}
|
package/dist/kit/maker/make.js
CHANGED
|
@@ -34,9 +34,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.DISK_LIMIT_MB = void 0;
|
|
37
|
-
exports.timelineOf = timelineOf;
|
|
38
37
|
exports.makeVideo = makeVideo;
|
|
39
|
-
exports.makeOrSkip = makeOrSkip;
|
|
40
38
|
// The web video maker: lays out a style's frame page with the plan's scenes,
|
|
41
39
|
// products and brand in the kit's Chromium, moves its virtual clock one frame
|
|
42
40
|
// at a time, captures each frame and encodes them with the kit's ffmpeg.
|
|
@@ -47,33 +45,25 @@ const node_crypto_1 = require("node:crypto");
|
|
|
47
45
|
const promises_1 = require("node:fs/promises");
|
|
48
46
|
const path = __importStar(require("node:path"));
|
|
49
47
|
const node_url_1 = require("node:url");
|
|
50
|
-
const cues_1 = require("./cues");
|
|
51
48
|
const encode_1 = require("./encode");
|
|
52
49
|
const images_1 = require("./images");
|
|
53
50
|
const inputs_1 = require("./inputs");
|
|
54
51
|
const page_1 = require("./page");
|
|
55
|
-
const timing_1 = require("./timing");
|
|
56
|
-
const under_1 = require("./under");
|
|
57
52
|
/** One frame may take this long before the maker gives up on the page. */
|
|
58
53
|
const FRAME_TIMEOUT_MS = 60_000;
|
|
59
54
|
function timelineOf(spec, logo) {
|
|
60
|
-
const
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
// The last end_card_scenes scenes are the end card (over a video, this replaces its own).
|
|
73
|
-
if (spec.endCardScenes > 0) {
|
|
74
|
-
timeline.end_card = { start_s: spec.sceneFrames[spec.scenes.length - spec.endCardScenes] / spec.fps, end_s: size.duration_s };
|
|
75
|
-
}
|
|
76
|
-
const zones = [];
|
|
55
|
+
const timeline = {
|
|
56
|
+
duration_s: spec.frameCount / spec.fps,
|
|
57
|
+
width: spec.output.width,
|
|
58
|
+
height: spec.output.height,
|
|
59
|
+
fps: spec.fps,
|
|
60
|
+
scenes: spec.scenes.map((scene) => ({
|
|
61
|
+
id: scene.id,
|
|
62
|
+
start_s: spec.sceneFrames[scene.index] / spec.fps,
|
|
63
|
+
end_s: spec.sceneFrames[scene.index + 1] / spec.fps,
|
|
64
|
+
})),
|
|
65
|
+
speech: [],
|
|
66
|
+
};
|
|
77
67
|
// The logo's box on the output picture, so the final check can look for the logo where it is drawn.
|
|
78
68
|
if (logo) {
|
|
79
69
|
const k = spec.scale;
|
|
@@ -82,18 +72,8 @@ function timelineOf(spec, logo) {
|
|
|
82
72
|
const x1 = Math.min(spec.output.width, Math.ceil((logo.x + logo.w) * k));
|
|
83
73
|
const y1 = Math.min(spec.output.height, Math.ceil((logo.y + logo.h) * k));
|
|
84
74
|
if (x1 - x0 >= 4 && y1 - y0 >= 4)
|
|
85
|
-
|
|
75
|
+
timeline.safe_zones = [{ use: 'logo', x: x0, y: y0, w: x1 - x0, h: y1 - y0 }];
|
|
86
76
|
}
|
|
87
|
-
// The style's caption zone, in the video's pixels; it takes the place of any caption zone of a video drawn over.
|
|
88
|
-
const captions = spec.captionZone ? (0, timing_1.zoneOnVideo)(spec.captionZone, spec.scale, spec.output) : null;
|
|
89
|
-
if (captions)
|
|
90
|
-
zones.push({ use: 'captions', ...captions });
|
|
91
|
-
const carried = (timeline.safe_zones ?? []).filter((zone) => !spec.captionZone || zone.use !== 'captions');
|
|
92
|
-
const all = [...zones, ...carried].slice(0, 8);
|
|
93
|
-
if (all.length)
|
|
94
|
-
timeline.safe_zones = all;
|
|
95
|
-
else
|
|
96
|
-
delete timeline.safe_zones;
|
|
97
77
|
return timeline;
|
|
98
78
|
}
|
|
99
79
|
async function withTimeout(work, ms, onTimeout) {
|
|
@@ -138,29 +118,8 @@ function pageError(error) {
|
|
|
138
118
|
return null;
|
|
139
119
|
return { code: shape.code, detail: String(shape.detail ?? shape.message ?? '') };
|
|
140
120
|
}
|
|
141
|
-
/** The video, refusing a step that skip_blank would leave empty. */
|
|
142
121
|
async function makeVideo(rawInputs, ctx, options = {}) {
|
|
143
|
-
const
|
|
144
|
-
if (!made)
|
|
145
|
-
throw ctx.error('bad_input', 'no scene has on-screen text or a line, and skip_blank makes nothing for that');
|
|
146
|
-
return made;
|
|
147
|
-
}
|
|
148
|
-
/**
|
|
149
|
-
* What the part runs: the video, or null when skip_blank is on and no scene
|
|
150
|
-
* has on-screen text or a line (the step then gives no outputs, and the kit
|
|
151
|
-
* leaves out every reference to them).
|
|
152
|
-
*/
|
|
153
|
-
async function makeOrSkip(rawInputs, ctx, options = {}) {
|
|
154
|
-
// A video to draw over is measured first: its length is the video's length.
|
|
155
|
-
const underRef = rawInputs && typeof rawInputs === 'object' ? rawInputs.under : undefined;
|
|
156
|
-
let underInfo;
|
|
157
|
-
if ((0, inputs_1.isFileRef)(underRef) && underRef.media === 'video')
|
|
158
|
-
underInfo = await (0, under_1.probeUnder)(ctx.tools, underRef.path);
|
|
159
|
-
const spec = (0, inputs_1.readInputs)(rawInputs, ctx, { under: underInfo });
|
|
160
|
-
if (spec.skip) {
|
|
161
|
-
ctx.log.info('no scene has text; skip_blank makes nothing', { scenes: spec.scenes.length });
|
|
162
|
-
return null;
|
|
163
|
-
}
|
|
122
|
+
const spec = (0, inputs_1.readInputs)(rawInputs, ctx);
|
|
164
123
|
if (!ctx.browser)
|
|
165
124
|
throw ctx.error('needs_missing', 'the kit browser');
|
|
166
125
|
const stopIfAsked = () => {
|
|
@@ -200,7 +159,6 @@ async function makeOrSkip(rawInputs, ctx, options = {}) {
|
|
|
200
159
|
const total = spec.frameCount;
|
|
201
160
|
const frameHashes = [];
|
|
202
161
|
let logo = null;
|
|
203
|
-
let cues = [];
|
|
204
162
|
const segments = [];
|
|
205
163
|
const name = 'video.mp4';
|
|
206
164
|
const out = path.join(ctx.workDir, name);
|
|
@@ -210,21 +168,13 @@ async function makeOrSkip(rawInputs, ctx, options = {}) {
|
|
|
210
168
|
await (0, promises_1.rm)(dir, { recursive: true, force: true });
|
|
211
169
|
await (0, promises_1.mkdir)(dir, { recursive: true });
|
|
212
170
|
}
|
|
213
|
-
if (spec.under) {
|
|
214
|
-
const times = spec.scenes.map((scene) => ({ start_s: spec.sceneFrames[scene.index] / spec.fps, end_s: spec.sceneFrames[scene.index + 1] / spec.fps }));
|
|
215
|
-
spec.under.quietBands = await (0, under_1.quietBands)(ctx.tools, spec.under.file.path, spec.under.info, times, framesDir, spec.output);
|
|
216
|
-
}
|
|
217
171
|
const built = await (0, page_1.buildPage)(spec, pageDir, ctx, reserve);
|
|
218
172
|
const refusePage = (problems) => {
|
|
219
173
|
throw ctx.error('bad_input', problems.slice(0, 3).join(' '));
|
|
220
174
|
};
|
|
221
175
|
const encodeSegment = async (start, count, frameBytes) => {
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
const args = spec.under
|
|
225
|
-
? (0, under_1.alphaSegmentArgs)({ framesDir, framePattern: encode_1.FRAME_PATTERN, start, count, fps: spec.fps, out: segment })
|
|
226
|
-
: (0, encode_1.segmentArgs)({ tools: ctx.tools, framesDir, start, count, fps: spec.fps, out: segment });
|
|
227
|
-
await encodeInto(args, segment);
|
|
176
|
+
const segment = path.join(segmentsDir, `seg-${String(segments.length + 1).padStart(5, '0')}.mp4`);
|
|
177
|
+
await encodeInto((0, encode_1.segmentArgs)({ tools: ctx.tools, framesDir, start, count, fps: spec.fps, out: segment }), segment);
|
|
228
178
|
segments.push(segment);
|
|
229
179
|
for (let i = start; i < start + count; i++)
|
|
230
180
|
await (0, promises_1.rm)(path.join(framesDir, (0, encode_1.frameName)(i)), { force: true });
|
|
@@ -251,7 +201,6 @@ async function makeOrSkip(rawInputs, ctx, options = {}) {
|
|
|
251
201
|
if (started === null)
|
|
252
202
|
throw ctx.error('tool_failed', 'the frame page lost the kit runtime');
|
|
253
203
|
checked(started);
|
|
254
|
-
cues = (0, cues_1.cuesOf)(started);
|
|
255
204
|
let segmentStart = 0;
|
|
256
205
|
let segmentBytes = 0;
|
|
257
206
|
for (let index = 0; index < total; index++) {
|
|
@@ -263,7 +212,7 @@ async function makeOrSkip(rawInputs, ctx, options = {}) {
|
|
|
263
212
|
const file = path.join(framesDir, (0, encode_1.frameName)(index));
|
|
264
213
|
// Room for the largest PNG this size can be, then only what it took.
|
|
265
214
|
reserve(frameBound);
|
|
266
|
-
await page.screenshot({ path: file, type: 'png'
|
|
215
|
+
await page.screenshot({ path: file, type: 'png' });
|
|
267
216
|
const png = await (0, promises_1.readFile)(file);
|
|
268
217
|
release(frameBound - Math.min(frameBound, png.length));
|
|
269
218
|
if (png.length > frameBound)
|
|
@@ -306,62 +255,9 @@ async function makeOrSkip(rawInputs, ctx, options = {}) {
|
|
|
306
255
|
reserve(Buffer.byteLength(listText));
|
|
307
256
|
await (0, promises_1.writeFile)(list, listText);
|
|
308
257
|
await (0, promises_1.mkdir)(ctx.workDir, { recursive: true });
|
|
309
|
-
|
|
310
|
-
// With sound cues the picture is made first, then the cue mix is added to it as AAC in one more pass.
|
|
311
|
-
const picture = cues.length ? path.join(segmentsDir, 'picture.mp4') : out;
|
|
312
|
-
const underSound = !!spec.under?.info.hasAudio;
|
|
313
|
-
if (spec.under) {
|
|
314
|
-
const args = (0, under_1.compositeArgs)({
|
|
315
|
-
tools: ctx.tools,
|
|
316
|
-
under: spec.under.file.path,
|
|
317
|
-
list,
|
|
318
|
-
size: spec.output,
|
|
319
|
-
fps: spec.fps,
|
|
320
|
-
frames: total,
|
|
321
|
-
// With cues, the video's sound is the bed of the cue mix instead.
|
|
322
|
-
hasAudio: underSound && !cues.length,
|
|
323
|
-
out: picture,
|
|
324
|
-
});
|
|
325
|
-
await encodeInto(args, picture);
|
|
326
|
-
}
|
|
327
|
-
else
|
|
328
|
-
await encodeInto((0, encode_1.concatArgs)(list, picture), picture);
|
|
329
|
-
if (cues.length) {
|
|
330
|
-
stopIfAsked();
|
|
331
|
-
const partDir = ctx.part?.dir;
|
|
332
|
-
if (!partDir)
|
|
333
|
-
throw ctx.error('tool_failed', "the part's sound bank is missing");
|
|
334
|
-
const bank = new Map();
|
|
335
|
-
for (const sound of new Set(cues.map((cue) => cue.sound))) {
|
|
336
|
-
let pcm;
|
|
337
|
-
try {
|
|
338
|
-
pcm = (0, cues_1.readWav)(await (0, promises_1.readFile)(path.join(partDir, 'assets', 'sfx', `${sound}.wav`)));
|
|
339
|
-
}
|
|
340
|
-
catch {
|
|
341
|
-
pcm = null;
|
|
342
|
-
}
|
|
343
|
-
if (!pcm || pcm.rate !== 48_000)
|
|
344
|
-
throw ctx.error('tool_failed', `the part's sound "${sound}" could not be read`);
|
|
345
|
-
bank.set(sound, (0, cues_1.bankSound)(pcm));
|
|
346
|
-
}
|
|
347
|
-
let bed = null;
|
|
348
|
-
if (spec.under && underSound) {
|
|
349
|
-
const bedFile = path.join(segmentsDir, 'bed.wav');
|
|
350
|
-
await encodeInto((0, cues_1.bedArgs)({ under: spec.under.file.path, seconds, out: bedFile }), bedFile);
|
|
351
|
-
const pcm = (0, cues_1.readWav)(await (0, promises_1.readFile)(bedFile));
|
|
352
|
-
if (!pcm)
|
|
353
|
-
throw ctx.error('tool_failed', 'the sound of the video drawn over could not be read');
|
|
354
|
-
bed = pcm.channels;
|
|
355
|
-
}
|
|
356
|
-
const mix = (0, cues_1.mixCues)({ cues, bank, fps: spec.fps, frames: total, bed });
|
|
357
|
-
const mixFile = path.join(segmentsDir, 'cues.wav');
|
|
358
|
-
const bytes = (0, cues_1.wavBytes)(mix.channels);
|
|
359
|
-
reserve(bytes.length);
|
|
360
|
-
await (0, promises_1.writeFile)(mixFile, bytes);
|
|
361
|
-
await encodeInto((0, cues_1.muxArgs)({ tools: ctx.tools, picture, audio: mixFile, seconds, out }), out);
|
|
362
|
-
ctx.log.info('sound cues mixed', { cues: mix.placed.length, gain: mix.gain, sounds: cues_1.CUE_SOUNDS.filter((s) => bank.has(s)) });
|
|
363
|
-
}
|
|
258
|
+
await encodeInto((0, encode_1.concatArgs)(list, out), out);
|
|
364
259
|
// The output check: the size the aspect asks for, the length the frames make, H.264 in yuv420p.
|
|
260
|
+
const seconds = total / spec.fps;
|
|
365
261
|
const info = await ctx.tools.probe(out);
|
|
366
262
|
const streams = await ctx.tools.exec('ffprobe', ['-v', 'error', '-select_streams', 'v:0', '-show_entries', 'stream=pix_fmt,nb_frames', '-of', 'json', out]);
|
|
367
263
|
const stream = JSON.parse(streams.stdout).streams?.[0];
|
|
@@ -376,8 +272,6 @@ async function makeOrSkip(rawInputs, ctx, options = {}) {
|
|
|
376
272
|
wrong.push(`pixels ${stream?.pix_fmt ?? 'unknown'}`);
|
|
377
273
|
if (stream?.nb_frames !== undefined && Number(stream.nb_frames) !== total)
|
|
378
274
|
wrong.push(`${stream.nb_frames} frames`);
|
|
379
|
-
if (cues.length && !info.has_audio)
|
|
380
|
-
wrong.push('no sound for its cues');
|
|
381
275
|
if (wrong.length)
|
|
382
276
|
throw ctx.error('output_invalid', `the encoded video is wrong: ${wrong.join(', ')}`);
|
|
383
277
|
const video = await ctx.file(name, 'video');
|