@omnimedia/omnitool
Version:
open source video processing tools
31 lines (25 loc) • 811 B
text/typescript
import {O} from "./o.js"
import {Item} from "../parts/item.js"
import {Media} from "../parts/media.js"
import {TimelineFile} from "../parts/basics.js"
import {Datafile} from "../utils/datafile.js"
import {ResourcePool} from "../parts/resource-pool.js"
export class Omni {
resources = new ResourcePool()
load = async<S extends Record<string, Promise<Datafile>>>(spec: S) => {
return Object.fromEntries(await Promise.all(Object.entries(spec).map(
async([key, value]) => [key, await this.resources.store(await value)]
))) as {[K in keyof S]: Media}
}
timeline = (fn: (o: O) => Item.Sequence): TimelineFile => {
const o = new O()
const sequence = fn(o)
return {
format: "timeline",
info: "https://omniclip.app/",
version: 0,
root: o.register(sequence),
items: o.items,
}
}
}