ai-chatbot/lib/video-canvas/video-edit-request.ts

25 lines
1.4 KiB
TypeScript

import type { VideoEditRequest } from "./video-edit-contract";
export function buildAliyunVideoEditRequest(input: VideoEditRequest, maskUrl?: string) {
const parameters: Record<string, unknown> = { prompt_extend: false, watermark: false };
let modelInput: Record<string, unknown>;
if (input.operation === "intro") {
modelInput = { function: "video_extension", prompt: input.prompt || "生成与尾段自然衔接的创意片头", last_clip_url: input.sourceUrl };
} else if (input.operation === "repaint") {
modelInput = { prompt: input.prompt || "保持原视频主体身份、动作与场景,提升镜头质感和光影,其他保持不变", media: [{ type: "video", url: input.sourceUrl }] };
parameters.resolution = "720P";
return { model: "wan2.7-videoedit", input: modelInput, parameters };
} else {
if (!maskUrl) throw new Error("区域编辑需要掩码图像");
modelInput = {
function: "video_edit",
prompt: input.prompt || (input.operation === "subtitle" ? "移除画面底部字幕和文字,按周围画面自然修复背景" : "移除框选主体,按周围画面自然修复背景"),
video_url: input.sourceUrl,
mask_image_url: maskUrl,
mask_frame_id: 1,
};
parameters.mask_type = input.operation === "erase" ? "tracking" : "fixed";
}
return { model: "wanx2.1-vace-plus", input: modelInput, parameters };
}