Logo
RavenSaaS Docs

视频生成

RavenSaaS 使用 ai-sdk 作为基础库,结合自定义的 Provider,支持了市面上主流的视频生成模型。

使用 Kling AI 的视频模型

需要先在 Kling AI 充值 Video Generation API,并 创建 API Key。

1. 设置环境变量

.env.development
1KLING_ACCESS_KEY = "xxx"
2KLING_SECRET_KEY = "xxx"

2. 生成视频

注意

这里使用的是 RavenSaaS 自定义 generateVideo 方法,和自定义的 Provider:import '{ kling }' from "@/aisdk/kling";,跟 @ai-sdk 下的 Provider 导入路径有差异。

providerOptions.kling 支持的参数,参考 Kling Text to Video API 文档

app/api/demo/gen-video/route.ts
1import { generateVideo } from "@/aisdk";
2import { kling } from "@/aisdk/kling";
3
4const prompt = "a beautiful girl running with 2 cats";
5const model = "kling-v1-6";
6
7const videoModel = kling.video(model);
8const providerOptions = {
9  kling: {
10    mode: "std",
11    duration: 5,
12  },
13};
14
15const { videos, warnings } = await generateVideo({
16  model: videoModel,
17  prompt: prompt,
18  n: 1,
19  providerOptions,
20});

生成时间说明

kling-v1-6 模型生成 5s 的视频,大概需要 4 分钟。kling-v1 会更久一点。

generateVideo 方法默认同步生成视频,你需要等待视频生成完成,才能断开与服务端的连接。

3. 预览效果

Kling AI 视频生成效果示例

保存视频到本地文件

通过 generateVideo 生成的视频,是 base64 编码的字符串数组。

你可以参考下面的代码,将视频内容保存到本地文件。

app/api/demo/gen-video/route.ts
1const { videos, warnings } = await generateVideo({
2  model: videoModel,
3  prompt: prompt,
4  n: 1,
5  providerOptions,
6});
7
8if (warnings.length > 0) {
9  console.log("gen videos warnings:", provider, warnings);
10  return respErr("gen videos failed");
11}
12
13const batch = getUuid();
14
15const processedImages = await Promise.all(
16  videos.map(async (video, index) => {
17    const fileName = `${provider}_video_${batch}_${index}.mp4`;
18    const filePath = path.join(process.cwd(), ".tmp", fileName);
19
20    const buffer = Buffer.from(video.base64, "base64");
21    await writeFile(filePath, buffer);
22
23    return {
24      provider,
25      fileName,
26      filePath,
27    };
28  })
29);

参考

Kling AI Documentation

Kling AI 官方文档

查看文档