fix(canvas): 视频首尾帧 - 保留结构化帧并按协议顺序传参

This commit is contained in:
ddCat committed 2026-08-01 10:20:47 +08:00
1 parent 2ceaa56cd8
commit 49133a7c2a
6 files changed
+82 -17

No files matched your search

@@ -276,8 +276,9 @@ export function buildVideoGenerationMetadata(
},
): CanvasNodeMetadata {
const metadata = node?.metadata;
const startFrame = metadata?.videoStartFrameNodeId && context?.referenceImages.some((image) => image.id === metadata.videoStartFrameNodeId) ? metadata.videoStartFrameNodeId : undefined;
const endFrame = metadata?.videoEndFrameNodeId && context?.referenceImages.some((image) => image.id === metadata.videoEndFrameNodeId) ? metadata.videoEndFrameNodeId : undefined;
const referenceImageIds = new Set((context?.referenceImages || []).map((image) => image.id));
const startFrame = requireConnectedVideoFrame(metadata?.videoStartFrameNodeId, "首帧", referenceImageIds);
const endFrame = requireConnectedVideoFrame(metadata?.videoEndFrameNodeId, "尾帧", referenceImageIds);
return {
videoEditOperation: resolveVideoEditOperation(node, context),
videoCameraMoveId: metadata?.videoCameraMoveId,
@@ -287,6 +288,12 @@ export function buildVideoGenerationMetadata(
};
}
function requireConnectedVideoFrame(frameNodeId: string | undefined, label: string, referenceImageIds: Set<string>) {
if (!frameNodeId) return undefined;
if (referenceImageIds.has(frameNodeId)) return frameNodeId;
throw new Error(`已配置的${label}参考图未连接或不可用,请重新选择后再生成`);
}
export async function resolveMetadataReferences(metadata: CanvasNodeMetadata) {
if (metadata.generationType !== "edit") return [];
if (!metadata.references?.length) return null;