UNPKG

@omnimedia/omnitool

Version:

open source video processing tools

67 lines (66 loc) 1.75 kB
import { AsSchematic } from "@e280/comrade"; import type { AudioEncodingConfig, StreamTargetChunk, VideoEncodingConfig } from "mediabunny"; export type DriverSchematic = AsSchematic<{ work: { hello(): Promise<void>; decode(input: { source: DecoderSource; video: WritableStream<VideoFrame>; audio: WritableStream<AudioData>; }): Promise<void>; encode(input: EncoderInput & { bridge: WritableStream<StreamTargetChunk>; }): Promise<void>; composite(input: Composition): Promise<VideoFrame>; }; host: { world(): Promise<void>; }; }>; export interface EncoderInput { readables: { video: ReadableStream<VideoFrame>; audio: ReadableStream<AudioData>; }; config: { video: VideoEncodingConfig; audio: AudioEncodingConfig; }; } export type DecoderSource = Blob | string | URL; export interface DecoderInput { source: DecoderSource; onFrame?: (frame: VideoFrame) => Promise<VideoFrame>; } export interface MuxOpts { config: { video: { width: number; height: number; }; audio?: { codec: "opus" | "aac"; numberOfChannels: number; sampleRate: number; }; }; } export type Composition = Layer | (Layer | Composition)[]; export type Transform = { x?: number; y?: number; scale?: number; opacity?: number; anchor?: number; }; export type TextLayer = { kind: 'text'; content: string; fontSize?: number; color?: string; } & Transform; export type ImageLayer = { kind: 'image'; frame: VideoFrame; } & Transform; export type Layer = TextLayer | ImageLayer;