UNPKG

@omnimedia/omnitool

Version:

open source video processing tools

59 lines 2.73 kB
import { Datafile, defaultTranscriberSpec, makeTranscriber, Omni } from "../../timeline/index.js"; export async function TimelineSchemaTest(driver, file) { const transcriber = await makeTranscriber({ driver, spec: defaultTranscriberSpec(), workerUrl: new URL("/features/speech/transcribe/worker.bundle.min.js", import.meta.url), onLoading: loading => console.log("transcriber loading", loading), }); const omni = new Omni(driver); const { videoA } = await omni.load({ videoA: Datafile.make(file) }); const transcript = await transcriber.transcribe({ source: file, language: "english", onReport: report => console.log("transcriber report", report), onTranscription: text => console.log("transcribing", text), }); const timeline = omni.timeline(o => { const text = o.text("content", { duration: 3000 }); const fade = o.animate.opacity.make("easeIn", [ [0, 0], [700, 1], [2200, 1], [3000, 0.35], ]); const style = o.textStyle({ fill: "green", fontSize: 100 }); const videoSpatial = o.spatial(o.transform({ position: [240, 160], scale: [1.4, 1.4], rotation: 0.08, }), [0.15, 0.1, 0.05, 0.2]); const textSpatial = o.spatial(); const textMotion = o.animate.transform.make("linear", [ [0, o.transform({ position: [-320, 80], scale: [0.7, 0.7] })], [1000, o.transform({ position: [120, 80], scale: [1, 1] })], [2000, o.transform({ position: [200, 40], scale: [1.35, 1.35], rotation: 8 })], [3000, o.transform({ position: [320, 0], scale: [1.15, 1.15], rotation: 0 })], ]); const video = o.video(videoA, { duration: 6000, start: 3000 }); o.set(text.id, { styleId: style.id, spatialId: textSpatial.id, animationIds: [fade.id, textMotion.id] }); o.set(video.id, { spatialId: videoSpatial.id }); const visual = o.sequence(o.stack(text, o.captions(video, transcript, { maxChars: 34, maxDuration: 2800, maxSilence: 450, styles: { fontFamily: "Arial", fontSize: 64, fill: "#ffffff", align: "center", wordWrap: true, wordWrapWidth: 1280, stroke: { color: "#000000", width: 6 }, }, })), o.transition.circle(1500), o.video(videoA, { duration: 7000, start: 5000 })); return o.stack(visual, o.audio(videoA, { start: 3000, duration: video.duration })); }); return { timeline, omni }; } //# sourceMappingURL=timeline-setup.js.map