UNPKG

cerevox

Version:

TypeScript SDK for browser automation and secure command execution in highly available and scalable micro computer environments

1,021 lines 45.8 kB
import { z } from 'zod'; export interface ProjectInfo { name: string; id: string; } export interface Resolution { width: number; height: number; } export interface Settings { fps: number; resolution: Resolution; pixelFormat: string; sampleRate: number; channels: number; timebase: string; } export type AssetType = 'video' | 'audio' | 'image'; export interface Asset { id: string; type: AssetType; uri: string; durationMs?: number; fps?: number; } export type TrackType = 'video' | 'audio' | 'subtitle'; export interface Effect { name: 'fadeIn' | 'fadeOut' | 'gain' | 'blur' | 'color' | 'speed' | string; params?: Record<string, unknown>; } export interface Filter { name: string; params?: Record<string, unknown>; } export interface TransitionDef { name: 'xfade' | 'fade' | 'wipeleft' | 'wiperight' | 'wipeup' | 'wipedown' | 'slideleft' | 'slideright' | 'slideup' | 'slidedown' | 'circlecrop' | 'rectcrop' | 'distance' | 'fadeblack' | 'fadewhite' | 'radial' | 'smoothleft' | 'smoothright' | 'smoothup' | 'smoothdown' | 'circleopen' | 'circleclose' | 'vertopen' | 'vertclose' | 'horzopen' | 'horzclose' | 'dissolve' | 'pixelize' | 'diagtl' | 'diagtr' | 'diagbl' | 'diagbr'; durationMs: number; params?: Record<string, unknown>; } export interface Transform { scale?: number; rotate?: number; anchor?: 'center' | 'topleft' | 'topright' | 'bottomleft' | 'bottomright'; position?: { x: number; y: number; }; fit?: 'contain' | 'cover' | 'stretch'; } export interface Clip { id: string; assetId: string; startMs: number; inMs: number; durationMs: number; transform?: Transform; speed?: number; effects?: Effect[]; filters?: Filter[]; transitionIn?: TransitionDef; transitionOut?: TransitionDef; } export interface Track { id: string; type: TrackType; muted?: boolean; opacity?: number; clips: Clip[]; } export interface DuckingRule { id: string; musicTrackId: string; dialogTrackId: string; params?: { threshold?: number; ratio?: number; attackMs?: number; releaseMs?: number; musicPreGain?: number; }; } export interface Mix { ducking?: DuckingRule[]; } export interface SubtitleItem { id: string; text: string; startMs: number; endMs: number; audio?: string; style?: { fontFamily?: string; fontSize?: number; bold?: boolean; color?: string; outlineColor?: string; outlineWidth?: number; align?: 'left' | 'center' | 'right'; verticalAlign?: 'top' | 'middle' | 'bottom'; position?: { x: number; y: number; }; }; } export interface ExportCfg { container: string; videoCodec: string; crf?: number; preset?: string; audioCodec: string; audioBitrate?: string; outFile?: string; } export interface Timeline { tracks: Track[]; mix?: Mix; } export interface VideoProject { version: string; project: ProjectInfo; settings: Settings; assets: Asset[]; timeline: Timeline; subtitles?: SubtitleItem[]; export: ExportCfg; } export declare const zVideoProject: z.ZodObject<{ version: z.ZodString; project: z.ZodObject<{ name: z.ZodString; id: z.ZodString; }, "strip", z.ZodTypeAny, { id: string; name: string; }, { id: string; name: string; }>; settings: z.ZodObject<{ fps: z.ZodNumber; resolution: z.ZodObject<{ width: z.ZodNumber; height: z.ZodNumber; }, "strip", z.ZodTypeAny, { width: number; height: number; }, { width: number; height: number; }>; pixelFormat: z.ZodString; sampleRate: z.ZodNumber; channels: z.ZodNumber; timebase: z.ZodString; }, "strip", z.ZodTypeAny, { fps: number; resolution: { width: number; height: number; }; pixelFormat: string; sampleRate: number; channels: number; timebase: string; }, { fps: number; resolution: { width: number; height: number; }; pixelFormat: string; sampleRate: number; channels: number; timebase: string; }>; assets: z.ZodArray<z.ZodObject<{ id: z.ZodString; type: z.ZodEnum<["video", "audio", "image"]>; uri: z.ZodString; durationMs: z.ZodOptional<z.ZodNumber>; fps: z.ZodOptional<z.ZodNumber>; }, "strip", z.ZodTypeAny, { id: string; type: "image" | "audio" | "video"; uri: string; fps?: number | undefined; durationMs?: number | undefined; }, { id: string; type: "image" | "audio" | "video"; uri: string; fps?: number | undefined; durationMs?: number | undefined; }>, "many">; timeline: z.ZodObject<{ tracks: z.ZodArray<z.ZodObject<{ id: z.ZodString; type: z.ZodEnum<["video", "audio", "subtitle"]>; muted: z.ZodOptional<z.ZodBoolean>; opacity: z.ZodOptional<z.ZodNumber>; clips: z.ZodArray<z.ZodObject<{ id: z.ZodString; assetId: z.ZodString; startMs: z.ZodNumber; inMs: z.ZodNumber; durationMs: z.ZodNumber; transform: z.ZodOptional<z.ZodObject<{ scale: z.ZodOptional<z.ZodNumber>; rotate: z.ZodOptional<z.ZodNumber>; anchor: z.ZodOptional<z.ZodEnum<["center", "topleft", "topright", "bottomleft", "bottomright"]>>; position: z.ZodOptional<z.ZodObject<{ x: z.ZodNumber; y: z.ZodNumber; }, "strip", z.ZodTypeAny, { x: number; y: number; }, { x: number; y: number; }>>; fit: z.ZodOptional<z.ZodEnum<["contain", "cover", "stretch"]>>; }, "strip", z.ZodTypeAny, { anchor?: "center" | "topleft" | "topright" | "bottomleft" | "bottomright" | undefined; scale?: number | undefined; rotate?: number | undefined; position?: { x: number; y: number; } | undefined; fit?: "contain" | "cover" | "stretch" | undefined; }, { anchor?: "center" | "topleft" | "topright" | "bottomleft" | "bottomright" | undefined; scale?: number | undefined; rotate?: number | undefined; position?: { x: number; y: number; } | undefined; fit?: "contain" | "cover" | "stretch" | undefined; }>>; speed: z.ZodOptional<z.ZodNumber>; effects: z.ZodOptional<z.ZodArray<z.ZodObject<{ name: z.ZodString; params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>; }, "strip", z.ZodTypeAny, { name: string; params?: Record<string, unknown> | undefined; }, { name: string; params?: Record<string, unknown> | undefined; }>, "many">>; filters: z.ZodOptional<z.ZodArray<z.ZodObject<{ name: z.ZodString; params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>; }, "strip", z.ZodTypeAny, { name: string; params?: Record<string, unknown> | undefined; }, { name: string; params?: Record<string, unknown> | undefined; }>, "many">>; transitionIn: z.ZodOptional<z.ZodObject<{ name: z.ZodEnum<["xfade", "fade", "wipeleft", "wiperight", "wipeup", "wipedown", "slideleft", "slideright", "slideup", "slidedown", "circlecrop", "rectcrop", "distance", "fadeblack", "fadewhite", "radial", "smoothleft", "smoothright", "smoothup", "smoothdown", "circleopen", "circleclose", "vertopen", "vertclose", "horzopen", "horzclose", "dissolve", "pixelize", "diagtl", "diagtr", "diagbl", "diagbr"]>; durationMs: z.ZodNumber; params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>; }, "strip", z.ZodTypeAny, { name: "xfade" | "fade" | "wipeleft" | "wiperight" | "wipeup" | "wipedown" | "slideleft" | "slideright" | "slideup" | "slidedown" | "circlecrop" | "rectcrop" | "distance" | "fadeblack" | "fadewhite" | "radial" | "smoothleft" | "smoothright" | "smoothup" | "smoothdown" | "circleopen" | "circleclose" | "vertopen" | "vertclose" | "horzopen" | "horzclose" | "dissolve" | "pixelize" | "diagtl" | "diagtr" | "diagbl" | "diagbr"; durationMs: number; params?: Record<string, unknown> | undefined; }, { name: "xfade" | "fade" | "wipeleft" | "wiperight" | "wipeup" | "wipedown" | "slideleft" | "slideright" | "slideup" | "slidedown" | "circlecrop" | "rectcrop" | "distance" | "fadeblack" | "fadewhite" | "radial" | "smoothleft" | "smoothright" | "smoothup" | "smoothdown" | "circleopen" | "circleclose" | "vertopen" | "vertclose" | "horzopen" | "horzclose" | "dissolve" | "pixelize" | "diagtl" | "diagtr" | "diagbl" | "diagbr"; durationMs: number; params?: Record<string, unknown> | undefined; }>>; transitionOut: z.ZodOptional<z.ZodObject<{ name: z.ZodEnum<["xfade", "fade", "wipeleft", "wiperight", "wipeup", "wipedown", "slideleft", "slideright", "slideup", "slidedown", "circlecrop", "rectcrop", "distance", "fadeblack", "fadewhite", "radial", "smoothleft", "smoothright", "smoothup", "smoothdown", "circleopen", "circleclose", "vertopen", "vertclose", "horzopen", "horzclose", "dissolve", "pixelize", "diagtl", "diagtr", "diagbl", "diagbr"]>; durationMs: z.ZodNumber; params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>; }, "strip", z.ZodTypeAny, { name: "xfade" | "fade" | "wipeleft" | "wiperight" | "wipeup" | "wipedown" | "slideleft" | "slideright" | "slideup" | "slidedown" | "circlecrop" | "rectcrop" | "distance" | "fadeblack" | "fadewhite" | "radial" | "smoothleft" | "smoothright" | "smoothup" | "smoothdown" | "circleopen" | "circleclose" | "vertopen" | "vertclose" | "horzopen" | "horzclose" | "dissolve" | "pixelize" | "diagtl" | "diagtr" | "diagbl" | "diagbr"; durationMs: number; params?: Record<string, unknown> | undefined; }, { name: "xfade" | "fade" | "wipeleft" | "wiperight" | "wipeup" | "wipedown" | "slideleft" | "slideright" | "slideup" | "slidedown" | "circlecrop" | "rectcrop" | "distance" | "fadeblack" | "fadewhite" | "radial" | "smoothleft" | "smoothright" | "smoothup" | "smoothdown" | "circleopen" | "circleclose" | "vertopen" | "vertclose" | "horzopen" | "horzclose" | "dissolve" | "pixelize" | "diagtl" | "diagtr" | "diagbl" | "diagbr"; durationMs: number; params?: Record<string, unknown> | undefined; }>>; }, "strip", z.ZodTypeAny, { id: string; durationMs: number; assetId: string; startMs: number; inMs: number; speed?: number | undefined; transform?: { anchor?: "center" | "topleft" | "topright" | "bottomleft" | "bottomright" | undefined; scale?: number | undefined; rotate?: number | undefined; position?: { x: number; y: number; } | undefined; fit?: "contain" | "cover" | "stretch" | undefined; } | undefined; effects?: { name: string; params?: Record<string, unknown> | undefined; }[] | undefined; filters?: { name: string; params?: Record<string, unknown> | undefined; }[] | undefined; transitionIn?: { name: "xfade" | "fade" | "wipeleft" | "wiperight" | "wipeup" | "wipedown" | "slideleft" | "slideright" | "slideup" | "slidedown" | "circlecrop" | "rectcrop" | "distance" | "fadeblack" | "fadewhite" | "radial" | "smoothleft" | "smoothright" | "smoothup" | "smoothdown" | "circleopen" | "circleclose" | "vertopen" | "vertclose" | "horzopen" | "horzclose" | "dissolve" | "pixelize" | "diagtl" | "diagtr" | "diagbl" | "diagbr"; durationMs: number; params?: Record<string, unknown> | undefined; } | undefined; transitionOut?: { name: "xfade" | "fade" | "wipeleft" | "wiperight" | "wipeup" | "wipedown" | "slideleft" | "slideright" | "slideup" | "slidedown" | "circlecrop" | "rectcrop" | "distance" | "fadeblack" | "fadewhite" | "radial" | "smoothleft" | "smoothright" | "smoothup" | "smoothdown" | "circleopen" | "circleclose" | "vertopen" | "vertclose" | "horzopen" | "horzclose" | "dissolve" | "pixelize" | "diagtl" | "diagtr" | "diagbl" | "diagbr"; durationMs: number; params?: Record<string, unknown> | undefined; } | undefined; }, { id: string; durationMs: number; assetId: string; startMs: number; inMs: number; speed?: number | undefined; transform?: { anchor?: "center" | "topleft" | "topright" | "bottomleft" | "bottomright" | undefined; scale?: number | undefined; rotate?: number | undefined; position?: { x: number; y: number; } | undefined; fit?: "contain" | "cover" | "stretch" | undefined; } | undefined; effects?: { name: string; params?: Record<string, unknown> | undefined; }[] | undefined; filters?: { name: string; params?: Record<string, unknown> | undefined; }[] | undefined; transitionIn?: { name: "xfade" | "fade" | "wipeleft" | "wiperight" | "wipeup" | "wipedown" | "slideleft" | "slideright" | "slideup" | "slidedown" | "circlecrop" | "rectcrop" | "distance" | "fadeblack" | "fadewhite" | "radial" | "smoothleft" | "smoothright" | "smoothup" | "smoothdown" | "circleopen" | "circleclose" | "vertopen" | "vertclose" | "horzopen" | "horzclose" | "dissolve" | "pixelize" | "diagtl" | "diagtr" | "diagbl" | "diagbr"; durationMs: number; params?: Record<string, unknown> | undefined; } | undefined; transitionOut?: { name: "xfade" | "fade" | "wipeleft" | "wiperight" | "wipeup" | "wipedown" | "slideleft" | "slideright" | "slideup" | "slidedown" | "circlecrop" | "rectcrop" | "distance" | "fadeblack" | "fadewhite" | "radial" | "smoothleft" | "smoothright" | "smoothup" | "smoothdown" | "circleopen" | "circleclose" | "vertopen" | "vertclose" | "horzopen" | "horzclose" | "dissolve" | "pixelize" | "diagtl" | "diagtr" | "diagbl" | "diagbr"; durationMs: number; params?: Record<string, unknown> | undefined; } | undefined; }>, "many">; }, "strip", z.ZodTypeAny, { id: string; type: "audio" | "video" | "subtitle"; clips: { id: string; durationMs: number; assetId: string; startMs: number; inMs: number; speed?: number | undefined; transform?: { anchor?: "center" | "topleft" | "topright" | "bottomleft" | "bottomright" | undefined; scale?: number | undefined; rotate?: number | undefined; position?: { x: number; y: number; } | undefined; fit?: "contain" | "cover" | "stretch" | undefined; } | undefined; effects?: { name: string; params?: Record<string, unknown> | undefined; }[] | undefined; filters?: { name: string; params?: Record<string, unknown> | undefined; }[] | undefined; transitionIn?: { name: "xfade" | "fade" | "wipeleft" | "wiperight" | "wipeup" | "wipedown" | "slideleft" | "slideright" | "slideup" | "slidedown" | "circlecrop" | "rectcrop" | "distance" | "fadeblack" | "fadewhite" | "radial" | "smoothleft" | "smoothright" | "smoothup" | "smoothdown" | "circleopen" | "circleclose" | "vertopen" | "vertclose" | "horzopen" | "horzclose" | "dissolve" | "pixelize" | "diagtl" | "diagtr" | "diagbl" | "diagbr"; durationMs: number; params?: Record<string, unknown> | undefined; } | undefined; transitionOut?: { name: "xfade" | "fade" | "wipeleft" | "wiperight" | "wipeup" | "wipedown" | "slideleft" | "slideright" | "slideup" | "slidedown" | "circlecrop" | "rectcrop" | "distance" | "fadeblack" | "fadewhite" | "radial" | "smoothleft" | "smoothright" | "smoothup" | "smoothdown" | "circleopen" | "circleclose" | "vertopen" | "vertclose" | "horzopen" | "horzclose" | "dissolve" | "pixelize" | "diagtl" | "diagtr" | "diagbl" | "diagbr"; durationMs: number; params?: Record<string, unknown> | undefined; } | undefined; }[]; muted?: boolean | undefined; opacity?: number | undefined; }, { id: string; type: "audio" | "video" | "subtitle"; clips: { id: string; durationMs: number; assetId: string; startMs: number; inMs: number; speed?: number | undefined; transform?: { anchor?: "center" | "topleft" | "topright" | "bottomleft" | "bottomright" | undefined; scale?: number | undefined; rotate?: number | undefined; position?: { x: number; y: number; } | undefined; fit?: "contain" | "cover" | "stretch" | undefined; } | undefined; effects?: { name: string; params?: Record<string, unknown> | undefined; }[] | undefined; filters?: { name: string; params?: Record<string, unknown> | undefined; }[] | undefined; transitionIn?: { name: "xfade" | "fade" | "wipeleft" | "wiperight" | "wipeup" | "wipedown" | "slideleft" | "slideright" | "slideup" | "slidedown" | "circlecrop" | "rectcrop" | "distance" | "fadeblack" | "fadewhite" | "radial" | "smoothleft" | "smoothright" | "smoothup" | "smoothdown" | "circleopen" | "circleclose" | "vertopen" | "vertclose" | "horzopen" | "horzclose" | "dissolve" | "pixelize" | "diagtl" | "diagtr" | "diagbl" | "diagbr"; durationMs: number; params?: Record<string, unknown> | undefined; } | undefined; transitionOut?: { name: "xfade" | "fade" | "wipeleft" | "wiperight" | "wipeup" | "wipedown" | "slideleft" | "slideright" | "slideup" | "slidedown" | "circlecrop" | "rectcrop" | "distance" | "fadeblack" | "fadewhite" | "radial" | "smoothleft" | "smoothright" | "smoothup" | "smoothdown" | "circleopen" | "circleclose" | "vertopen" | "vertclose" | "horzopen" | "horzclose" | "dissolve" | "pixelize" | "diagtl" | "diagtr" | "diagbl" | "diagbr"; durationMs: number; params?: Record<string, unknown> | undefined; } | undefined; }[]; muted?: boolean | undefined; opacity?: number | undefined; }>, "many">; mix: z.ZodOptional<z.ZodObject<{ ducking: z.ZodOptional<z.ZodArray<z.ZodObject<{ id: z.ZodString; musicTrackId: z.ZodString; dialogTrackId: z.ZodString; params: z.ZodOptional<z.ZodObject<{ threshold: z.ZodOptional<z.ZodNumber>; ratio: z.ZodOptional<z.ZodNumber>; attackMs: z.ZodOptional<z.ZodNumber>; releaseMs: z.ZodOptional<z.ZodNumber>; musicPreGain: z.ZodOptional<z.ZodNumber>; }, "strip", z.ZodTypeAny, { ratio?: number | undefined; threshold?: number | undefined; attackMs?: number | undefined; releaseMs?: number | undefined; musicPreGain?: number | undefined; }, { ratio?: number | undefined; threshold?: number | undefined; attackMs?: number | undefined; releaseMs?: number | undefined; musicPreGain?: number | undefined; }>>; }, "strip", z.ZodTypeAny, { id: string; musicTrackId: string; dialogTrackId: string; params?: { ratio?: number | undefined; threshold?: number | undefined; attackMs?: number | undefined; releaseMs?: number | undefined; musicPreGain?: number | undefined; } | undefined; }, { id: string; musicTrackId: string; dialogTrackId: string; params?: { ratio?: number | undefined; threshold?: number | undefined; attackMs?: number | undefined; releaseMs?: number | undefined; musicPreGain?: number | undefined; } | undefined; }>, "many">>; }, "strip", z.ZodTypeAny, { ducking?: { id: string; musicTrackId: string; dialogTrackId: string; params?: { ratio?: number | undefined; threshold?: number | undefined; attackMs?: number | undefined; releaseMs?: number | undefined; musicPreGain?: number | undefined; } | undefined; }[] | undefined; }, { ducking?: { id: string; musicTrackId: string; dialogTrackId: string; params?: { ratio?: number | undefined; threshold?: number | undefined; attackMs?: number | undefined; releaseMs?: number | undefined; musicPreGain?: number | undefined; } | undefined; }[] | undefined; }>>; }, "strip", z.ZodTypeAny, { tracks: { id: string; type: "audio" | "video" | "subtitle"; clips: { id: string; durationMs: number; assetId: string; startMs: number; inMs: number; speed?: number | undefined; transform?: { anchor?: "center" | "topleft" | "topright" | "bottomleft" | "bottomright" | undefined; scale?: number | undefined; rotate?: number | undefined; position?: { x: number; y: number; } | undefined; fit?: "contain" | "cover" | "stretch" | undefined; } | undefined; effects?: { name: string; params?: Record<string, unknown> | undefined; }[] | undefined; filters?: { name: string; params?: Record<string, unknown> | undefined; }[] | undefined; transitionIn?: { name: "xfade" | "fade" | "wipeleft" | "wiperight" | "wipeup" | "wipedown" | "slideleft" | "slideright" | "slideup" | "slidedown" | "circlecrop" | "rectcrop" | "distance" | "fadeblack" | "fadewhite" | "radial" | "smoothleft" | "smoothright" | "smoothup" | "smoothdown" | "circleopen" | "circleclose" | "vertopen" | "vertclose" | "horzopen" | "horzclose" | "dissolve" | "pixelize" | "diagtl" | "diagtr" | "diagbl" | "diagbr"; durationMs: number; params?: Record<string, unknown> | undefined; } | undefined; transitionOut?: { name: "xfade" | "fade" | "wipeleft" | "wiperight" | "wipeup" | "wipedown" | "slideleft" | "slideright" | "slideup" | "slidedown" | "circlecrop" | "rectcrop" | "distance" | "fadeblack" | "fadewhite" | "radial" | "smoothleft" | "smoothright" | "smoothup" | "smoothdown" | "circleopen" | "circleclose" | "vertopen" | "vertclose" | "horzopen" | "horzclose" | "dissolve" | "pixelize" | "diagtl" | "diagtr" | "diagbl" | "diagbr"; durationMs: number; params?: Record<string, unknown> | undefined; } | undefined; }[]; muted?: boolean | undefined; opacity?: number | undefined; }[]; mix?: { ducking?: { id: string; musicTrackId: string; dialogTrackId: string; params?: { ratio?: number | undefined; threshold?: number | undefined; attackMs?: number | undefined; releaseMs?: number | undefined; musicPreGain?: number | undefined; } | undefined; }[] | undefined; } | undefined; }, { tracks: { id: string; type: "audio" | "video" | "subtitle"; clips: { id: string; durationMs: number; assetId: string; startMs: number; inMs: number; speed?: number | undefined; transform?: { anchor?: "center" | "topleft" | "topright" | "bottomleft" | "bottomright" | undefined; scale?: number | undefined; rotate?: number | undefined; position?: { x: number; y: number; } | undefined; fit?: "contain" | "cover" | "stretch" | undefined; } | undefined; effects?: { name: string; params?: Record<string, unknown> | undefined; }[] | undefined; filters?: { name: string; params?: Record<string, unknown> | undefined; }[] | undefined; transitionIn?: { name: "xfade" | "fade" | "wipeleft" | "wiperight" | "wipeup" | "wipedown" | "slideleft" | "slideright" | "slideup" | "slidedown" | "circlecrop" | "rectcrop" | "distance" | "fadeblack" | "fadewhite" | "radial" | "smoothleft" | "smoothright" | "smoothup" | "smoothdown" | "circleopen" | "circleclose" | "vertopen" | "vertclose" | "horzopen" | "horzclose" | "dissolve" | "pixelize" | "diagtl" | "diagtr" | "diagbl" | "diagbr"; durationMs: number; params?: Record<string, unknown> | undefined; } | undefined; transitionOut?: { name: "xfade" | "fade" | "wipeleft" | "wiperight" | "wipeup" | "wipedown" | "slideleft" | "slideright" | "slideup" | "slidedown" | "circlecrop" | "rectcrop" | "distance" | "fadeblack" | "fadewhite" | "radial" | "smoothleft" | "smoothright" | "smoothup" | "smoothdown" | "circleopen" | "circleclose" | "vertopen" | "vertclose" | "horzopen" | "horzclose" | "dissolve" | "pixelize" | "diagtl" | "diagtr" | "diagbl" | "diagbr"; durationMs: number; params?: Record<string, unknown> | undefined; } | undefined; }[]; muted?: boolean | undefined; opacity?: number | undefined; }[]; mix?: { ducking?: { id: string; musicTrackId: string; dialogTrackId: string; params?: { ratio?: number | undefined; threshold?: number | undefined; attackMs?: number | undefined; releaseMs?: number | undefined; musicPreGain?: number | undefined; } | undefined; }[] | undefined; } | undefined; }>; subtitles: z.ZodOptional<z.ZodArray<z.ZodObject<{ id: z.ZodString; text: z.ZodString; startMs: z.ZodNumber; endMs: z.ZodNumber; audio: z.ZodOptional<z.ZodString>; style: z.ZodOptional<z.ZodObject<{ fontFamily: z.ZodOptional<z.ZodString>; fontSize: z.ZodOptional<z.ZodNumber>; bold: z.ZodOptional<z.ZodBoolean>; color: z.ZodOptional<z.ZodString>; outlineColor: z.ZodOptional<z.ZodString>; outlineWidth: z.ZodOptional<z.ZodNumber>; align: z.ZodOptional<z.ZodEnum<["left", "center", "right"]>>; verticalAlign: z.ZodOptional<z.ZodEnum<["top", "middle", "bottom"]>>; position: z.ZodOptional<z.ZodObject<{ x: z.ZodNumber; y: z.ZodNumber; }, "strip", z.ZodTypeAny, { x: number; y: number; }, { x: number; y: number; }>>; }, "strip", z.ZodTypeAny, { color?: string | undefined; bold?: boolean | undefined; position?: { x: number; y: number; } | undefined; fontFamily?: string | undefined; fontSize?: number | undefined; outlineColor?: string | undefined; outlineWidth?: number | undefined; align?: "center" | "left" | "right" | undefined; verticalAlign?: "top" | "middle" | "bottom" | undefined; }, { color?: string | undefined; bold?: boolean | undefined; position?: { x: number; y: number; } | undefined; fontFamily?: string | undefined; fontSize?: number | undefined; outlineColor?: string | undefined; outlineWidth?: number | undefined; align?: "center" | "left" | "right" | undefined; verticalAlign?: "top" | "middle" | "bottom" | undefined; }>>; }, "strip", z.ZodTypeAny, { id: string; text: string; startMs: number; endMs: number; audio?: string | undefined; style?: { color?: string | undefined; bold?: boolean | undefined; position?: { x: number; y: number; } | undefined; fontFamily?: string | undefined; fontSize?: number | undefined; outlineColor?: string | undefined; outlineWidth?: number | undefined; align?: "center" | "left" | "right" | undefined; verticalAlign?: "top" | "middle" | "bottom" | undefined; } | undefined; }, { id: string; text: string; startMs: number; endMs: number; audio?: string | undefined; style?: { color?: string | undefined; bold?: boolean | undefined; position?: { x: number; y: number; } | undefined; fontFamily?: string | undefined; fontSize?: number | undefined; outlineColor?: string | undefined; outlineWidth?: number | undefined; align?: "center" | "left" | "right" | undefined; verticalAlign?: "top" | "middle" | "bottom" | undefined; } | undefined; }>, "many">>; export: z.ZodObject<{ container: z.ZodString; videoCodec: z.ZodString; crf: z.ZodOptional<z.ZodNumber>; preset: z.ZodOptional<z.ZodString>; audioCodec: z.ZodString; audioBitrate: z.ZodOptional<z.ZodString>; outFile: z.ZodOptional<z.ZodString>; }, "strip", z.ZodTypeAny, { container: string; videoCodec: string; audioCodec: string; crf?: number | undefined; preset?: string | undefined; audioBitrate?: string | undefined; outFile?: string | undefined; }, { container: string; videoCodec: string; audioCodec: string; crf?: number | undefined; preset?: string | undefined; audioBitrate?: string | undefined; outFile?: string | undefined; }>; }, "strip", z.ZodTypeAny, { version: string; project: { id: string; name: string; }; settings: { fps: number; resolution: { width: number; height: number; }; pixelFormat: string; sampleRate: number; channels: number; timebase: string; }; assets: { id: string; type: "image" | "audio" | "video"; uri: string; fps?: number | undefined; durationMs?: number | undefined; }[]; timeline: { tracks: { id: string; type: "audio" | "video" | "subtitle"; clips: { id: string; durationMs: number; assetId: string; startMs: number; inMs: number; speed?: number | undefined; transform?: { anchor?: "center" | "topleft" | "topright" | "bottomleft" | "bottomright" | undefined; scale?: number | undefined; rotate?: number | undefined; position?: { x: number; y: number; } | undefined; fit?: "contain" | "cover" | "stretch" | undefined; } | undefined; effects?: { name: string; params?: Record<string, unknown> | undefined; }[] | undefined; filters?: { name: string; params?: Record<string, unknown> | undefined; }[] | undefined; transitionIn?: { name: "xfade" | "fade" | "wipeleft" | "wiperight" | "wipeup" | "wipedown" | "slideleft" | "slideright" | "slideup" | "slidedown" | "circlecrop" | "rectcrop" | "distance" | "fadeblack" | "fadewhite" | "radial" | "smoothleft" | "smoothright" | "smoothup" | "smoothdown" | "circleopen" | "circleclose" | "vertopen" | "vertclose" | "horzopen" | "horzclose" | "dissolve" | "pixelize" | "diagtl" | "diagtr" | "diagbl" | "diagbr"; durationMs: number; params?: Record<string, unknown> | undefined; } | undefined; transitionOut?: { name: "xfade" | "fade" | "wipeleft" | "wiperight" | "wipeup" | "wipedown" | "slideleft" | "slideright" | "slideup" | "slidedown" | "circlecrop" | "rectcrop" | "distance" | "fadeblack" | "fadewhite" | "radial" | "smoothleft" | "smoothright" | "smoothup" | "smoothdown" | "circleopen" | "circleclose" | "vertopen" | "vertclose" | "horzopen" | "horzclose" | "dissolve" | "pixelize" | "diagtl" | "diagtr" | "diagbl" | "diagbr"; durationMs: number; params?: Record<string, unknown> | undefined; } | undefined; }[]; muted?: boolean | undefined; opacity?: number | undefined; }[]; mix?: { ducking?: { id: string; musicTrackId: string; dialogTrackId: string; params?: { ratio?: number | undefined; threshold?: number | undefined; attackMs?: number | undefined; releaseMs?: number | undefined; musicPreGain?: number | undefined; } | undefined; }[] | undefined; } | undefined; }; export: { container: string; videoCodec: string; audioCodec: string; crf?: number | undefined; preset?: string | undefined; audioBitrate?: string | undefined; outFile?: string | undefined; }; subtitles?: { id: string; text: string; startMs: number; endMs: number; audio?: string | undefined; style?: { color?: string | undefined; bold?: boolean | undefined; position?: { x: number; y: number; } | undefined; fontFamily?: string | undefined; fontSize?: number | undefined; outlineColor?: string | undefined; outlineWidth?: number | undefined; align?: "center" | "left" | "right" | undefined; verticalAlign?: "top" | "middle" | "bottom" | undefined; } | undefined; }[] | undefined; }, { version: string; project: { id: string; name: string; }; settings: { fps: number; resolution: { width: number; height: number; }; pixelFormat: string; sampleRate: number; channels: number; timebase: string; }; assets: { id: string; type: "image" | "audio" | "video"; uri: string; fps?: number | undefined; durationMs?: number | undefined; }[]; timeline: { tracks: { id: string; type: "audio" | "video" | "subtitle"; clips: { id: string; durationMs: number; assetId: string; startMs: number; inMs: number; speed?: number | undefined; transform?: { anchor?: "center" | "topleft" | "topright" | "bottomleft" | "bottomright" | undefined; scale?: number | undefined; rotate?: number | undefined; position?: { x: number; y: number; } | undefined; fit?: "contain" | "cover" | "stretch" | undefined; } | undefined; effects?: { name: string; params?: Record<string, unknown> | undefined; }[] | undefined; filters?: { name: string; params?: Record<string, unknown> | undefined; }[] | undefined; transitionIn?: { name: "xfade" | "fade" | "wipeleft" | "wiperight" | "wipeup" | "wipedown" | "slideleft" | "slideright" | "slideup" | "slidedown" | "circlecrop" | "rectcrop" | "distance" | "fadeblack" | "fadewhite" | "radial" | "smoothleft" | "smoothright" | "smoothup" | "smoothdown" | "circleopen" | "circleclose" | "vertopen" | "vertclose" | "horzopen" | "horzclose" | "dissolve" | "pixelize" | "diagtl" | "diagtr" | "diagbl" | "diagbr"; durationMs: number; params?: Record<string, unknown> | undefined; } | undefined; transitionOut?: { name: "xfade" | "fade" | "wipeleft" | "wiperight" | "wipeup" | "wipedown" | "slideleft" | "slideright" | "slideup" | "slidedown" | "circlecrop" | "rectcrop" | "distance" | "fadeblack" | "fadewhite" | "radial" | "smoothleft" | "smoothright" | "smoothup" | "smoothdown" | "circleopen" | "circleclose" | "vertopen" | "vertclose" | "horzopen" | "horzclose" | "dissolve" | "pixelize" | "diagtl" | "diagtr" | "diagbl" | "diagbr"; durationMs: number; params?: Record<string, unknown> | undefined; } | undefined; }[]; muted?: boolean | undefined; opacity?: number | undefined; }[]; mix?: { ducking?: { id: string; musicTrackId: string; dialogTrackId: string; params?: { ratio?: number | undefined; threshold?: number | undefined; attackMs?: number | undefined; releaseMs?: number | undefined; musicPreGain?: number | undefined; } | undefined; }[] | undefined; } | undefined; }; export: { container: string; videoCodec: string; audioCodec: string; crf?: number | undefined; preset?: string | undefined; audioBitrate?: string | undefined; outFile?: string | undefined; }; subtitles?: { id: string; text: string; startMs: number; endMs: number; audio?: string | undefined; style?: { color?: string | undefined; bold?: boolean | undefined; position?: { x: number; y: number; } | undefined; fontFamily?: string | undefined; fontSize?: number | undefined; outlineColor?: string | undefined; outlineWidth?: number | undefined; align?: "center" | "left" | "right" | undefined; verticalAlign?: "top" | "middle" | "bottom" | undefined; } | undefined; }[] | undefined; }>; export type VideoProjectValidated = z.infer<typeof zVideoProject>; export declare function validateProject(json: unknown): VideoProjectValidated; export declare function hasLibass(ffmpegBin?: string): boolean; export type SubtitleStrategy = 'auto' | 'ass' | 'srt' | 'drawtext'; export interface CompileOptions { ffmpegBin?: string; workingDir?: string; subtitleStrategy?: SubtitleStrategy; subtitlesFileName?: string; outFile?: string; } export interface CompileResult { cmd: string; args: string[]; filterGraph: string; extraFiles?: Array<{ path: string; content: string; }>; ffmpegBin: string; } export declare function compileToFfmpeg(project: VideoProjectValidated, opts?: CompileOptions): Promise<CompileResult>; export declare function runFfmpeg(compiled: CompileResult, writeFiles?: boolean): Promise<number>; export declare function escapeDrawtextText(s: string): string; /** * 动态获取媒体文件的真实时长(秒) * 使用多种方法,优先使用纯 JavaScript 库,避免依赖外部工具 * @param filePath 媒体文件路径 * @returns 媒体文件的真实时长(秒),如果获取失败返回 null */ export declare function getMediaDuration(filePath: string): Promise<number | null>; /** * 检查视频文件是否包含音频轨道 * @param filePath 视频文件路径 * @returns Promise<boolean> 如果包含音频轨道返回true,否则返回false */ export declare function checkVideoHasAudio(filePath: string): Promise<boolean>; export type CameraMotion = 'zoom_in' | 'zoom_out' | 'zoom_in_left_top' | 'zoom_in_right_top' | 'zoom_in_left_bottom' | 'zoom_in_right_bottom' | 'zoom_out_left_top' | 'zoom_out_right_top' | 'zoom_out_left_bottom' | 'zoom_out_right_bottom' | 'pan_up' | 'pan_down' | 'pan_left' | 'pan_right' | 'static'; export declare function compileKenBurnsMotion(imagePath: string, duration: number, camera_motion?: CameraMotion, opts?: { fps?: number; width?: number; height?: number; zoomRange?: [number, number]; panRange?: [number, number]; output?: string; }): Promise<string>; //# sourceMappingURL=videokit.d.ts.map