VideoChain-UI / src /app /types.ts
jbilcke-hf's picture
jbilcke-hf HF staff
preparing repo for multivideo
8f24b44
export type VideoStatus =
| 'pending'
| 'abort' // this is an order (the video might still being processed by a task)
| 'delete' // this is an order (the video might still being processed by a task)
| 'pause' // this is an order (the video might still being processed by a task)
| 'completed'
| 'unknown'
export type VideoTransition =
| 'dissolve'
| 'bookflip'
| 'bounce'
| 'bowtiehorizontal'
| 'bowtievertical'
| 'bowtiewithparameter'
| 'butterflywavescrawler'
| 'circlecrop'
| 'colourdistance'
| 'crazyparametricfun'
| 'crosszoom'
| 'directional'
| 'directionalscaled'
| 'doomscreentransition'
| 'dreamy'
| 'dreamyzoom'
| 'edgetransition'
| 'filmburn'
| 'filmburnglitchdisplace'
| 'glitchmemories'
| 'gridflip'
| 'horizontalclose'
| 'horizontalopen'
| 'invertedpagecurl'
| 'leftright'
| 'linearblur'
| 'mosaic'
| 'overexposure'
| 'polkadotscurtain'
| 'radial'
| 'rectangle'
| 'rectanglecrop'
| 'rolls'
| 'rotatescalevanish'
| 'simplezoom'
| 'simplezoomout'
| 'slides'
| 'staticfade'
| 'stereoviewer'
| 'swirl'
| 'tvstatic'
| 'topbottom'
| 'verticalclose'
| 'verticalopen'
| 'waterdrop'
| 'waterdropzoomincircles'
| 'zoomleftwipe'
| 'zoomrigthwipe'
| 'angular'
| 'burn'
| 'cannabisleaf'
| 'circle'
| 'circleopen'
| 'colorphase'
| 'coordfromin'
| 'crosshatch'
| 'crosswarp'
| 'cube'
| 'directionaleasing'
| 'directionalwarp'
| 'directionalwipe'
| 'displacement'
| 'doorway'
| 'fade'
| 'fadecolor'
| 'fadegrayscale'
| 'flyeye'
| 'heart'
| 'hexagonalize'
| 'kaleidoscope'
| 'luma'
| 'luminance_melt'
| 'morph'
| 'mosaic_transition'
| 'multiply_blend'
| 'perlin'
| 'pinwheel'
| 'pixelize'
| 'polar_function'
| 'powerkaleido'
| 'randomnoisex'
| 'randomsquares'
| 'ripple'
| 'rotatetransition'
| 'rotate_scale_fade'
| 'scalein'
| 'squareswire'
| 'squeeze'
| 'static_wipe'
| 'swap'
| 'tangentmotionblur'
| 'undulatingburnout'
| 'wind'
| 'windowblinds'
| 'windowslice'
| 'wipedown'
| 'wipeleft'
| 'wiperight'
| 'wipeup'
| 'x_axistranslation'
export interface VideoShotMeta {
shotPrompt: string
// inputVideo?: string
// describe the background audio (crowd, birds, wind, sea etc..)
backgroundAudioPrompt: string
// describe the foreground audio (cars revving, footsteps, objects breaking, explosion etc)
foregroundAudioPrompt: string
// describe the main actor visible in the shot (optional)
actorPrompt: string
// describe the main actor voice (man, woman, old, young, amused, annoyed.. etc)
actorVoicePrompt: string
// describe the main actor dialogue line
actorDialoguePrompt: string
seed: number
noise: boolean // add movie noise
noiseAmount: number // noise strength (default is 2, and 10 is very visible)
durationMs: number // in milliseconds
steps: number
fps: number // 8, 12, 24, 30, 60
resolution: string // {width}x{height} (256, 512, 576, 720, 1080)
introTransition: VideoTransition
introDurationMs: number // in milliseconds
}
export interface VideoShotData {
// must be unique
id: string
sequenceId: string
ownerId: string
fileName: string
// used to check compatibility
version: number
// for internal use
hasGeneratedPreview: boolean
hasGeneratedVideo: boolean
hasUpscaledVideo: boolean
hasGeneratedBackgroundAudio: boolean
hasGeneratedForegroundAudio: boolean
hasGeneratedActor: boolean
hasInterpolatedVideo: boolean
hasAddedAudio: boolean
hasPostProcessedVideo: boolean
nbCompletedSteps: number
nbTotalSteps: number
progressPercent: number
createdAt: string
completedAt: string
completed: boolean
error: string
}
export type VideoShot = VideoShotMeta & VideoShotData
export interface VideoSequenceMeta {
// describe the whole movie
videoPrompt: string
// describe the background audio (crowd, birds, wind, sea etc..)
backgroundAudioPrompt: string
// describe the foreground audio (cars revving, footsteps, objects breaking, explosion etc)
foregroundAudioPrompt: string
// describe the main actor visible in the shot (optional)
actorPrompt: string
// describe the main actor voice (man, woman, old, young, amused, annoyed.. etc)
actorVoicePrompt: string
// describe the main actor dialogue line
actorDialoguePrompt: string
seed: number
noise: boolean // add movie noise
noiseAmount: number // noise strength (default is 2, and 10 is very visible)
steps: number // between 10 and 50
fps: number // 8, 12, 24, 30, 60
resolution: string // 256, 512, 576, 720, 1080
outroTransition: VideoTransition
outroDurationMs: number
}
export interface VideoSequenceData {
// must be unique
id: string
ownerId: string
fileName: string
// used to check compatibility
version: number
status: VideoStatus
hasGeneratedSpecs: boolean
hasAssembledVideo: boolean
nbCompletedShots: number
progressPercent: number
createdAt: string
completedAt: string
completed: boolean
error: string
}
export type VideoSequence = VideoSequenceMeta & VideoSequenceData
export type VideoStatusRequest = {
status: VideoStatus
}
export type GenericAPIResponse = {
success?: boolean
error?: string
}
export type VideoAPIRequest = Partial<{
prompt: string
sequence: Partial<VideoSequenceMeta>
shots: Array<Partial<VideoShotMeta>>
}>
export type Video = VideoSequence & {
shots: VideoShot[]
}