25 lines
1.4 KiB
TypeScript
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 };
|
|
}
|