@kvman/kvvideo 0.0.0-stage → 0.1.1
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/LICENSE +21 -0
- package/README.md +10 -2
- package/dist/api.d.ts +105 -0
- package/dist/api.d.ts.map +1 -0
- package/dist/api.js +2 -0
- package/dist/api.js.map +1 -0
- package/dist/brand/brand.d.ts +17 -0
- package/dist/brand/brand.d.ts.map +1 -0
- package/dist/brand/brand.js +44 -0
- package/dist/brand/brand.js.map +1 -0
- package/dist/browser/channels.d.ts +6 -0
- package/dist/browser/channels.d.ts.map +1 -0
- package/dist/browser/channels.js +5 -0
- package/dist/browser/channels.js.map +1 -0
- package/dist/browser/launch.d.ts +6 -0
- package/dist/browser/launch.d.ts.map +1 -0
- package/dist/browser/launch.js +14 -0
- package/dist/browser/launch.js.map +1 -0
- package/dist/browser/start-browser.d.ts +5 -0
- package/dist/browser/start-browser.d.ts.map +1 -0
- package/dist/browser/start-browser.js +17 -0
- package/dist/browser/start-browser.js.map +1 -0
- package/dist/compose/ass-file.d.ts +17 -0
- package/dist/compose/ass-file.d.ts.map +1 -0
- package/dist/compose/ass-file.js +65 -0
- package/dist/compose/ass-file.js.map +1 -0
- package/dist/compose/background.d.ts +23 -0
- package/dist/compose/background.d.ts.map +1 -0
- package/dist/compose/background.js +31 -0
- package/dist/compose/background.js.map +1 -0
- package/dist/compose/camera.d.ts +32 -0
- package/dist/compose/camera.d.ts.map +1 -0
- package/dist/compose/camera.js +98 -0
- package/dist/compose/camera.js.map +1 -0
- package/dist/compose/caption-font.d.ts +8 -0
- package/dist/compose/caption-font.d.ts.map +1 -0
- package/dist/compose/caption-font.js +24 -0
- package/dist/compose/caption-font.js.map +1 -0
- package/dist/compose/compose-drawing.d.ts +19 -0
- package/dist/compose/compose-drawing.d.ts.map +1 -0
- package/dist/compose/compose-drawing.js +38 -0
- package/dist/compose/compose-drawing.js.map +1 -0
- package/dist/compose/compose-input.d.ts +187 -0
- package/dist/compose/compose-input.d.ts.map +1 -0
- package/dist/compose/compose-input.js +76 -0
- package/dist/compose/compose-input.js.map +1 -0
- package/dist/compose/compose-plan.d.ts +36 -0
- package/dist/compose/compose-plan.d.ts.map +1 -0
- package/dist/compose/compose-plan.js +55 -0
- package/dist/compose/compose-plan.js.map +1 -0
- package/dist/compose/compose-size.d.ts +50 -0
- package/dist/compose/compose-size.d.ts.map +1 -0
- package/dist/compose/compose-size.js +72 -0
- package/dist/compose/compose-size.js.map +1 -0
- package/dist/compose/drawn-images.d.ts +19 -0
- package/dist/compose/drawn-images.d.ts.map +1 -0
- package/dist/compose/drawn-images.js +75 -0
- package/dist/compose/drawn-images.js.map +1 -0
- package/dist/compose/final-pass.d.ts +34 -0
- package/dist/compose/final-pass.d.ts.map +1 -0
- package/dist/compose/final-pass.js +106 -0
- package/dist/compose/final-pass.js.map +1 -0
- package/dist/compose/frame-layout.d.ts +30 -0
- package/dist/compose/frame-layout.d.ts.map +1 -0
- package/dist/compose/frame-layout.js +33 -0
- package/dist/compose/frame-layout.js.map +1 -0
- package/dist/compose/overlays.d.ts +20 -0
- package/dist/compose/overlays.d.ts.map +1 -0
- package/dist/compose/overlays.js +30 -0
- package/dist/compose/overlays.js.map +1 -0
- package/dist/compose/page-again.d.ts +26 -0
- package/dist/compose/page-again.d.ts.map +1 -0
- package/dist/compose/page-again.js +50 -0
- package/dist/compose/page-again.js.map +1 -0
- package/dist/compose/player-copies.d.ts +10 -0
- package/dist/compose/player-copies.d.ts.map +1 -0
- package/dist/compose/player-copies.js +34 -0
- package/dist/compose/player-copies.js.map +1 -0
- package/dist/compose/register-compose.d.ts +3 -0
- package/dist/compose/register-compose.d.ts.map +1 -0
- package/dist/compose/register-compose.js +151 -0
- package/dist/compose/register-compose.js.map +1 -0
- package/dist/compose/render.d.ts +25 -0
- package/dist/compose/render.d.ts.map +1 -0
- package/dist/compose/render.js +61 -0
- package/dist/compose/render.js.map +1 -0
- package/dist/compose/scene-args.d.ts +37 -0
- package/dist/compose/scene-args.d.ts.map +1 -0
- package/dist/compose/scene-args.js +103 -0
- package/dist/compose/scene-args.js.map +1 -0
- package/dist/compose/scene-look.d.ts +31 -0
- package/dist/compose/scene-look.d.ts.map +1 -0
- package/dist/compose/scene-look.js +46 -0
- package/dist/compose/scene-look.js.map +1 -0
- package/dist/compose/scene-plan.d.ts +26 -0
- package/dist/compose/scene-plan.d.ts.map +1 -0
- package/dist/compose/scene-plan.js +34 -0
- package/dist/compose/scene-plan.js.map +1 -0
- package/dist/compose/sound-effects.d.ts +23 -0
- package/dist/compose/sound-effects.d.ts.map +1 -0
- package/dist/compose/sound-effects.js +40 -0
- package/dist/compose/sound-effects.js.map +1 -0
- package/dist/compose/srt.d.ts +3 -0
- package/dist/compose/srt.d.ts.map +1 -0
- package/dist/compose/srt.js +10 -0
- package/dist/compose/srt.js.map +1 -0
- package/dist/compose/transitions.d.ts +16 -0
- package/dist/compose/transitions.d.ts.map +1 -0
- package/dist/compose/transitions.js +38 -0
- package/dist/compose/transitions.js.map +1 -0
- package/dist/connector.d.ts +132 -0
- package/dist/connector.d.ts.map +1 -0
- package/dist/connector.js +63 -0
- package/dist/connector.js.map +1 -0
- package/dist/files/answer-path.d.ts +3 -0
- package/dist/files/answer-path.d.ts.map +1 -0
- package/dist/files/answer-path.js +6 -0
- package/dist/files/answer-path.js.map +1 -0
- package/dist/files/place-output.d.ts +8 -0
- package/dist/files/place-output.d.ts.map +1 -0
- package/dist/files/place-output.js +24 -0
- package/dist/files/place-output.js.map +1 -0
- package/dist/files/sidecar.d.ts +209 -0
- package/dist/files/sidecar.d.ts.map +1 -0
- package/dist/files/sidecar.js +66 -0
- package/dist/files/sidecar.js.map +1 -0
- package/dist/files/workspace-paths.d.ts +7 -0
- package/dist/files/workspace-paths.d.ts.map +1 -0
- package/dist/files/workspace-paths.js +48 -0
- package/dist/files/workspace-paths.js.map +1 -0
- package/dist/fonts/bundled-fonts.d.ts +10 -0
- package/dist/fonts/bundled-fonts.d.ts.map +1 -0
- package/dist/fonts/bundled-fonts.js +10 -0
- package/dist/fonts/bundled-fonts.js.map +1 -0
- package/dist/fonts/font-family.d.ts +2 -0
- package/dist/fonts/font-family.d.ts.map +1 -0
- package/dist/fonts/font-family.js +43 -0
- package/dist/fonts/font-family.js.map +1 -0
- package/dist/fonts/register-fonts.d.ts +3 -0
- package/dist/fonts/register-fonts.d.ts.map +1 -0
- package/dist/fonts/register-fonts.js +12 -0
- package/dist/fonts/register-fonts.js.map +1 -0
- package/dist/guide.d.ts +3 -0
- package/dist/guide.d.ts.map +1 -0
- package/dist/guide.js +6 -0
- package/dist/guide.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +30 -0
- package/dist/index.js.map +1 -0
- package/dist/narration/alignment.d.ts +15 -0
- package/dist/narration/alignment.d.ts.map +1 -0
- package/dist/narration/alignment.js +21 -0
- package/dist/narration/alignment.js.map +1 -0
- package/dist/narration/captions.d.ts +28 -0
- package/dist/narration/captions.d.ts.map +1 -0
- package/dist/narration/captions.js +70 -0
- package/dist/narration/captions.js.map +1 -0
- package/dist/narration/join-args.d.ts +3 -0
- package/dist/narration/join-args.d.ts.map +1 -0
- package/dist/narration/join-args.js +19 -0
- package/dist/narration/join-args.js.map +1 -0
- package/dist/narration/narration-cache.d.ts +25 -0
- package/dist/narration/narration-cache.d.ts.map +1 -0
- package/dist/narration/narration-cache.js +36 -0
- package/dist/narration/narration-cache.js.map +1 -0
- package/dist/narration/piper.d.ts +4 -0
- package/dist/narration/piper.d.ts.map +1 -0
- package/dist/narration/piper.js +13 -0
- package/dist/narration/piper.js.map +1 -0
- package/dist/narration/pronunciations.d.ts +11 -0
- package/dist/narration/pronunciations.d.ts.map +1 -0
- package/dist/narration/pronunciations.js +40 -0
- package/dist/narration/pronunciations.js.map +1 -0
- package/dist/narration/register-narration.d.ts +25 -0
- package/dist/narration/register-narration.d.ts.map +1 -0
- package/dist/narration/register-narration.js +103 -0
- package/dist/narration/register-narration.js.map +1 -0
- package/dist/narration/register-voice.d.ts +27 -0
- package/dist/narration/register-voice.d.ts.map +1 -0
- package/dist/narration/register-voice.js +82 -0
- package/dist/narration/register-voice.js.map +1 -0
- package/dist/narration/sentence-speaker.d.ts +35 -0
- package/dist/narration/sentence-speaker.d.ts.map +1 -0
- package/dist/narration/sentence-speaker.js +44 -0
- package/dist/narration/sentence-speaker.js.map +1 -0
- package/dist/narration/speech-services.d.ts +39 -0
- package/dist/narration/speech-services.d.ts.map +1 -0
- package/dist/narration/speech-services.js +67 -0
- package/dist/narration/speech-services.js.map +1 -0
- package/dist/narration/voice-args.d.ts +3 -0
- package/dist/narration/voice-args.d.ts.map +1 -0
- package/dist/narration/voice-args.js +10 -0
- package/dist/narration/voice-args.js.map +1 -0
- package/dist/problems.d.ts +12 -0
- package/dist/problems.d.ts.map +1 -0
- package/dist/problems.js +19 -0
- package/dist/problems.js.map +1 -0
- package/dist/programs/kill-tree.d.ts +16 -0
- package/dist/programs/kill-tree.d.ts.map +1 -0
- package/dist/programs/kill-tree.js +28 -0
- package/dist/programs/kill-tree.js.map +1 -0
- package/dist/programs/media-duration.d.ts +22 -0
- package/dist/programs/media-duration.d.ts.map +1 -0
- package/dist/programs/media-duration.js +23 -0
- package/dist/programs/media-duration.js.map +1 -0
- package/dist/programs/piped-program.d.ts +7 -0
- package/dist/programs/piped-program.d.ts.map +1 -0
- package/dist/programs/piped-program.js +45 -0
- package/dist/programs/piped-program.js.map +1 -0
- package/dist/programs/programs.d.ts +6 -0
- package/dist/programs/programs.d.ts.map +1 -0
- package/dist/programs/programs.js +6 -0
- package/dist/programs/programs.js.map +1 -0
- package/dist/programs/run-program.d.ts +23 -0
- package/dist/programs/run-program.d.ts.map +1 -0
- package/dist/programs/run-program.js +47 -0
- package/dist/programs/run-program.js.map +1 -0
- package/dist/record/address.d.ts +5 -0
- package/dist/record/address.d.ts.map +1 -0
- package/dist/record/address.js +26 -0
- package/dist/record/address.js.map +1 -0
- package/dist/record/cursor-script.d.ts +3 -0
- package/dist/record/cursor-script.d.ts.map +1 -0
- package/dist/record/cursor-script.js +59 -0
- package/dist/record/cursor-script.js.map +1 -0
- package/dist/record/encoder-args.d.ts +3 -0
- package/dist/record/encoder-args.d.ts.map +1 -0
- package/dist/record/encoder-args.js +13 -0
- package/dist/record/encoder-args.js.map +1 -0
- package/dist/record/frame-writer.d.ts +8 -0
- package/dist/record/frame-writer.d.ts.map +1 -0
- package/dist/record/frame-writer.js +30 -0
- package/dist/record/frame-writer.js.map +1 -0
- package/dist/record/motion.d.ts +19 -0
- package/dist/record/motion.d.ts.map +1 -0
- package/dist/record/motion.js +59 -0
- package/dist/record/motion.js.map +1 -0
- package/dist/record/narration-cues.d.ts +14 -0
- package/dist/record/narration-cues.d.ts.map +1 -0
- package/dist/record/narration-cues.js +12 -0
- package/dist/record/narration-cues.js.map +1 -0
- package/dist/record/own-port.d.ts +2 -0
- package/dist/record/own-port.d.ts.map +1 -0
- package/dist/record/own-port.js +23 -0
- package/dist/record/own-port.js.map +1 -0
- package/dist/record/page-ready.d.ts +4 -0
- package/dist/record/page-ready.d.ts.map +1 -0
- package/dist/record/page-ready.js +15 -0
- package/dist/record/page-ready.js.map +1 -0
- package/dist/record/page-route.d.ts +13 -0
- package/dist/record/page-route.d.ts.map +1 -0
- package/dist/record/page-route.js +64 -0
- package/dist/record/page-route.js.map +1 -0
- package/dist/record/pointer.d.ts +8 -0
- package/dist/record/pointer.d.ts.map +1 -0
- package/dist/record/pointer.js +24 -0
- package/dist/record/pointer.js.map +1 -0
- package/dist/record/recorder.d.ts +34 -0
- package/dist/record/recorder.d.ts.map +1 -0
- package/dist/record/recorder.js +99 -0
- package/dist/record/recorder.js.map +1 -0
- package/dist/record/register-record.d.ts +3 -0
- package/dist/record/register-record.d.ts.map +1 -0
- package/dist/record/register-record.js +83 -0
- package/dist/record/register-record.js.map +1 -0
- package/dist/record/run-step.d.ts +20 -0
- package/dist/record/run-step.d.ts.map +1 -0
- package/dist/record/run-step.js +69 -0
- package/dist/record/run-step.js.map +1 -0
- package/dist/record/screencast.d.ts +9 -0
- package/dist/record/screencast.d.ts.map +1 -0
- package/dist/record/screencast.js +38 -0
- package/dist/record/screencast.js.map +1 -0
- package/dist/record/steps.d.ts +124 -0
- package/dist/record/steps.d.ts.map +1 -0
- package/dist/record/steps.js +47 -0
- package/dist/record/steps.js.map +1 -0
- package/dist/register-with-kvcoder.d.ts +3 -0
- package/dist/register-with-kvcoder.d.ts.map +1 -0
- package/dist/register-with-kvcoder.js +15 -0
- package/dist/register-with-kvcoder.js.map +1 -0
- package/dist/review/analysis.d.ts +19 -0
- package/dist/review/analysis.d.ts.map +1 -0
- package/dist/review/analysis.js +36 -0
- package/dist/review/analysis.js.map +1 -0
- package/dist/review/frames.d.ts +9 -0
- package/dist/review/frames.d.ts.map +1 -0
- package/dist/review/frames.js +28 -0
- package/dist/review/frames.js.map +1 -0
- package/dist/review/register-review.d.ts +24 -0
- package/dist/review/register-review.d.ts.map +1 -0
- package/dist/review/register-review.js +81 -0
- package/dist/review/register-review.js.map +1 -0
- package/dist/review/sheet-args.d.ts +11 -0
- package/dist/review/sheet-args.d.ts.map +1 -0
- package/dist/review/sheet-args.js +24 -0
- package/dist/review/sheet-args.js.map +1 -0
- package/dist/settings.d.ts +33 -0
- package/dist/settings.d.ts.map +1 -0
- package/dist/settings.js +29 -0
- package/dist/settings.js.map +1 -0
- package/dist/setup/browser-readiness.d.ts +14 -0
- package/dist/setup/browser-readiness.d.ts.map +1 -0
- package/dist/setup/browser-readiness.js +16 -0
- package/dist/setup/browser-readiness.js.map +1 -0
- package/dist/setup/ffmpeg-readiness.d.ts +19 -0
- package/dist/setup/ffmpeg-readiness.d.ts.map +1 -0
- package/dist/setup/ffmpeg-readiness.js +33 -0
- package/dist/setup/ffmpeg-readiness.js.map +1 -0
- package/dist/setup/narration-readiness.d.ts +21 -0
- package/dist/setup/narration-readiness.d.ts.map +1 -0
- package/dist/setup/narration-readiness.js +18 -0
- package/dist/setup/narration-readiness.js.map +1 -0
- package/dist/setup/register-setup.d.ts +3 -0
- package/dist/setup/register-setup.d.ts.map +1 -0
- package/dist/setup/register-setup.js +51 -0
- package/dist/setup/register-setup.js.map +1 -0
- package/dist/ui.d.ts +3 -0
- package/dist/ui.d.ts.map +1 -0
- package/dist/ui.js +26 -0
- package/dist/ui.js.map +1 -0
- package/dist/video-start.d.ts +3 -0
- package/dist/video-start.d.ts.map +1 -0
- package/dist/video-start.js +28 -0
- package/dist/video-start.js.map +1 -0
- package/dist/web/components/player.css +2 -0
- package/dist/web/components/player.js +55 -0
- package/docs/guide.md +28 -0
- package/fonts/Amiri-Bold.ttf +0 -0
- package/fonts/IBMPlexSansArabic-Bold.ttf +0 -0
- package/fonts/Lato-Bold.ttf +0 -0
- package/fonts/OFL-Amiri.txt +94 -0
- package/fonts/OFL-IBMPlexSansArabic.txt +93 -0
- package/fonts/OFL-Lato.txt +93 -0
- package/fonts/OFL-Poppins.txt +93 -0
- package/fonts/Poppins-Bold.ttf +0 -0
- package/locales/ar.json +48 -0
- package/locales/en.json +48 -0
- package/package.json +73 -3
- package/sounds/SOURCES.md +13 -0
- package/sounds/click.wav +0 -0
- package/sounds/keys.wav +0 -0
- package/sounds/pop.wav +0 -0
- package/sounds/whoosh.wav +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"camera.js","sourceRoot":"","sources":["../../src/compose/camera.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export type CaptionFont = {
|
|
2
|
+
family: string;
|
|
3
|
+
file: string;
|
|
4
|
+
};
|
|
5
|
+
/** A letter of the Arabic script. */
|
|
6
|
+
export declare const arabicLetter: RegExp;
|
|
7
|
+
export declare function captionFont(root: string, named: string | undefined, texts: readonly string[]): CaptionFont;
|
|
8
|
+
//# sourceMappingURL=caption-font.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"caption-font.d.ts","sourceRoot":"","sources":["../../src/compose/caption-font.ts"],"names":[],"mappings":"AAWA,MAAM,MAAM,WAAW,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3D,qCAAqC;AACrC,eAAO,MAAM,YAAY,QAAyE,CAAC;AAOnG,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,WAAW,CAS1G"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { readFileSync } from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { bundledFonts, fontsFolder } from "../fonts/bundled-fonts.js";
|
|
4
|
+
import { fontFamily } from "../fonts/font-family.js";
|
|
5
|
+
import { inputPath } from "../files/workspace-paths.js";
|
|
6
|
+
import { invalid } from "../problems.js";
|
|
7
|
+
/** A letter of the Arabic script. */
|
|
8
|
+
export const arabicLetter = /[\u0600-\u06ff\u0750-\u077f\u08a0-\u08ff\ufb50-\ufdff\ufe70-\ufeff]/u;
|
|
9
|
+
function bundled(name) {
|
|
10
|
+
const font = bundledFonts.find((candidate) => candidate.name === name);
|
|
11
|
+
return font === undefined ? undefined : { family: font.name, file: path.join(fontsFolder, font.file) };
|
|
12
|
+
}
|
|
13
|
+
export function captionFont(root, named, texts) {
|
|
14
|
+
const name = named ?? (texts.some((text) => arabicLetter.test(text)) ? 'IBM Plex Sans Arabic' : 'Poppins');
|
|
15
|
+
const font = bundled(name);
|
|
16
|
+
if (font !== undefined)
|
|
17
|
+
return font;
|
|
18
|
+
if (/\.(ttf|otf)$/i.test(name)) {
|
|
19
|
+
const file = inputPath(root, name, ['.ttf', '.otf']);
|
|
20
|
+
return { family: fontFamily(readFileSync(file), name), file };
|
|
21
|
+
}
|
|
22
|
+
throw invalid(`There is no bundled font ${name}. The bundled fonts are ${bundledFonts.map((candidate) => candidate.name).join(', ')}; or name a .ttf or .otf file in the workspace.`, { font: name, fonts: bundledFonts.map((candidate) => candidate.name) });
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=caption-font.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"caption-font.js","sourceRoot":"","sources":["../../src/compose/caption-font.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAQzC,qCAAqC;AACrC,MAAM,CAAC,MAAM,YAAY,GAAG,sEAAsE,CAAC;AAEnG,SAAS,OAAO,CAAC,IAAY;IAC3B,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IACvE,OAAO,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AACzG,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,KAAyB,EAAE,KAAwB;IAC3F,MAAM,IAAI,GAAG,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC3G,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACpC,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;QACrD,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC;IAChE,CAAC;IACD,MAAM,OAAO,CAAC,4BAA4B,IAAI,2BAA2B,YAAY,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,iDAAiD,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAChQ,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Brand } from '../brand/brand.ts';
|
|
2
|
+
import { type Painter } from './drawn-images.ts';
|
|
3
|
+
import type { ScenePicture } from './compose-plan.ts';
|
|
4
|
+
import type { SceneDrawn } from './scene-args.ts';
|
|
5
|
+
export declare const defaultAccent = "#FFD54A";
|
|
6
|
+
/** Whether a scene needs the browser to draw anything. */
|
|
7
|
+
export declare function needsDrawing(picture: ScenePicture): boolean;
|
|
8
|
+
export type DrawingContext = {
|
|
9
|
+
root: string;
|
|
10
|
+
folder: string;
|
|
11
|
+
picture: {
|
|
12
|
+
width: number;
|
|
13
|
+
height: number;
|
|
14
|
+
};
|
|
15
|
+
brand: Brand | null;
|
|
16
|
+
painter: Painter;
|
|
17
|
+
};
|
|
18
|
+
export declare function drawScene(context: DrawingContext, number: number, picture: ScenePicture): Promise<SceneDrawn>;
|
|
19
|
+
//# sourceMappingURL=compose-drawing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compose-drawing.d.ts","sourceRoot":"","sources":["../../src/compose/compose-drawing.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE/C,OAAO,EAAoD,KAAK,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACnG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAMlD,eAAO,MAAM,aAAa,YAAY,CAAC;AAEvC,0DAA0D;AAC1D,wBAAgB,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAE3D;AAED,MAAM,MAAM,cAAc,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC;AAEjJ,wBAAsB,SAAS,CAAC,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,CAyBnH"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import { captionFont } from "./caption-font.js";
|
|
3
|
+
import { calloutHtml, chromeHtml, highlightHtml, maskHtml } from "./drawn-images.js";
|
|
4
|
+
// The images a scene's frame and overlays need (plan 16 §16.8; ADR 0115, 36 and 60), drawn by the browser into the
|
|
5
|
+
// work folder: a window's or a phone's chrome and the clip's mask at the picture's size, and each callout and
|
|
6
|
+
// highlight at the recording's own size. A blur needs no image.
|
|
7
|
+
export const defaultAccent = '#FFD54A';
|
|
8
|
+
/** Whether a scene needs the browser to draw anything. */
|
|
9
|
+
export function needsDrawing(picture) {
|
|
10
|
+
return picture.layout !== undefined || picture.look.overlays.some((overlay) => overlay.kind !== 'blur');
|
|
11
|
+
}
|
|
12
|
+
export async function drawScene(context, number, picture) {
|
|
13
|
+
const name = (part) => `scene-${String(number)}-${part}.png`;
|
|
14
|
+
const at = (file) => path.join(context.folder, file);
|
|
15
|
+
const { layout, source } = picture;
|
|
16
|
+
let chrome;
|
|
17
|
+
let mask;
|
|
18
|
+
if (layout !== undefined) {
|
|
19
|
+
chrome = name('chrome');
|
|
20
|
+
mask = name('mask');
|
|
21
|
+
await context.painter.draw(at(chrome), context.picture, chromeHtml(layout), true);
|
|
22
|
+
await context.painter.draw(at(mask), { width: layout.screen.width, height: layout.screen.height }, maskHtml({ width: layout.screen.width, height: layout.screen.height }, layout.radius), false);
|
|
23
|
+
}
|
|
24
|
+
const overlayImages = [];
|
|
25
|
+
for (const [index, overlay] of picture.look.overlays.entries()) {
|
|
26
|
+
if (overlay.kind === 'blur' || source === undefined) {
|
|
27
|
+
overlayImages.push(undefined);
|
|
28
|
+
continue;
|
|
29
|
+
}
|
|
30
|
+
const file = name(`overlay-${String(index + 1)}`);
|
|
31
|
+
const colour = context.brand?.colors.primary ?? defaultAccent;
|
|
32
|
+
const html = overlay.kind === 'highlight' ? highlightHtml(overlay.box, picture.look.scale) : calloutHtml(source, overlay.box, overlay.text ?? '', colour, captionFont(context.root, context.brand?.font ?? undefined, [overlay.text ?? '']));
|
|
33
|
+
await context.painter.draw(at(file), source, html, true);
|
|
34
|
+
overlayImages.push(file);
|
|
35
|
+
}
|
|
36
|
+
return { layout, chrome, mask, overlayImages };
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=compose-drawing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compose-drawing.js","sourceRoot":"","sources":["../../src/compose/compose-drawing.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
import { z } from '@kvman/sdk';
|
|
2
|
+
export declare const overlaySchema: z.ZodObject<{
|
|
3
|
+
kind: z.ZodEnum<{
|
|
4
|
+
callout: "callout";
|
|
5
|
+
highlight: "highlight";
|
|
6
|
+
blur: "blur";
|
|
7
|
+
}>;
|
|
8
|
+
step: z.ZodExactOptional<z.ZodNumber>;
|
|
9
|
+
box: z.ZodExactOptional<z.ZodObject<{
|
|
10
|
+
x: z.ZodNumber;
|
|
11
|
+
y: z.ZodNumber;
|
|
12
|
+
width: z.ZodNumber;
|
|
13
|
+
height: z.ZodNumber;
|
|
14
|
+
}, z.core.$strict>>;
|
|
15
|
+
text: z.ZodExactOptional<z.ZodString>;
|
|
16
|
+
fromMs: z.ZodNumber;
|
|
17
|
+
toMs: z.ZodNumber;
|
|
18
|
+
}, z.core.$strict>;
|
|
19
|
+
/** A mark on a recorded page. */
|
|
20
|
+
export type Overlay = z.output<typeof overlaySchema>;
|
|
21
|
+
export declare const sceneSchema: z.ZodObject<{
|
|
22
|
+
clip: z.ZodString;
|
|
23
|
+
from: z.ZodExactOptional<z.ZodNumber>;
|
|
24
|
+
to: z.ZodExactOptional<z.ZodNumber>;
|
|
25
|
+
narration: z.ZodExactOptional<z.ZodString>;
|
|
26
|
+
captions: z.ZodExactOptional<z.ZodArray<z.ZodObject<{
|
|
27
|
+
text: z.ZodString;
|
|
28
|
+
startMs: z.ZodNumber;
|
|
29
|
+
endMs: z.ZodNumber;
|
|
30
|
+
words: z.ZodExactOptional<z.ZodArray<z.ZodObject<{
|
|
31
|
+
text: z.ZodString;
|
|
32
|
+
startMs: z.ZodNumber;
|
|
33
|
+
endMs: z.ZodNumber;
|
|
34
|
+
}, z.core.$strict>>>;
|
|
35
|
+
}, z.core.$strict>>>;
|
|
36
|
+
durationMs: z.ZodExactOptional<z.ZodNumber>;
|
|
37
|
+
frame: z.ZodExactOptional<z.ZodEnum<{
|
|
38
|
+
window: "window";
|
|
39
|
+
phone: "phone";
|
|
40
|
+
none: "none";
|
|
41
|
+
}>>;
|
|
42
|
+
background: z.ZodExactOptional<z.ZodString>;
|
|
43
|
+
camera: z.ZodExactOptional<z.ZodEnum<{
|
|
44
|
+
none: "none";
|
|
45
|
+
auto: "auto";
|
|
46
|
+
}>>;
|
|
47
|
+
overlays: z.ZodExactOptional<z.ZodArray<z.ZodObject<{
|
|
48
|
+
kind: z.ZodEnum<{
|
|
49
|
+
callout: "callout";
|
|
50
|
+
highlight: "highlight";
|
|
51
|
+
blur: "blur";
|
|
52
|
+
}>;
|
|
53
|
+
step: z.ZodExactOptional<z.ZodNumber>;
|
|
54
|
+
box: z.ZodExactOptional<z.ZodObject<{
|
|
55
|
+
x: z.ZodNumber;
|
|
56
|
+
y: z.ZodNumber;
|
|
57
|
+
width: z.ZodNumber;
|
|
58
|
+
height: z.ZodNumber;
|
|
59
|
+
}, z.core.$strict>>;
|
|
60
|
+
text: z.ZodExactOptional<z.ZodString>;
|
|
61
|
+
fromMs: z.ZodNumber;
|
|
62
|
+
toMs: z.ZodNumber;
|
|
63
|
+
}, z.core.$strict>>>;
|
|
64
|
+
transition: z.ZodExactOptional<z.ZodObject<{
|
|
65
|
+
kind: z.ZodEnum<{
|
|
66
|
+
cut: "cut";
|
|
67
|
+
crossfade: "crossfade";
|
|
68
|
+
"fade-black": "fade-black";
|
|
69
|
+
slide: "slide";
|
|
70
|
+
}>;
|
|
71
|
+
toward: z.ZodExactOptional<z.ZodEnum<{
|
|
72
|
+
start: "start";
|
|
73
|
+
end: "end";
|
|
74
|
+
up: "up";
|
|
75
|
+
down: "down";
|
|
76
|
+
}>>;
|
|
77
|
+
ms: z.ZodExactOptional<z.ZodNumber>;
|
|
78
|
+
}, z.core.$strict>>;
|
|
79
|
+
sounds: z.ZodExactOptional<z.ZodBoolean>;
|
|
80
|
+
}, z.core.$strict>;
|
|
81
|
+
/** One scene of a composition. */
|
|
82
|
+
export type Scene = z.output<typeof sceneSchema>;
|
|
83
|
+
export declare const captionStyles: readonly ["boxed", "outline", "highlight", "off"];
|
|
84
|
+
/** How captions look. */
|
|
85
|
+
export type CaptionStyleName = (typeof captionStyles)[number];
|
|
86
|
+
export declare const composeInputSchema: z.ZodObject<{
|
|
87
|
+
file: z.ZodString;
|
|
88
|
+
scenes: z.ZodArray<z.ZodObject<{
|
|
89
|
+
clip: z.ZodString;
|
|
90
|
+
from: z.ZodExactOptional<z.ZodNumber>;
|
|
91
|
+
to: z.ZodExactOptional<z.ZodNumber>;
|
|
92
|
+
narration: z.ZodExactOptional<z.ZodString>;
|
|
93
|
+
captions: z.ZodExactOptional<z.ZodArray<z.ZodObject<{
|
|
94
|
+
text: z.ZodString;
|
|
95
|
+
startMs: z.ZodNumber;
|
|
96
|
+
endMs: z.ZodNumber;
|
|
97
|
+
words: z.ZodExactOptional<z.ZodArray<z.ZodObject<{
|
|
98
|
+
text: z.ZodString;
|
|
99
|
+
startMs: z.ZodNumber;
|
|
100
|
+
endMs: z.ZodNumber;
|
|
101
|
+
}, z.core.$strict>>>;
|
|
102
|
+
}, z.core.$strict>>>;
|
|
103
|
+
durationMs: z.ZodExactOptional<z.ZodNumber>;
|
|
104
|
+
frame: z.ZodExactOptional<z.ZodEnum<{
|
|
105
|
+
window: "window";
|
|
106
|
+
phone: "phone";
|
|
107
|
+
none: "none";
|
|
108
|
+
}>>;
|
|
109
|
+
background: z.ZodExactOptional<z.ZodString>;
|
|
110
|
+
camera: z.ZodExactOptional<z.ZodEnum<{
|
|
111
|
+
none: "none";
|
|
112
|
+
auto: "auto";
|
|
113
|
+
}>>;
|
|
114
|
+
overlays: z.ZodExactOptional<z.ZodArray<z.ZodObject<{
|
|
115
|
+
kind: z.ZodEnum<{
|
|
116
|
+
callout: "callout";
|
|
117
|
+
highlight: "highlight";
|
|
118
|
+
blur: "blur";
|
|
119
|
+
}>;
|
|
120
|
+
step: z.ZodExactOptional<z.ZodNumber>;
|
|
121
|
+
box: z.ZodExactOptional<z.ZodObject<{
|
|
122
|
+
x: z.ZodNumber;
|
|
123
|
+
y: z.ZodNumber;
|
|
124
|
+
width: z.ZodNumber;
|
|
125
|
+
height: z.ZodNumber;
|
|
126
|
+
}, z.core.$strict>>;
|
|
127
|
+
text: z.ZodExactOptional<z.ZodString>;
|
|
128
|
+
fromMs: z.ZodNumber;
|
|
129
|
+
toMs: z.ZodNumber;
|
|
130
|
+
}, z.core.$strict>>>;
|
|
131
|
+
transition: z.ZodExactOptional<z.ZodObject<{
|
|
132
|
+
kind: z.ZodEnum<{
|
|
133
|
+
cut: "cut";
|
|
134
|
+
crossfade: "crossfade";
|
|
135
|
+
"fade-black": "fade-black";
|
|
136
|
+
slide: "slide";
|
|
137
|
+
}>;
|
|
138
|
+
toward: z.ZodExactOptional<z.ZodEnum<{
|
|
139
|
+
start: "start";
|
|
140
|
+
end: "end";
|
|
141
|
+
up: "up";
|
|
142
|
+
down: "down";
|
|
143
|
+
}>>;
|
|
144
|
+
ms: z.ZodExactOptional<z.ZodNumber>;
|
|
145
|
+
}, z.core.$strict>>;
|
|
146
|
+
sounds: z.ZodExactOptional<z.ZodBoolean>;
|
|
147
|
+
}, z.core.$strict>>;
|
|
148
|
+
width: z.ZodExactOptional<z.ZodNumber>;
|
|
149
|
+
height: z.ZodExactOptional<z.ZodNumber>;
|
|
150
|
+
extraSizes: z.ZodExactOptional<z.ZodArray<z.ZodObject<{
|
|
151
|
+
width: z.ZodNumber;
|
|
152
|
+
height: z.ZodNumber;
|
|
153
|
+
}, z.core.$strict>>>;
|
|
154
|
+
direction: z.ZodExactOptional<z.ZodEnum<{
|
|
155
|
+
ltr: "ltr";
|
|
156
|
+
rtl: "rtl";
|
|
157
|
+
}>>;
|
|
158
|
+
sounds: z.ZodExactOptional<z.ZodBoolean>;
|
|
159
|
+
captions: z.ZodExactOptional<z.ZodObject<{
|
|
160
|
+
style: z.ZodExactOptional<z.ZodEnum<{
|
|
161
|
+
highlight: "highlight";
|
|
162
|
+
boxed: "boxed";
|
|
163
|
+
outline: "outline";
|
|
164
|
+
off: "off";
|
|
165
|
+
}>>;
|
|
166
|
+
font: z.ZodExactOptional<z.ZodString>;
|
|
167
|
+
size: z.ZodExactOptional<z.ZodNumber>;
|
|
168
|
+
position: z.ZodExactOptional<z.ZodEnum<{
|
|
169
|
+
bottom: "bottom";
|
|
170
|
+
top: "top";
|
|
171
|
+
}>>;
|
|
172
|
+
}, z.core.$strict>>;
|
|
173
|
+
replace: z.ZodExactOptional<z.ZodBoolean>;
|
|
174
|
+
}, z.core.$strict>;
|
|
175
|
+
export declare const composeOutputSchema: z.ZodObject<{
|
|
176
|
+
file: z.ZodString;
|
|
177
|
+
durationMs: z.ZodNumber;
|
|
178
|
+
bytes: z.ZodNumber;
|
|
179
|
+
fileId: z.ZodNullable<z.ZodString>;
|
|
180
|
+
poster: z.ZodString;
|
|
181
|
+
posterFileId: z.ZodNullable<z.ZodString>;
|
|
182
|
+
others: z.ZodArray<z.ZodObject<{
|
|
183
|
+
file: z.ZodString;
|
|
184
|
+
bytes: z.ZodNumber;
|
|
185
|
+
}, z.core.$strip>>;
|
|
186
|
+
}, z.core.$strip>;
|
|
187
|
+
//# sourceMappingURL=compose-input.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compose-input.d.ts","sourceRoot":"","sources":["../../src/compose/compose-input.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,YAAY,CAAC;AAqB/B,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;kBAatB,CAAC;AAEL,iCAAiC;AACjC,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,aAAa,CAAC,CAAC;AAErD,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAsByG,CAAC;AAElI,kCAAkC;AAClC,MAAM,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,WAAW,CAAC,CAAC;AAEjD,eAAO,MAAM,aAAa,mDAAoD,CAAC;AAE/E,yBAAyB;AACzB,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAE9D,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAiB7B,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;;;;;;;;iBAAoS,CAAC"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { z } from '@kvman/sdk';
|
|
2
|
+
// `compose`'s input and answer (plan 16 §16.8; ADR 0115, 7, 10, 11, and 18).
|
|
3
|
+
const workspaceFile = z.string().min(1).max(1000);
|
|
4
|
+
const side = z.number().int().min(320).max(1920).refine((pixels) => pixels % 2 === 0, 'A side is an even number of pixels.');
|
|
5
|
+
const ms = z.number().int().nonnegative();
|
|
6
|
+
const wordSchema = z.strictObject({ text: z.string().min(1).max(200), startMs: ms, endMs: ms });
|
|
7
|
+
const captionSchema = z
|
|
8
|
+
.strictObject({
|
|
9
|
+
text: z.string().min(1).max(200),
|
|
10
|
+
startMs: ms.describe('From the scene start.'),
|
|
11
|
+
endMs: z.number().int().positive(),
|
|
12
|
+
words: z.array(wordSchema).max(40).describe('Each word with its times, as narrate answers them with ElevenLabs.').exactOptional(),
|
|
13
|
+
})
|
|
14
|
+
.refine((caption) => caption.endMs > caption.startMs, 'A caption ends after it starts.');
|
|
15
|
+
const boxSchema = z.strictObject({ x: z.number().int(), y: z.number().int(), width: z.number().int().positive(), height: z.number().int().positive() });
|
|
16
|
+
export const overlaySchema = z
|
|
17
|
+
.strictObject({
|
|
18
|
+
kind: z.enum(['callout', 'highlight', 'blur']).describe('callout: a label pointing at the place; highlight: dim all but it; blur: hide it.'),
|
|
19
|
+
step: z.number().int().min(1).describe("A step of the clip's recording, from 1, whose target it marks.").exactOptional(),
|
|
20
|
+
box: boxSchema.describe('A place on the recorded page, in its CSS pixels.').exactOptional(),
|
|
21
|
+
text: z.string().min(1).max(80).describe("A callout's label.").exactOptional(),
|
|
22
|
+
fromMs: ms.describe('From the scene start.'),
|
|
23
|
+
toMs: z.number().int().positive(),
|
|
24
|
+
})
|
|
25
|
+
.superRefine((overlay, context) => {
|
|
26
|
+
if ((overlay.step === undefined) === (overlay.box === undefined))
|
|
27
|
+
context.addIssue({ code: 'custom', path: ['step'], message: 'Give exactly one of step and box.' });
|
|
28
|
+
if (overlay.kind === 'callout' && overlay.text === undefined)
|
|
29
|
+
context.addIssue({ code: 'custom', path: ['text'], message: 'A callout has text.' });
|
|
30
|
+
if (overlay.toMs <= overlay.fromMs)
|
|
31
|
+
context.addIssue({ code: 'custom', path: ['toMs'], message: 'An overlay ends after it starts.' });
|
|
32
|
+
});
|
|
33
|
+
export const sceneSchema = z
|
|
34
|
+
.strictObject({
|
|
35
|
+
clip: workspaceFile.describe('A video (.webm, .mp4, .mov, .mkv) or an image (.png, .jpg, .jpeg, .webp) in the workspace.'),
|
|
36
|
+
from: ms.describe("Where the video's part starts, in ms.").exactOptional(),
|
|
37
|
+
to: z.number().int().positive().describe("Where the video's part ends, in ms.").exactOptional(),
|
|
38
|
+
narration: workspaceFile.describe('An audio file (.mp3, .wav, .m4a) in the workspace, as narrate or voice wrote it.').exactOptional(),
|
|
39
|
+
captions: z.array(captionSchema).max(200).describe("The narration's captions; left out, the narration's own.").exactOptional(),
|
|
40
|
+
durationMs: z.number().int().min(100).max(600_000).describe("The scene's length; else its narration's, else its video part's.").exactOptional(),
|
|
41
|
+
frame: z.enum(['window', 'phone', 'none']).describe('How the clip is shown: window by default for a recorded website, phone for one on a phone, else none.').exactOptional(),
|
|
42
|
+
background: z.string().min(1).max(1000).describe("#RRGGBB or an image file of the workspace behind the clip; left out, the brand's.").exactOptional(),
|
|
43
|
+
camera: z.enum(['auto', 'none']).describe('auto by default for a recorded website (zooms to clicks and typing) and an image (a slow zoom).').exactOptional(),
|
|
44
|
+
overlays: z.array(overlaySchema).max(20).describe('Callouts, highlights, and blurs on a recorded page.').exactOptional(),
|
|
45
|
+
transition: z
|
|
46
|
+
.strictObject({
|
|
47
|
+
kind: z.enum(['cut', 'crossfade', 'fade-black', 'slide']).describe('crossfade by default.'),
|
|
48
|
+
toward: z.enum(['start', 'end', 'up', 'down']).describe("A slide's way: start (the default) is left in an ltr video, right in an rtl one.").exactOptional(),
|
|
49
|
+
ms: z.number().int().min(0).max(2000).describe('Its length: 500 by default, 0 for a cut; at most half of each scene.').exactOptional(),
|
|
50
|
+
})
|
|
51
|
+
.describe('Into the next scene.')
|
|
52
|
+
.exactOptional(),
|
|
53
|
+
sounds: z.boolean().describe("false turns the scene's sound effects off.").exactOptional(),
|
|
54
|
+
})
|
|
55
|
+
.refine((scene) => scene.from === undefined || scene.to === undefined || scene.to > scene.from, 'A part ends after it starts.');
|
|
56
|
+
export const captionStyles = ['boxed', 'outline', 'highlight', 'off'];
|
|
57
|
+
export const composeInputSchema = z.strictObject({
|
|
58
|
+
file: workspaceFile.describe('The .mp4 file to write, in the workspace.'),
|
|
59
|
+
scenes: z.array(sceneSchema).min(1).max(100),
|
|
60
|
+
width: side.describe('The width in pixels, 1920 by default.').exactOptional(),
|
|
61
|
+
height: side.describe('The height in pixels, 1080 by default.').exactOptional(),
|
|
62
|
+
extraSizes: z.array(z.strictObject({ width: side, height: side })).max(2).describe('Up to 2 more sizes of the same video, as 1080 x 1920 or 1080 x 1080.').exactOptional(),
|
|
63
|
+
direction: z.enum(['ltr', 'rtl']).describe('The reading direction for slides; rtl by default when a caption has an Arabic letter.').exactOptional(),
|
|
64
|
+
sounds: z.boolean().describe('false turns all sound effects off.').exactOptional(),
|
|
65
|
+
captions: z
|
|
66
|
+
.strictObject({
|
|
67
|
+
style: z.enum(captionStyles).describe('boxed (the default), outline, highlight (word by word where words are timed), or off.').exactOptional(),
|
|
68
|
+
font: z.string().min(1).max(1000).describe("A bundled font (video fonts) or a .ttf or .otf file in the workspace; left out, the brand's.").exactOptional(),
|
|
69
|
+
size: z.number().int().min(12).max(200).describe('The text size in pixels; the height ÷ 18 by default.').exactOptional(),
|
|
70
|
+
position: z.enum(['bottom', 'top']).exactOptional(),
|
|
71
|
+
})
|
|
72
|
+
.exactOptional(),
|
|
73
|
+
replace: z.boolean().describe('Write over an existing file.').exactOptional(),
|
|
74
|
+
});
|
|
75
|
+
export const composeOutputSchema = z.object({ file: z.string(), durationMs: z.number().int().nonnegative(), bytes: z.number().int().nonnegative(), fileId: z.string().nullable(), poster: z.string(), posterFileId: z.string().nullable(), others: z.array(z.object({ file: z.string(), bytes: z.number().int().nonnegative() })) });
|
|
76
|
+
//# sourceMappingURL=compose-input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compose-input.js","sourceRoot":"","sources":["../../src/compose/compose-input.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { Brand } from '../brand/brand.ts';
|
|
2
|
+
import type { Caption } from '../narration/captions.ts';
|
|
3
|
+
import type { Program } from '../programs/run-program.ts';
|
|
4
|
+
import { type Background } from './background.ts';
|
|
5
|
+
import type { Scene } from './compose-input.ts';
|
|
6
|
+
import { type Layout, type Size } from './frame-layout.ts';
|
|
7
|
+
import { type Recording, type SceneLook } from './scene-look.ts';
|
|
8
|
+
import { type PlannedScene } from './scene-plan.ts';
|
|
9
|
+
export type ScenePicture = {
|
|
10
|
+
look: SceneLook;
|
|
11
|
+
background: Background;
|
|
12
|
+
layout: Layout | undefined;
|
|
13
|
+
source: Size | undefined;
|
|
14
|
+
captions: Caption[];
|
|
15
|
+
recording: Recording | undefined;
|
|
16
|
+
};
|
|
17
|
+
/** A scene's `background`, checked: a colour, or an image file of the workspace. */
|
|
18
|
+
export declare function backgroundInputOf(root: string, number: number, background: string | undefined): {
|
|
19
|
+
colour: string;
|
|
20
|
+
} | {
|
|
21
|
+
file: string;
|
|
22
|
+
} | undefined;
|
|
23
|
+
/** A scene's captions: its own, else its narration's sidecar's. */
|
|
24
|
+
export declare function captionsOf(scene: Scene, narration: string | undefined): Caption[];
|
|
25
|
+
/** The recording beside a clip, if it has one. */
|
|
26
|
+
export declare function recordingOf(clip: string): Recording | undefined;
|
|
27
|
+
export type PictureContext = {
|
|
28
|
+
root: string;
|
|
29
|
+
picture: Size;
|
|
30
|
+
brand: Brand | null;
|
|
31
|
+
captionsAtBottom: boolean;
|
|
32
|
+
ffprobe: Program;
|
|
33
|
+
signal: AbortSignal;
|
|
34
|
+
};
|
|
35
|
+
export declare function pictureOf(context: PictureContext, input: Scene, scene: PlannedScene): Promise<ScenePicture>;
|
|
36
|
+
//# sourceMappingURL=compose-plan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compose-plan.d.ts","sourceRoot":"","sources":["../../src/compose/compose-plan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAG/C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAExD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAE1D,OAAO,EAAgB,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAA6B,KAAK,MAAM,EAAE,KAAK,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACtF,OAAO,EAAsC,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACrG,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAMrE,MAAM,MAAM,YAAY,GAAG;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,UAAU,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,MAAM,EAAE,IAAI,GAAG,SAAS,CAAC;IAAC,QAAQ,EAAE,OAAO,EAAE,CAAC;IAAC,SAAS,EAAE,SAAS,GAAG,SAAS,CAAA;CAAE,CAAC;AAIpL,oFAAoF;AACpF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAOjJ;AAED,mEAAmE;AACnE,wBAAgB,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,EAAE,CAKjF;AAED,kDAAkD;AAClD,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAG/D;AASD,MAAM,MAAM,cAAc,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAAC,gBAAgB,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,WAAW,CAAA;CAAE,CAAC;AAEpJ,wBAAsB,SAAS,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAWjH"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { readSidecar } from "../files/sidecar.js";
|
|
2
|
+
import { inputPath } from "../files/workspace-paths.js";
|
|
3
|
+
import { mediaSize } from "../programs/media-duration.js";
|
|
4
|
+
import { invalid, kvvideoProblem } from "../problems.js";
|
|
5
|
+
import { backgroundOf } from "./background.js";
|
|
6
|
+
import { phoneLayout, windowLayout } from "./frame-layout.js";
|
|
7
|
+
import { defaultFrame, lookOf, overlayBoxes } from "./scene-look.js";
|
|
8
|
+
import { imageExtensions } from "./scene-plan.js";
|
|
9
|
+
const colourPattern = /^#[0-9a-fA-F]{6}$/;
|
|
10
|
+
/** A scene's `background`, checked: a colour, or an image file of the workspace. */
|
|
11
|
+
export function backgroundInputOf(root, number, background) {
|
|
12
|
+
if (background === undefined)
|
|
13
|
+
return undefined;
|
|
14
|
+
if (background.startsWith('#')) {
|
|
15
|
+
if (!colourPattern.test(background))
|
|
16
|
+
throw invalid(`Scene ${String(number)}'s background ${background} isn't #RRGGBB.`, { scene: number, background });
|
|
17
|
+
return { colour: background };
|
|
18
|
+
}
|
|
19
|
+
return { file: inputPath(root, background, imageExtensions) };
|
|
20
|
+
}
|
|
21
|
+
/** A scene's captions: its own, else its narration's sidecar's. */
|
|
22
|
+
export function captionsOf(scene, narration) {
|
|
23
|
+
if (scene.captions !== undefined)
|
|
24
|
+
return scene.captions;
|
|
25
|
+
if (narration === undefined)
|
|
26
|
+
return [];
|
|
27
|
+
const sidecar = readSidecar(narration);
|
|
28
|
+
return sidecar?.kind === 'narration' ? sidecar.captions : [];
|
|
29
|
+
}
|
|
30
|
+
/** The recording beside a clip, if it has one. */
|
|
31
|
+
export function recordingOf(clip) {
|
|
32
|
+
const sidecar = readSidecar(clip);
|
|
33
|
+
return sidecar?.kind === 'site' || sidecar?.kind === 'page' ? sidecar : undefined;
|
|
34
|
+
}
|
|
35
|
+
async function sourceSize(ffprobe, scene, recording, signal) {
|
|
36
|
+
if (recording !== undefined)
|
|
37
|
+
return { width: recording.width * recording.scale, height: recording.height * recording.scale };
|
|
38
|
+
const size = await mediaSize(ffprobe, scene.clip, signal);
|
|
39
|
+
if (!size.ok)
|
|
40
|
+
throw kvvideoProblem('RENDER_FAILED', `ffprobe couldn't read scene ${String(scene.number)}'s size: ${size.reason}`, { scene: scene.number, reason: size.reason });
|
|
41
|
+
return { width: size.width, height: size.height };
|
|
42
|
+
}
|
|
43
|
+
export async function pictureOf(context, input, scene) {
|
|
44
|
+
const recording = scene.kind === 'video' ? recordingOf(scene.clip) : undefined;
|
|
45
|
+
const background = backgroundOf(backgroundInputOf(context.root, scene.number, input.background), context.brand);
|
|
46
|
+
const captions = captionsOf(input, scene.narration);
|
|
47
|
+
const frame = input.frame ?? defaultFrame(recording);
|
|
48
|
+
const measured = frame !== 'none' || overlayBoxes(scene.number, input, recording).length > 0;
|
|
49
|
+
const source = measured ? await sourceSize(context.ffprobe, scene, recording, context.signal) : undefined;
|
|
50
|
+
const look = lookOf(scene.number, input, scene.kind, recording, source, scene.lengthMs);
|
|
51
|
+
const atBottom = context.captionsAtBottom && captions.length > 0;
|
|
52
|
+
const layout = source === undefined || look.frame === 'none' ? undefined : look.frame === 'phone' ? phoneLayout(context.picture, source) : windowLayout(context.picture, source, atBottom);
|
|
53
|
+
return { look, background, layout, source, captions, recording };
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=compose-plan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compose-plan.js","sourceRoot":"","sources":["../../src/compose/compose-plan.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { Browser } from 'playwright-core';
|
|
2
|
+
import type { Brand } from '../brand/brand.ts';
|
|
3
|
+
import type { Caption } from '../narration/captions.ts';
|
|
4
|
+
import type { Program } from '../programs/run-program.ts';
|
|
5
|
+
import type { CaptionLook } from './ass-file.ts';
|
|
6
|
+
import type { CaptionFont } from './caption-font.ts';
|
|
7
|
+
import type { Scene } from './compose-input.ts';
|
|
8
|
+
import type { Size } from './frame-layout.ts';
|
|
9
|
+
import type { PlannedScene } from './scene-plan.ts';
|
|
10
|
+
import type { Transition } from './transitions.ts';
|
|
11
|
+
export type Composition = {
|
|
12
|
+
root: string;
|
|
13
|
+
scenes: readonly Scene[];
|
|
14
|
+
planned: readonly PlannedScene[];
|
|
15
|
+
transitions: readonly Transition[];
|
|
16
|
+
starts: readonly number[];
|
|
17
|
+
durationMs: number;
|
|
18
|
+
direction: 'ltr' | 'rtl';
|
|
19
|
+
sounds: boolean;
|
|
20
|
+
brand: Brand | null;
|
|
21
|
+
captions: {
|
|
22
|
+
look: CaptionLook | 'off';
|
|
23
|
+
position: 'bottom' | 'top';
|
|
24
|
+
size: number | undefined;
|
|
25
|
+
highlight: string;
|
|
26
|
+
font: CaptionFont | undefined;
|
|
27
|
+
};
|
|
28
|
+
programs: {
|
|
29
|
+
ffmpeg: Program;
|
|
30
|
+
ffprobe: Program;
|
|
31
|
+
};
|
|
32
|
+
ownPort: number | null;
|
|
33
|
+
signal: AbortSignal;
|
|
34
|
+
browsers: {
|
|
35
|
+
drawing(): Promise<Browser>;
|
|
36
|
+
recording(): Promise<Browser>;
|
|
37
|
+
};
|
|
38
|
+
progress: {
|
|
39
|
+
scene(): void;
|
|
40
|
+
final(percent: number): void;
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
export type SizeResult = {
|
|
44
|
+
video: string;
|
|
45
|
+
poster: string;
|
|
46
|
+
srt: string | undefined;
|
|
47
|
+
captions: Caption[];
|
|
48
|
+
};
|
|
49
|
+
export declare function composeSize(composition: Composition, size: Size, folder: string): Promise<SizeResult>;
|
|
50
|
+
//# sourceMappingURL=compose-size.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compose-size.d.ts","sourceRoot":"","sources":["../../src/compose/compose-size.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAExD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAGhD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAI9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAGpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAKnD,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,KAAK,EAAE,CAAC;IACzB,OAAO,EAAE,SAAS,YAAY,EAAE,CAAC;IACjC,WAAW,EAAE,SAAS,UAAU,EAAE,CAAC;IACnC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,KAAK,GAAG,KAAK,CAAC;IACzB,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,QAAQ,EAAE;QAAE,IAAI,EAAE,WAAW,GAAG,KAAK,CAAC;QAAC,QAAQ,EAAE,QAAQ,GAAG,KAAK,CAAC;QAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,WAAW,GAAG,SAAS,CAAA;KAAE,CAAC;IAChJ,QAAQ,EAAE;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAChD,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,WAAW,CAAC;IACpB,QAAQ,EAAE;QAAE,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;QAAC,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC,CAAA;KAAE,CAAC;IACzE,QAAQ,EAAE;QAAE,KAAK,IAAI,IAAI,CAAC;QAAC,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;CAC3D,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,QAAQ,EAAE,OAAO,EAAE,CAAA;CAAE,CAAC;AAqBzG,wBAAsB,WAAW,CAAC,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CA6C3G"}
|