生成视频

This commit is contained in:
小帅 2026-03-23 10:06:31 +08:00
parent c3dd7ade64
commit cf22b8f948
4 changed files with 52 additions and 96 deletions

View File

@ -309,11 +309,12 @@ export default async (knex: Knex, forceInit: boolean = false): Promise<void> =>
table.integer("id").notNullable();
table.integer("scriptId");
table.text("name");
table.text("detail");
table.text("prompt");
table.text("seconds");
table.text("filePath");
table.text("frameType");
table.text("model");
table.text("mode");
table.text("duration");
table.text("resolution");
table.integer("createTime");
table.primary(["id"]);
table.unique(["id"]);
@ -350,7 +351,7 @@ export default async (knex: Knex, forceInit: boolean = false): Promise<void> =>
builder: (table) => {
table.integer("id").notNullable();
table.integer("storyboardId");
table.integer("videoId");
table.integer("videoId");
table.integer("audio"); // 声音
table.text("model"); // 模型
table.text("mode"); // 模式:

View File

@ -71,11 +71,39 @@ export default router.post(
const data = await Promise.all(
storyboards.map(async (storyboard) => {
const sid = storyboard.id as number;
const config = configMap.get(sid) ?? null;
let configDataWithFilePath: any[] = [];
if (config?.data) {
const parsedData: { id: number; type: string }[] = JSON.parse(config.data);
configDataWithFilePath = await Promise.all(
parsedData.map(async (item) => {
if (item.type === "storyboard") {
const row = await u.db("o_storyboard").where("id", item.id).select("filePath").first();
return row?.filePath ? await u.oss.getFileUrl(row.filePath) : null;
}
if (item.type === "assets") {
const row = await u
.db("o_assets")
.where("o_assets.id", item.id)
.leftJoin("o_image", "o_assets.imageId", "o_image.id")
.select("o_image.filePath")
.first();
return row?.filePath ? await u.oss.getFileUrl(row.filePath) : null;
}
return null;
}),
);
}
return {
...storyboard,
filePath: storyboard.filePath && (await u.oss.getFileUrl(storyboard.filePath!)),
config: configMap.get(sid) ?? null,
videos: videoMap.get(sid) ?? [],
config: config ? { ...config, data: configDataWithFilePath } : null,
videos: await Promise.all(
(videoMap.get(sid) ?? []).map(async (video) => ({
...video,
filePath: video.filePath ? await u.oss.getFileUrl(video.filePath) : null,
})),
),
};
}),
);

View File

@ -22,7 +22,7 @@ export default router.post(
)
.optional(),
model: z.string(),
duration: z.string(),
duration: z.number(),
resolution: z.string(),
audio: z.boolean().optional(),
mode: z.string(),

View File

@ -1,4 +1,4 @@
// @db-hash 8af8e41e3ca0cb5ee554944515d72ba8
// @db-hash 18bcc156a22196f0e296ee2b33700879
//该文件由脚本自动生成,请勿手动修改
export interface memories {
@ -35,18 +35,12 @@ export interface o_assets {
'projectId'?: number | null;
'prompt'?: string | null;
'remark'?: string | null;
'scriptId'?: number | null;
'sonId'?: number | null;
'startTime'?: number | null;
'state'?: string | null;
'type'?: string | null;
}
export interface o_chatHistory {
'data'?: string | null;
'id'?: number;
'novel'?: string | null;
'projectId'?: number | null;
'type'?: string | null;
}
export interface o_event {
'createTime'?: number | null;
'detail'?: string | null;
@ -67,33 +61,10 @@ export interface o_image {
'assetsId'?: number | null;
'filePath'?: string | null;
'id'?: number;
'projectId'?: number | null;
'scriptId'?: number | null;
'model'?: string | null;
'resolution'?: string | null;
'state'?: string | null;
'type'?: string | null;
'videoId'?: number | null;
}
export interface o_model {
'apiKey'?: string | null;
'baseUrl'?: string | null;
'createTime'?: number | null;
'id'?: number;
'index'?: number | null;
'manufacturer'?: string | null;
'model'?: string | null;
'modelType'?: string | null;
'type'?: string | null;
}
export interface o_myTasks {
'describe'?: string | null;
'id'?: number;
'model'?: string | null;
'projectId'?: number | null;
'reason'?: string | null;
'relatedObjects'?: string | null;
'startTime'?: number | null;
'state'?: string | null;
'taskClass'?: string | null;
}
export interface o_novel {
'chapter'?: string | null;
@ -126,15 +97,6 @@ export interface o_project {
'userId'?: number | null;
'videoRatio'?: string | null;
}
export interface o_prompts {
'code'?: string | null;
'customValue'?: string | null;
'defaultValue'?: string | null;
'id'?: number;
'name'?: string | null;
'parentCode'?: string | null;
'type'?: string | null;
}
export interface o_script {
'content'?: string | null;
'createTime'?: number | null;
@ -142,45 +104,27 @@ export interface o_script {
'name'?: string | null;
'projectId'?: number | null;
}
export interface o_scriptAssets {
'assetsId'?: number | null;
'id'?: number;
'scriptId'?: number | null;
}
export interface o_scriptOutline {
'id'?: number;
'outlineId'?: number | null;
'scriptId'?: number | null;
}
export interface o_setting {
'key'?: string | null;
'value'?: string | null;
}
export interface o_skills {
'id'?: number;
'name'?: string | null;
'startTime'?: number | null;
}
export interface o_storyboard {
'createTime'?: number | null;
'detail'?: string | null;
'duration'?: string | null;
'filePath'?: string | null;
'frameType'?: string | null;
'id'?: number;
'mode'?: string | null;
'model'?: string | null;
'name'?: string | null;
'prompt'?: string | null;
'seconds'?: string | null;
'resolution'?: string | null;
'scriptId'?: number | null;
}
export interface o_storyboardFlow {
'flowData': string;
'id'?: number;
'stroryboardId': number;
}
export interface o_storyboardScript {
'id'?: number;
'scriptId'?: number | null;
'storyboardId'?: number | null;
}
export interface o_tasks {
'describe'?: string | null;
'id'?: number;
@ -209,36 +153,27 @@ export interface o_vendorConfig {
'version'?: string | null;
}
export interface o_video {
'configId'?: number | null;
'errorReason'?: string | null;
'filePath'?: string | null;
'firstFrame'?: string | null;
'id'?: number;
'model'?: string | null;
'prompt'?: string | null;
'resolution'?: string | null;
'scriptId'?: number | null;
'state'?: number | null;
'storyboardImgs'?: string | null;
'state'?: string | null;
'storyboardId'?: number | null;
'time'?: number | null;
}
export interface o_videoConfig {
'aiConfigId'?: number | null;
'audioEnabled'?: number | null;
'audio'?: number | null;
'createTime'?: number | null;
'data'?: string | null;
'duration'?: number | null;
'endFrame'?: string | null;
'id'?: number;
'images'?: string | null;
'manufacturer'?: string | null;
'mode'?: string | null;
'projectId'?: number | null;
'model'?: string | null;
'prompt'?: string | null;
'resolution'?: string | null;
'scriptId'?: number | null;
'selectedResultId'?: number | null;
'startFrame'?: string | null;
'storyboardId'?: number | null;
'updateTime'?: number | null;
'videoId'?: number | null;
}
export interface DB {
@ -246,26 +181,18 @@ export interface DB {
"o_agentDeploy": o_agentDeploy;
"o_artStyle": o_artStyle;
"o_assets": o_assets;
"o_chatHistory": o_chatHistory;
"o_event": o_event;
"o_eventChapter": o_eventChapter;
"o_flowData": o_flowData;
"o_image": o_image;
"o_model": o_model;
"o_myTasks": o_myTasks;
"o_novel": o_novel;
"o_outline": o_outline;
"o_outlineNovel": o_outlineNovel;
"o_project": o_project;
"o_prompts": o_prompts;
"o_script": o_script;
"o_scriptAssets": o_scriptAssets;
"o_scriptOutline": o_scriptOutline;
"o_setting": o_setting;
"o_skills": o_skills;
"o_storyboard": o_storyboard;
"o_storyboardFlow": o_storyboardFlow;
"o_storyboardScript": o_storyboardScript;
"o_tasks": o_tasks;
"o_user": o_user;
"o_vendorConfig": o_vendorConfig;