UNPKG

@omnimedia/omnitool

Version:

open source video processing tools

31 lines (25 loc) 811 B
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, } } }