jbilcke-hf's picture
jbilcke-hf HF staff
let's use @aitube/clap inside AiTube
0d218b1
raw
history blame
No virus
1.17 kB
"use client"
import { ClapProject, ClapSegment } from "@aitube/clap"
import { LayerElement } from "../../core/types"
import { generateVideo } from "./generateVideo"
import { BasicVideo } from "./basic-video"
import { useStore } from "@/app/state/useStore"
export async function resolve(segment: ClapSegment, clap: ClapProject): Promise<LayerElement> {
const { prompt } = segment
let src: string = ""
try {
src = await generateVideo({
prompt,
width: clap.meta.width,
height: clap.meta.height,
token: useStore.getState().jwtToken,
mode: "object-uri" // it's better for videos withing Chrome, apparently
})
// console.log(`resolveVideo: generated ${assetUrl}`)
} catch (err) {
console.error(`resolveVideo failed: ${err}`)
return {
id: segment.id,
element: <></>
}
}
// note: the latent-video class is not used for styling, but to grab the component
// from JS when we need to segment etc
return {
id: segment.id,
element: <BasicVideo
className="latent-video object-cover h-full"
src={src}
playsInline
muted
autoPlay
loop
/>
}
}