@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,55 @@
|
|
|
1
|
+
import { Fragment as e, computed as t, createCommentVNode as n, createElementBlock as r, createElementVNode as i, defineComponent as a, inject as o, openBlock as s, ref as c, renderList as l, toDisplayString as u, unref as d } from "vue";
|
|
2
|
+
//#region web/components/player.vue?vue&type=script&setup=true&lang.ts
|
|
3
|
+
var f = {
|
|
4
|
+
class: "kvvideo-player",
|
|
5
|
+
"data-test": "player"
|
|
6
|
+
}, p = { class: "kvvideo-player-head" }, m = {
|
|
7
|
+
class: "kvvideo-player-file",
|
|
8
|
+
dir: "auto",
|
|
9
|
+
"data-test": "file"
|
|
10
|
+
}, h = {
|
|
11
|
+
class: "kvvideo-player-length",
|
|
12
|
+
dir: "ltr",
|
|
13
|
+
"data-test": "length"
|
|
14
|
+
}, g = ["src", "poster"], _ = {
|
|
15
|
+
key: 1,
|
|
16
|
+
class: "kvvideo-player-unavailable",
|
|
17
|
+
"data-test": "unavailable"
|
|
18
|
+
}, v = {
|
|
19
|
+
key: 2,
|
|
20
|
+
class: "kvvideo-player-others",
|
|
21
|
+
"data-test": "others"
|
|
22
|
+
}, y = /* @__PURE__ */ a({
|
|
23
|
+
__name: "player",
|
|
24
|
+
props: {
|
|
25
|
+
payload: {},
|
|
26
|
+
output: {}
|
|
27
|
+
},
|
|
28
|
+
setup(a) {
|
|
29
|
+
let y = a, b = o("kvman");
|
|
30
|
+
if (b === void 0) throw Error("kvvideo components run inside kvwebui, which provides kvman.");
|
|
31
|
+
let { t: x, workspace: S } = b, C = c(!1), w = t(() => typeof y.output.file == "string" ? y.output.file : ""), T = t(() => typeof y.output.fileId == "string" ? y.output.fileId : void 0), E = (e) => `/api/files/${encodeURIComponent(e)}?workspaceId=${encodeURIComponent(S.value.id)}`, D = t(() => T.value === void 0 ? void 0 : E(T.value)), O = t(() => typeof y.output.posterFileId == "string" ? E(y.output.posterFileId) : void 0), k = t(() => Array.isArray(y.output.others) ? y.output.others.flatMap((e) => typeof e == "object" && e && "file" in e && typeof e.file == "string" ? [e.file] : []) : []), A = t(() => {
|
|
32
|
+
let e = Math.round((typeof y.output.durationMs == "number" ? y.output.durationMs : 0) / 1e3);
|
|
33
|
+
return `${String(Math.floor(e / 60))}:${String(e % 60).padStart(2, "0")}`;
|
|
34
|
+
});
|
|
35
|
+
return (t, a) => (s(), r("figure", f, [
|
|
36
|
+
i("figcaption", p, [i("span", m, u(w.value), 1), i("span", h, u(A.value), 1)]),
|
|
37
|
+
D.value !== void 0 && !C.value ? (s(), r("video", {
|
|
38
|
+
key: 0,
|
|
39
|
+
class: "kvvideo-player-video",
|
|
40
|
+
"data-test": "video",
|
|
41
|
+
src: D.value,
|
|
42
|
+
poster: O.value,
|
|
43
|
+
controls: "",
|
|
44
|
+
preload: "metadata",
|
|
45
|
+
onError: a[0] ||= (e) => C.value = !0
|
|
46
|
+
}, null, 40, g)) : (s(), r("p", _, u(d(x)("kvvideo.player.unavailable", { file: w.value })), 1)),
|
|
47
|
+
k.value.length > 0 ? (s(), r("ul", v, [(s(!0), r(e, null, l(k.value, (e) => (s(), r("li", {
|
|
48
|
+
key: e,
|
|
49
|
+
dir: "auto"
|
|
50
|
+
}, u(e), 1))), 128))])) : n("v-if", !0)
|
|
51
|
+
]));
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
//#endregion
|
|
55
|
+
export { y as default };
|
package/docs/guide.md
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
You can make any kind of video with the `video` connector: a lesson, an explainer, a tutorial of an app or a website, a promotion, an announcement, a story, a social clip. A video is composed, not generated: websites and HTML pages you write, recorded in the installed browser; the person's images and clips, and licensed ones from the web; a narration from a voice service or recorded by the person; captions; joined with ffmpeg. Make it polished unless the person asks otherwise: the script's "Look and sound" section lists your choices, and the person's agreement to the script covers them.
|
|
2
|
+
|
|
3
|
+
How a good video is made:
|
|
4
|
+
|
|
5
|
+
- **Story.** Fit the video to its kind, purpose, and audience: a lesson teaches step by step, a promotion leads to its offer, a story has its arc, a social clip hooks in its first seconds. Open with what the viewer gets, keep one idea per scene in a logical order, and end with the next step or a call to action. Show rather than tell: the narration explains what the picture can't, and on-screen text is a few words. No filler, repetition, or long still shots; scenes of 3 to 12 s unless the content needs more.
|
|
6
|
+
- **Look.** Use the workspace's brand (`video brand`). For the first video, take the colours, font, and logo from what the person gave or what the video is about (their app's or site's styles, their logo file), or design them for the video; list them in the script and save them with `video brand-set` once the person agrees. Keep colours, type, and style the same in every scene. Design each HTML scene with a clear hierarchy, alignment, contrast, and space, and keep important things inside the middle 90% of the frame. Draw titles, diagrams, charts, and illustrations as HTML, CSS, and SVG pages, and use the person's images and clips and licensed ones from the web for what drawing can't show; never generate images. Show a recorded website in a `window` frame, a phone site in a `phone` frame.
|
|
7
|
+
- **Motion.** Let `record` and `compose` move the pointer and the camera. In an HTML scene, animate with eased motion (an ease-out entrance of 300 to 600 ms, never linear), one thing moving at a time, and kinetic text only for the key words. Use `crossfade` between scenes, `slide` for a step forward in a sequence, and `fade-black` before the ending.
|
|
8
|
+
- **Text.** Short, correctly spelled, readable on its background, and in the video's language. Arabic text reads right to left in an Arabic font, with `dir="auto"` on every text element of an HTML scene.
|
|
9
|
+
- **Sound.** Narration in a clear, natural voice whose `tone` and `speed` fit the purpose; names said right through the pronunciation list (`kvvideo.narration.pronunciations`). Sound effects stay on unless the person asks otherwise. There is no music.
|
|
10
|
+
- **Accuracy and licences.** Say only what is true: what the person gave, what was recorded, or what a source read through a connector says; no invented numbers, features, quotes, or claims. Blur emails, keys, names, and other personal data on screen. A font, library, image, or clip from the web is used only under a licence that allows it, saved in the video's folder, with its source and licence written in the script and its credit in the end scene when the licence asks for one; pin a library's exact version.
|
|
11
|
+
- **Review.** Before telling the person the video is ready, run `video review` and look at every sheet for typos, cut-off or overlapping text, bad zooms, and empty frames; fix what is wrong, and compose again.
|
|
12
|
+
|
|
13
|
+
The steps:
|
|
14
|
+
|
|
15
|
+
1. Run `video check`. When something is missing, tell the person in plain words what to install or set, and stop until it is there: ffmpeg (with libass and libfreetype) from https://ffmpeg.org/download.html; Google Chrome or Microsoft Edge; a narration service chosen on kvvideo's extension page, with its key added there as a secret (`elevenlabs.apiKey` or `openai.apiKey`), or Piper (`pip install piper-tts`) with a voice file.
|
|
16
|
+
2. Gather what the video uses: the person's files, the sources its facts come from, and licensed media from the web. When it shows an app of the workspace, start the app in the background with `shell` and use its local address.
|
|
17
|
+
3. Write the script as a Markdown artifact: a "Look and sound" section (the shapes, the brand, the framing, the caption style, the transitions, the sound effects, and the voice: generated, with its service, tone, and speed, or recorded by the person, with what the examples cost), then one section per scene with its narration and what is on screen, then the media from the web with their sources and licences. Have the person agree to it before anything is narrated, since narration with ElevenLabs or OpenAI costs money.
|
|
18
|
+
4. For each scene, make the narration first: `narrate`; or, for the person's own voice, `narrate` each sentence as an example, `ask record` with one card per scene (each sentence a line, with the words to stress and where to pause), and `voice` with the takes it answers.
|
|
19
|
+
5. Write each HTML scene, then `record` each website and HTML scene with its `narration`, starting each action at its caption line with `atLine`. An image or a clip goes to `compose` as it is.
|
|
20
|
+
6. `compose`, then `review`, fix, and compose again. Tell the person where the file is; the chat shows a player.
|
|
21
|
+
|
|
22
|
+
Rules:
|
|
23
|
+
|
|
24
|
+
- A chat without `ask` (Decide for me) can't record the person's voice: use a generated one, and say so in the script.
|
|
25
|
+
- Narrate a sentence again only when it changed; the cache makes an unchanged one free.
|
|
26
|
+
- Put the parts of a video in their own folder, such as `videos/<name>/`, and the video beside it.
|
|
27
|
+
- When the person asks for a font, find it on the web, save its `.ttf` or `.otf` file in the workspace, and name that file.
|
|
28
|
+
- A target in `record` is a Playwright selector: prefer `role=button[name="Save"]` or `text=Save` to CSS classes.
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
Copyright 2010-2022 The Amiri Project Authors (https://github.com/aliftype/amiri).
|
|
2
|
+
|
|
3
|
+
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
|
4
|
+
This license is copied below, and is also available with a FAQ at:
|
|
5
|
+
https://openfontlicense.org/
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
-----------------------------------------------------------
|
|
9
|
+
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
|
10
|
+
-----------------------------------------------------------
|
|
11
|
+
|
|
12
|
+
PREAMBLE
|
|
13
|
+
The goals of the Open Font License (OFL) are to stimulate worldwide
|
|
14
|
+
development of collaborative font projects, to support the font creation
|
|
15
|
+
efforts of academic and linguistic communities, and to provide a free and
|
|
16
|
+
open framework in which fonts may be shared and improved in partnership
|
|
17
|
+
with others.
|
|
18
|
+
|
|
19
|
+
The OFL allows the licensed fonts to be used, studied, modified and
|
|
20
|
+
redistributed freely as long as they are not sold by themselves. The
|
|
21
|
+
fonts, including any derivative works, can be bundled, embedded,
|
|
22
|
+
redistributed and/or sold with any software provided that any reserved
|
|
23
|
+
names are not used by derivative works. The fonts and derivatives,
|
|
24
|
+
however, cannot be released under any other type of license. The
|
|
25
|
+
requirement for fonts to remain under this license does not apply
|
|
26
|
+
to any document created using the fonts or their derivatives.
|
|
27
|
+
|
|
28
|
+
DEFINITIONS
|
|
29
|
+
"Font Software" refers to the set of files released by the Copyright
|
|
30
|
+
Holder(s) under this license and clearly marked as such. This may
|
|
31
|
+
include source files, build scripts and documentation.
|
|
32
|
+
|
|
33
|
+
"Reserved Font Name" refers to any names specified as such after the
|
|
34
|
+
copyright statement(s).
|
|
35
|
+
|
|
36
|
+
"Original Version" refers to the collection of Font Software components as
|
|
37
|
+
distributed by the Copyright Holder(s).
|
|
38
|
+
|
|
39
|
+
"Modified Version" refers to any derivative made by adding to, deleting,
|
|
40
|
+
or substituting -- in part or in whole -- any of the components of the
|
|
41
|
+
Original Version, by changing formats or by porting the Font Software to a
|
|
42
|
+
new environment.
|
|
43
|
+
|
|
44
|
+
"Author" refers to any designer, engineer, programmer, technical
|
|
45
|
+
writer or other person who contributed to the Font Software.
|
|
46
|
+
|
|
47
|
+
PERMISSION & CONDITIONS
|
|
48
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
|
49
|
+
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
|
50
|
+
redistribute, and sell modified and unmodified copies of the Font
|
|
51
|
+
Software, subject to the following conditions:
|
|
52
|
+
|
|
53
|
+
1) Neither the Font Software nor any of its individual components,
|
|
54
|
+
in Original or Modified Versions, may be sold by itself.
|
|
55
|
+
|
|
56
|
+
2) Original or Modified Versions of the Font Software may be bundled,
|
|
57
|
+
redistributed and/or sold with any software, provided that each copy
|
|
58
|
+
contains the above copyright notice and this license. These can be
|
|
59
|
+
included either as stand-alone text files, human-readable headers or
|
|
60
|
+
in the appropriate machine-readable metadata fields within text or
|
|
61
|
+
binary files as long as those fields can be easily viewed by the user.
|
|
62
|
+
|
|
63
|
+
3) No Modified Version of the Font Software may use the Reserved Font
|
|
64
|
+
Name(s) unless explicit written permission is granted by the corresponding
|
|
65
|
+
Copyright Holder. This restriction only applies to the primary font name as
|
|
66
|
+
presented to the users.
|
|
67
|
+
|
|
68
|
+
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
|
69
|
+
Software shall not be used to promote, endorse or advertise any
|
|
70
|
+
Modified Version, except to acknowledge the contribution(s) of the
|
|
71
|
+
Copyright Holder(s) and the Author(s) or with their explicit written
|
|
72
|
+
permission.
|
|
73
|
+
|
|
74
|
+
5) The Font Software, modified or unmodified, in part or in whole,
|
|
75
|
+
must be distributed entirely under this license, and must not be
|
|
76
|
+
distributed under any other license. The requirement for fonts to
|
|
77
|
+
remain under this license does not apply to any document created
|
|
78
|
+
using the Font Software.
|
|
79
|
+
|
|
80
|
+
TERMINATION
|
|
81
|
+
This license becomes null and void if any of the above conditions are
|
|
82
|
+
not met.
|
|
83
|
+
|
|
84
|
+
DISCLAIMER
|
|
85
|
+
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
86
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
|
87
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
|
88
|
+
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
|
89
|
+
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
90
|
+
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
|
91
|
+
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
92
|
+
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
|
93
|
+
OTHER DEALINGS IN THE FONT SOFTWARE.
|
|
94
|
+
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
Copyright © 2017 IBM Corp. with Reserved Font Name "Plex"
|
|
2
|
+
|
|
3
|
+
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
|
4
|
+
|
|
5
|
+
This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
-----------------------------------------------------------
|
|
9
|
+
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
|
10
|
+
-----------------------------------------------------------
|
|
11
|
+
|
|
12
|
+
PREAMBLE
|
|
13
|
+
The goals of the Open Font License (OFL) are to stimulate worldwide
|
|
14
|
+
development of collaborative font projects, to support the font creation
|
|
15
|
+
efforts of academic and linguistic communities, and to provide a free and
|
|
16
|
+
open framework in which fonts may be shared and improved in partnership
|
|
17
|
+
with others.
|
|
18
|
+
|
|
19
|
+
The OFL allows the licensed fonts to be used, studied, modified and
|
|
20
|
+
redistributed freely as long as they are not sold by themselves. The
|
|
21
|
+
fonts, including any derivative works, can be bundled, embedded,
|
|
22
|
+
redistributed and/or sold with any software provided that any reserved
|
|
23
|
+
names are not used by derivative works. The fonts and derivatives,
|
|
24
|
+
however, cannot be released under any other type of license. The
|
|
25
|
+
requirement for fonts to remain under this license does not apply
|
|
26
|
+
to any document created using the fonts or their derivatives.
|
|
27
|
+
|
|
28
|
+
DEFINITIONS
|
|
29
|
+
"Font Software" refers to the set of files released by the Copyright
|
|
30
|
+
Holder(s) under this license and clearly marked as such. This may
|
|
31
|
+
include source files, build scripts and documentation.
|
|
32
|
+
|
|
33
|
+
"Reserved Font Name" refers to any names specified as such after the
|
|
34
|
+
copyright statement(s).
|
|
35
|
+
|
|
36
|
+
"Original Version" refers to the collection of Font Software components as
|
|
37
|
+
distributed by the Copyright Holder(s).
|
|
38
|
+
|
|
39
|
+
"Modified Version" refers to any derivative made by adding to, deleting,
|
|
40
|
+
or substituting -- in part or in whole -- any of the components of the
|
|
41
|
+
Original Version, by changing formats or by porting the Font Software to a
|
|
42
|
+
new environment.
|
|
43
|
+
|
|
44
|
+
"Author" refers to any designer, engineer, programmer, technical
|
|
45
|
+
writer or other person who contributed to the Font Software.
|
|
46
|
+
|
|
47
|
+
PERMISSION & CONDITIONS
|
|
48
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
|
49
|
+
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
|
50
|
+
redistribute, and sell modified and unmodified copies of the Font
|
|
51
|
+
Software, subject to the following conditions:
|
|
52
|
+
|
|
53
|
+
1) Neither the Font Software nor any of its individual components,
|
|
54
|
+
in Original or Modified Versions, may be sold by itself.
|
|
55
|
+
|
|
56
|
+
2) Original or Modified Versions of the Font Software may be bundled,
|
|
57
|
+
redistributed and/or sold with any software, provided that each copy
|
|
58
|
+
contains the above copyright notice and this license. These can be
|
|
59
|
+
included either as stand-alone text files, human-readable headers or
|
|
60
|
+
in the appropriate machine-readable metadata fields within text or
|
|
61
|
+
binary files as long as those fields can be easily viewed by the user.
|
|
62
|
+
|
|
63
|
+
3) No Modified Version of the Font Software may use the Reserved Font
|
|
64
|
+
Name(s) unless explicit written permission is granted by the corresponding
|
|
65
|
+
Copyright Holder. This restriction only applies to the primary font name as
|
|
66
|
+
presented to the users.
|
|
67
|
+
|
|
68
|
+
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
|
69
|
+
Software shall not be used to promote, endorse or advertise any
|
|
70
|
+
Modified Version, except to acknowledge the contribution(s) of the
|
|
71
|
+
Copyright Holder(s) and the Author(s) or with their explicit written
|
|
72
|
+
permission.
|
|
73
|
+
|
|
74
|
+
5) The Font Software, modified or unmodified, in part or in whole,
|
|
75
|
+
must be distributed entirely under this license, and must not be
|
|
76
|
+
distributed under any other license. The requirement for fonts to
|
|
77
|
+
remain under this license does not apply to any document created
|
|
78
|
+
using the Font Software.
|
|
79
|
+
|
|
80
|
+
TERMINATION
|
|
81
|
+
This license becomes null and void if any of the above conditions are
|
|
82
|
+
not met.
|
|
83
|
+
|
|
84
|
+
DISCLAIMER
|
|
85
|
+
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
86
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
|
87
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
|
88
|
+
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
|
89
|
+
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
90
|
+
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
|
91
|
+
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
92
|
+
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
|
93
|
+
OTHER DEALINGS IN THE FONT SOFTWARE.
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
Copyright (c) 2010-2014 by tyPoland Lukasz Dziedzic (team@latofonts.com) with Reserved Font Name "Lato"
|
|
2
|
+
|
|
3
|
+
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
|
4
|
+
This license is copied below, and is also available with a FAQ at:
|
|
5
|
+
http://scripts.sil.org/OFL
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
-----------------------------------------------------------
|
|
9
|
+
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
|
10
|
+
-----------------------------------------------------------
|
|
11
|
+
|
|
12
|
+
PREAMBLE
|
|
13
|
+
The goals of the Open Font License (OFL) are to stimulate worldwide
|
|
14
|
+
development of collaborative font projects, to support the font creation
|
|
15
|
+
efforts of academic and linguistic communities, and to provide a free and
|
|
16
|
+
open framework in which fonts may be shared and improved in partnership
|
|
17
|
+
with others.
|
|
18
|
+
|
|
19
|
+
The OFL allows the licensed fonts to be used, studied, modified and
|
|
20
|
+
redistributed freely as long as they are not sold by themselves. The
|
|
21
|
+
fonts, including any derivative works, can be bundled, embedded,
|
|
22
|
+
redistributed and/or sold with any software provided that any reserved
|
|
23
|
+
names are not used by derivative works. The fonts and derivatives,
|
|
24
|
+
however, cannot be released under any other type of license. The
|
|
25
|
+
requirement for fonts to remain under this license does not apply
|
|
26
|
+
to any document created using the fonts or their derivatives.
|
|
27
|
+
|
|
28
|
+
DEFINITIONS
|
|
29
|
+
"Font Software" refers to the set of files released by the Copyright
|
|
30
|
+
Holder(s) under this license and clearly marked as such. This may
|
|
31
|
+
include source files, build scripts and documentation.
|
|
32
|
+
|
|
33
|
+
"Reserved Font Name" refers to any names specified as such after the
|
|
34
|
+
copyright statement(s).
|
|
35
|
+
|
|
36
|
+
"Original Version" refers to the collection of Font Software components as
|
|
37
|
+
distributed by the Copyright Holder(s).
|
|
38
|
+
|
|
39
|
+
"Modified Version" refers to any derivative made by adding to, deleting,
|
|
40
|
+
or substituting -- in part or in whole -- any of the components of the
|
|
41
|
+
Original Version, by changing formats or by porting the Font Software to a
|
|
42
|
+
new environment.
|
|
43
|
+
|
|
44
|
+
"Author" refers to any designer, engineer, programmer, technical
|
|
45
|
+
writer or other person who contributed to the Font Software.
|
|
46
|
+
|
|
47
|
+
PERMISSION & CONDITIONS
|
|
48
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
|
49
|
+
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
|
50
|
+
redistribute, and sell modified and unmodified copies of the Font
|
|
51
|
+
Software, subject to the following conditions:
|
|
52
|
+
|
|
53
|
+
1) Neither the Font Software nor any of its individual components,
|
|
54
|
+
in Original or Modified Versions, may be sold by itself.
|
|
55
|
+
|
|
56
|
+
2) Original or Modified Versions of the Font Software may be bundled,
|
|
57
|
+
redistributed and/or sold with any software, provided that each copy
|
|
58
|
+
contains the above copyright notice and this license. These can be
|
|
59
|
+
included either as stand-alone text files, human-readable headers or
|
|
60
|
+
in the appropriate machine-readable metadata fields within text or
|
|
61
|
+
binary files as long as those fields can be easily viewed by the user.
|
|
62
|
+
|
|
63
|
+
3) No Modified Version of the Font Software may use the Reserved Font
|
|
64
|
+
Name(s) unless explicit written permission is granted by the corresponding
|
|
65
|
+
Copyright Holder. This restriction only applies to the primary font name as
|
|
66
|
+
presented to the users.
|
|
67
|
+
|
|
68
|
+
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
|
69
|
+
Software shall not be used to promote, endorse or advertise any
|
|
70
|
+
Modified Version, except to acknowledge the contribution(s) of the
|
|
71
|
+
Copyright Holder(s) and the Author(s) or with their explicit written
|
|
72
|
+
permission.
|
|
73
|
+
|
|
74
|
+
5) The Font Software, modified or unmodified, in part or in whole,
|
|
75
|
+
must be distributed entirely under this license, and must not be
|
|
76
|
+
distributed under any other license. The requirement for fonts to
|
|
77
|
+
remain under this license does not apply to any document created
|
|
78
|
+
using the Font Software.
|
|
79
|
+
|
|
80
|
+
TERMINATION
|
|
81
|
+
This license becomes null and void if any of the above conditions are
|
|
82
|
+
not met.
|
|
83
|
+
|
|
84
|
+
DISCLAIMER
|
|
85
|
+
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
86
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
|
87
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
|
88
|
+
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
|
89
|
+
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
90
|
+
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
|
91
|
+
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
92
|
+
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
|
93
|
+
OTHER DEALINGS IN THE FONT SOFTWARE.
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
Copyright 2020 The Poppins Project Authors (https://github.com/itfoundry/Poppins)
|
|
2
|
+
|
|
3
|
+
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
|
4
|
+
This license is copied below, and is also available with a FAQ at:
|
|
5
|
+
http://scripts.sil.org/OFL
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
-----------------------------------------------------------
|
|
9
|
+
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
|
10
|
+
-----------------------------------------------------------
|
|
11
|
+
|
|
12
|
+
PREAMBLE
|
|
13
|
+
The goals of the Open Font License (OFL) are to stimulate worldwide
|
|
14
|
+
development of collaborative font projects, to support the font creation
|
|
15
|
+
efforts of academic and linguistic communities, and to provide a free and
|
|
16
|
+
open framework in which fonts may be shared and improved in partnership
|
|
17
|
+
with others.
|
|
18
|
+
|
|
19
|
+
The OFL allows the licensed fonts to be used, studied, modified and
|
|
20
|
+
redistributed freely as long as they are not sold by themselves. The
|
|
21
|
+
fonts, including any derivative works, can be bundled, embedded,
|
|
22
|
+
redistributed and/or sold with any software provided that any reserved
|
|
23
|
+
names are not used by derivative works. The fonts and derivatives,
|
|
24
|
+
however, cannot be released under any other type of license. The
|
|
25
|
+
requirement for fonts to remain under this license does not apply
|
|
26
|
+
to any document created using the fonts or their derivatives.
|
|
27
|
+
|
|
28
|
+
DEFINITIONS
|
|
29
|
+
"Font Software" refers to the set of files released by the Copyright
|
|
30
|
+
Holder(s) under this license and clearly marked as such. This may
|
|
31
|
+
include source files, build scripts and documentation.
|
|
32
|
+
|
|
33
|
+
"Reserved Font Name" refers to any names specified as such after the
|
|
34
|
+
copyright statement(s).
|
|
35
|
+
|
|
36
|
+
"Original Version" refers to the collection of Font Software components as
|
|
37
|
+
distributed by the Copyright Holder(s).
|
|
38
|
+
|
|
39
|
+
"Modified Version" refers to any derivative made by adding to, deleting,
|
|
40
|
+
or substituting -- in part or in whole -- any of the components of the
|
|
41
|
+
Original Version, by changing formats or by porting the Font Software to a
|
|
42
|
+
new environment.
|
|
43
|
+
|
|
44
|
+
"Author" refers to any designer, engineer, programmer, technical
|
|
45
|
+
writer or other person who contributed to the Font Software.
|
|
46
|
+
|
|
47
|
+
PERMISSION & CONDITIONS
|
|
48
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
|
49
|
+
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
|
50
|
+
redistribute, and sell modified and unmodified copies of the Font
|
|
51
|
+
Software, subject to the following conditions:
|
|
52
|
+
|
|
53
|
+
1) Neither the Font Software nor any of its individual components,
|
|
54
|
+
in Original or Modified Versions, may be sold by itself.
|
|
55
|
+
|
|
56
|
+
2) Original or Modified Versions of the Font Software may be bundled,
|
|
57
|
+
redistributed and/or sold with any software, provided that each copy
|
|
58
|
+
contains the above copyright notice and this license. These can be
|
|
59
|
+
included either as stand-alone text files, human-readable headers or
|
|
60
|
+
in the appropriate machine-readable metadata fields within text or
|
|
61
|
+
binary files as long as those fields can be easily viewed by the user.
|
|
62
|
+
|
|
63
|
+
3) No Modified Version of the Font Software may use the Reserved Font
|
|
64
|
+
Name(s) unless explicit written permission is granted by the corresponding
|
|
65
|
+
Copyright Holder. This restriction only applies to the primary font name as
|
|
66
|
+
presented to the users.
|
|
67
|
+
|
|
68
|
+
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
|
69
|
+
Software shall not be used to promote, endorse or advertise any
|
|
70
|
+
Modified Version, except to acknowledge the contribution(s) of the
|
|
71
|
+
Copyright Holder(s) and the Author(s) or with their explicit written
|
|
72
|
+
permission.
|
|
73
|
+
|
|
74
|
+
5) The Font Software, modified or unmodified, in part or in whole,
|
|
75
|
+
must be distributed entirely under this license, and must not be
|
|
76
|
+
distributed under any other license. The requirement for fonts to
|
|
77
|
+
remain under this license does not apply to any document created
|
|
78
|
+
using the Font Software.
|
|
79
|
+
|
|
80
|
+
TERMINATION
|
|
81
|
+
This license becomes null and void if any of the above conditions are
|
|
82
|
+
not met.
|
|
83
|
+
|
|
84
|
+
DISCLAIMER
|
|
85
|
+
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
86
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
|
87
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
|
88
|
+
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
|
89
|
+
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
90
|
+
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
|
91
|
+
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
92
|
+
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
|
93
|
+
OTHER DEALINGS IN THE FONT SOFTWARE.
|
|
Binary file
|
package/locales/ar.json
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
{
|
|
2
|
+
"kvvideo.title": "kvman video",
|
|
3
|
+
"kvvideo.slash.video": "اصنع فيديوهات في هذه المحادثة",
|
|
4
|
+
"kvvideo.slash.video.message": "أريد صنع فيديو.",
|
|
5
|
+
"kvvideo.video.started": "صنع الفيديوهات مفعّل في هذه المحادثة",
|
|
6
|
+
"kvvideo.config.narration": "التعليق الصوتي",
|
|
7
|
+
"kvvideo.config.recording": "التسجيل",
|
|
8
|
+
"kvvideo.config.programs": "البرامج",
|
|
9
|
+
"kvvideo.narration.service.title": "خدمة التعليق الصوتي",
|
|
10
|
+
"kvvideo.narration.service.description": "خدمة تحويل النص إلى كلام التي تقرأ نصوصك. تحتاج ElevenLabs وOpenAI إلى مفتاحهما، يُضاف أدناه سرًّا؛ ويعمل Piper على هذا الجهاز مجانًا.",
|
|
11
|
+
"kvvideo.narration.service.options.elevenlabs": "ElevenLabs (نحو 0.05–0.09 دولار للدقيقة)",
|
|
12
|
+
"kvvideo.narration.service.options.openai": "OpenAI (نحو 0.015 دولار للدقيقة)",
|
|
13
|
+
"kvvideo.narration.service.options.piper": "Piper (مجاني، على هذا الجهاز)",
|
|
14
|
+
"kvvideo.narration.voice.title": "الصوت",
|
|
15
|
+
"kvvideo.narration.voice.description": "معرّف صوت لـ ElevenLabs أو OpenAI، أو مسار ملف .onnx لصوت Piper. الفراغ يستخدم الصوت الافتراضي للخدمة.",
|
|
16
|
+
"kvvideo.narration.model.title": "النموذج",
|
|
17
|
+
"kvvideo.narration.model.description": "نموذج ElevenLabs أو OpenAI الذي يتكلم. الفراغ يستخدم النموذج الافتراضي للخدمة.",
|
|
18
|
+
"kvvideo.browser.title": "المتصفح",
|
|
19
|
+
"kvvideo.browser.description": "المتصفح المثبّت الذي يسجّل الصفحات.",
|
|
20
|
+
"kvvideo.browser.options.auto": "Chrome، وإلا Edge",
|
|
21
|
+
"kvvideo.browser.options.chrome": "Google Chrome",
|
|
22
|
+
"kvvideo.browser.options.msedge": "Microsoft Edge",
|
|
23
|
+
"kvvideo.programs.ffmpeg.title": "ffmpeg",
|
|
24
|
+
"kvvideo.programs.ffmpeg.description": "برنامج ffmpeg الذي يجمع الفيديوهات: اسم في PATH، أو مسار كامل.",
|
|
25
|
+
"kvvideo.programs.ffprobe.title": "ffprobe",
|
|
26
|
+
"kvvideo.programs.ffprobe.description": "برنامج ffprobe الذي يقيس الفيديو والصوت: اسم في PATH، أو مسار كامل.",
|
|
27
|
+
"kvvideo.programs.piper.title": "Piper",
|
|
28
|
+
"kvvideo.programs.piper.description": "برنامج Piper الذي يعلّق صوتيًا على هذا الجهاز: اسم في PATH، أو مسار كامل.",
|
|
29
|
+
"kvvideo.errors.PROGRAM_MISSING": "تعذّر تشغيل {program}. ثبّته، أو حدّد مكانه في إعدادات kvvideo.",
|
|
30
|
+
"kvvideo.errors.BROWSER_MISSING": "تعذّر تشغيل أي متصفح مثبّت. ثبّت Google Chrome أو Microsoft Edge.",
|
|
31
|
+
"kvvideo.errors.STEP_FAILED": "فشلت الخطوة {step} من التسجيل: {reason}",
|
|
32
|
+
"kvvideo.errors.NARRATION_NOT_SET": "التعليق الصوتي غير مُعدّ: اختره في إعدادات kvvideo ({setting}).",
|
|
33
|
+
"kvvideo.errors.NARRATION_KEY_MISSING": "مفتاح {service} مفقود: أضف السر {secret} في صفحة إضافة kvvideo.",
|
|
34
|
+
"kvvideo.errors.NARRATION_FAILED": "تعذّر على {service} التعليق الصوتي: {reason}",
|
|
35
|
+
"kvvideo.errors.RENDER_FAILED": "تعذّر على ffmpeg صنع الفيديو: {reason}",
|
|
36
|
+
"kvvideo.player.unavailable": "لا يمكن تشغيل هذا الفيديو هنا. افتح {file} في مساحة العمل.",
|
|
37
|
+
"kvvideo.progress.step": "تسجيل الخطوة {n} من {of}",
|
|
38
|
+
"kvvideo.narration.pronunciations.title": "النطق",
|
|
39
|
+
"kvvideo.narration.pronunciations.description": "كلمات يُنطق بها الراوي بطريقة مختلفة، في قائمة من { \"word\", \"say\" }: تُقرأ \"kvman\" كـ \"kay-vee-man\". تبقى الكلمة في الترجمة النصية كما كُتبت.",
|
|
40
|
+
"kvvideo.progress.sentence": "قراءة الجملة {n} من {of}",
|
|
41
|
+
"kvvideo.config.brand": "الهوية",
|
|
42
|
+
"kvvideo.brand.title": "الهوية",
|
|
43
|
+
"kvvideo.brand.description": "شعار فيديوهات مساحة العمل هذه وألوانها وخطها، بالصيغة { \"logo\", \"colors\": { \"primary\", \"background\", \"text\" }, \"font\" }. يقترحها الوكيل في نص الفيديو ويحفظها حين توافق.",
|
|
44
|
+
"kvvideo.progress.scene": "المشهد {n} من {of}",
|
|
45
|
+
"kvvideo.progress.final": "المرحلة الأخيرة، {percent}%",
|
|
46
|
+
"kvvideo.progress.sheet": "الورقة {n} من {of}",
|
|
47
|
+
"kvvideo.progress.take": "تنقية التسجيل {n} من {of}"
|
|
48
|
+
}
|
package/locales/en.json
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
{
|
|
2
|
+
"kvvideo.title": "kvman video",
|
|
3
|
+
"kvvideo.slash.video": "Make videos in this chat",
|
|
4
|
+
"kvvideo.slash.video.message": "I want to make a video.",
|
|
5
|
+
"kvvideo.video.started": "Making videos is on for this chat",
|
|
6
|
+
"kvvideo.config.narration": "Narration",
|
|
7
|
+
"kvvideo.config.recording": "Recording",
|
|
8
|
+
"kvvideo.config.programs": "Programs",
|
|
9
|
+
"kvvideo.narration.service.title": "Narration service",
|
|
10
|
+
"kvvideo.narration.service.description": "The text-to-speech service that reads your scripts. ElevenLabs and OpenAI need their key, added below as a secret; Piper runs on this computer for free.",
|
|
11
|
+
"kvvideo.narration.service.options.elevenlabs": "ElevenLabs (about $0.05–0.09 a minute)",
|
|
12
|
+
"kvvideo.narration.service.options.openai": "OpenAI (about $0.015 a minute)",
|
|
13
|
+
"kvvideo.narration.service.options.piper": "Piper (free, on this computer)",
|
|
14
|
+
"kvvideo.narration.voice.title": "Voice",
|
|
15
|
+
"kvvideo.narration.voice.description": "A voice id for ElevenLabs or OpenAI, or the path of a Piper voice's .onnx file. Empty uses the service's default voice.",
|
|
16
|
+
"kvvideo.narration.model.title": "Model",
|
|
17
|
+
"kvvideo.narration.model.description": "The ElevenLabs or OpenAI model that speaks. Empty uses the service's default.",
|
|
18
|
+
"kvvideo.browser.title": "Browser",
|
|
19
|
+
"kvvideo.browser.description": "The installed browser that records pages.",
|
|
20
|
+
"kvvideo.browser.options.auto": "Chrome, else Edge",
|
|
21
|
+
"kvvideo.browser.options.chrome": "Google Chrome",
|
|
22
|
+
"kvvideo.browser.options.msedge": "Microsoft Edge",
|
|
23
|
+
"kvvideo.programs.ffmpeg.title": "ffmpeg",
|
|
24
|
+
"kvvideo.programs.ffmpeg.description": "The ffmpeg program that joins videos: a name on the PATH, or a full path.",
|
|
25
|
+
"kvvideo.programs.ffprobe.title": "ffprobe",
|
|
26
|
+
"kvvideo.programs.ffprobe.description": "The ffprobe program that measures videos and audio: a name on the PATH, or a full path.",
|
|
27
|
+
"kvvideo.programs.piper.title": "Piper",
|
|
28
|
+
"kvvideo.programs.piper.description": "The Piper program that narrates on this computer: a name on the PATH, or a full path.",
|
|
29
|
+
"kvvideo.errors.PROGRAM_MISSING": "{program} can't be started. Install it, or set where it is in kvvideo's configuration.",
|
|
30
|
+
"kvvideo.errors.BROWSER_MISSING": "No installed browser could start. Install Google Chrome or Microsoft Edge.",
|
|
31
|
+
"kvvideo.errors.STEP_FAILED": "Step {step} of the recording failed: {reason}",
|
|
32
|
+
"kvvideo.errors.NARRATION_NOT_SET": "Narration isn't set up: choose it in kvvideo's configuration ({setting}).",
|
|
33
|
+
"kvvideo.errors.NARRATION_KEY_MISSING": "The {service} key is missing: add the secret {secret} on kvvideo's extension page.",
|
|
34
|
+
"kvvideo.errors.NARRATION_FAILED": "{service} couldn't narrate: {reason}",
|
|
35
|
+
"kvvideo.errors.RENDER_FAILED": "ffmpeg couldn't make the video: {reason}",
|
|
36
|
+
"kvvideo.player.unavailable": "This video can't play here. Open {file} in the workspace.",
|
|
37
|
+
"kvvideo.progress.step": "Recording step {n} of {of}",
|
|
38
|
+
"kvvideo.narration.pronunciations.title": "Pronunciations",
|
|
39
|
+
"kvvideo.narration.pronunciations.description": "Words the narration says differently, as a list of { \"word\", \"say\" }: \"kvman\" said as \"kay-vee-man\". The captions keep the word as written.",
|
|
40
|
+
"kvvideo.progress.sentence": "Narrating sentence {n} of {of}",
|
|
41
|
+
"kvvideo.config.brand": "Brand",
|
|
42
|
+
"kvvideo.brand.title": "Brand",
|
|
43
|
+
"kvvideo.brand.description": "The logo, colours, and font of this workspace's videos, as { \"logo\", \"colors\": { \"primary\", \"background\", \"text\" }, \"font\" }. The agent proposes it in a video's script and saves it once you agree.",
|
|
44
|
+
"kvvideo.progress.scene": "Scene {n} of {of}",
|
|
45
|
+
"kvvideo.progress.final": "Final pass, {percent}%",
|
|
46
|
+
"kvvideo.progress.sheet": "Sheet {n} of {of}",
|
|
47
|
+
"kvvideo.progress.take": "Cleaning take {n} of {of}"
|
|
48
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,76 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kvman/kvvideo",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
3
|
+
"version": "0.1.1",
|
|
4
|
+
"description": "kvvideo: the kvcoder extension that makes any kind of video, from websites and pages recorded in the browser, narrated, and captioned.",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "git+https://github.com/ibndeif/kvman.git",
|
|
9
|
+
"directory": "extensions/kvvideo"
|
|
10
|
+
},
|
|
11
|
+
"homepage": "https://github.com/ibndeif/kvman#readme",
|
|
12
|
+
"bugs": {
|
|
13
|
+
"url": "https://github.com/ibndeif/kvman/issues"
|
|
14
|
+
},
|
|
15
|
+
"type": "module",
|
|
16
|
+
"main": "dist/index.js",
|
|
17
|
+
"exports": {
|
|
18
|
+
".": {
|
|
19
|
+
"@kvman/source": "./src/index.ts",
|
|
20
|
+
"types": "./dist/index.d.ts",
|
|
21
|
+
"default": "./dist/index.js"
|
|
22
|
+
},
|
|
23
|
+
"./package.json": "./package.json"
|
|
24
|
+
},
|
|
25
|
+
"files": [
|
|
26
|
+
"dist",
|
|
27
|
+
"docs",
|
|
28
|
+
"fonts",
|
|
29
|
+
"locales",
|
|
30
|
+
"sounds"
|
|
31
|
+
],
|
|
32
|
+
"peerDependencies": {
|
|
33
|
+
"@kvman/sdk": "^0.1.5"
|
|
34
|
+
},
|
|
35
|
+
"dependencies": {
|
|
36
|
+
"playwright-core": "1.63.0",
|
|
37
|
+
"vue": "3.5.43"
|
|
38
|
+
},
|
|
39
|
+
"devDependencies": {
|
|
40
|
+
"@kvman/kvai": "0.1.9",
|
|
41
|
+
"@kvman/kvcoder": "0.1.20",
|
|
42
|
+
"@kvman/kvwebui": "0.1.8",
|
|
43
|
+
"@kvman/sdk": "0.1.5",
|
|
44
|
+
"@kvman/testkit": "0.1.10",
|
|
45
|
+
"@vitejs/plugin-vue": "6.0.9",
|
|
46
|
+
"@vue/test-utils": "2.5.1",
|
|
47
|
+
"happy-dom": "20.14.5",
|
|
48
|
+
"vite": "8.3.1",
|
|
49
|
+
"vue-tsc": "3.3.11"
|
|
50
|
+
},
|
|
51
|
+
"kvman": {
|
|
52
|
+
"namespace": "kvvideo",
|
|
53
|
+
"source": "src/index.ts",
|
|
54
|
+
"web": "dist/web",
|
|
55
|
+
"dependencies": {
|
|
56
|
+
"@kvman/kvcoder": "^0.1.2",
|
|
57
|
+
"@kvman/kvwebui": "^0.1.0"
|
|
58
|
+
},
|
|
59
|
+
"indexes": {
|
|
60
|
+
"players": [
|
|
61
|
+
[
|
|
62
|
+
"path"
|
|
63
|
+
]
|
|
64
|
+
],
|
|
65
|
+
"narrations": [
|
|
66
|
+
[
|
|
67
|
+
"key"
|
|
68
|
+
]
|
|
69
|
+
]
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
"scripts": {
|
|
73
|
+
"build": "tsc -p tsconfig.build.json && node web-build.config.ts",
|
|
74
|
+
"typecheck": "tsc -p tsconfig.json && vue-tsc -p tsconfig.web.json"
|
|
75
|
+
}
|
|
6
76
|
}
|