From 79b7f43c0f413b101c05b5301e228ce0c07897a2 Mon Sep 17 00:00:00 2001 From: moux1024 <403053463@qq.com> Date: Tue, 14 Oct 2025 21:48:00 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=20=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=E5=90=8E=E7=AB=AF=E8=BF=94=E5=9B=9E=E7=9A=84snapshot?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/DTO/movieEdit.ts | 4 ++++ components/pages/work-flow/thumbnail-grid.tsx | 8 ++++---- components/pages/work-flow/use-workflow-data.tsx | 11 ++++++++--- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/api/DTO/movieEdit.ts b/api/DTO/movieEdit.ts index 0e89685..34e84c8 100644 --- a/api/DTO/movieEdit.ts +++ b/api/DTO/movieEdit.ts @@ -267,6 +267,8 @@ export interface VideoData { video_name_prefix: string; /** 视频URL列表 */ urls: string[]; + /** 视频封面图(后端返回) */ + snapshot_urls?: string[]; /** 视频状态 */ video_status: number; } @@ -654,6 +656,7 @@ export interface ShotVideo { urls: string[]; video_status: number; type: string; + snapshot_url?: string; } // 执行loading文字映射 @@ -700,5 +703,6 @@ export interface TaskObject { final: { url: string; note: string; + snapshot_url?: string; }; // 剪辑视频 } \ No newline at end of file diff --git a/components/pages/work-flow/thumbnail-grid.tsx b/components/pages/work-flow/thumbnail-grid.tsx index 12200c4..f579bba 100644 --- a/components/pages/work-flow/thumbnail-grid.tsx +++ b/components/pages/work-flow/thumbnail-grid.tsx @@ -214,7 +214,7 @@ export function ThumbnailGrid({ > final video thumbnail @@ -226,7 +226,7 @@ export function ThumbnailGrid({ muted playsInline loop - poster={getFirstFrame(taskObject.final.url)} + poster={taskObject.final.snapshot_url || getFirstFrame(taskObject.final.url)} preload="none" /> )} @@ -288,7 +288,7 @@ export function ThumbnailGrid({ > video thumbnail @@ -300,7 +300,7 @@ export function ThumbnailGrid({ muted playsInline loop - poster={getFirstFrame(taskObject.videos.data[index].urls[0])} + poster={taskObject.videos.data[index].snapshot_url || getFirstFrame(taskObject.videos.data[index].urls[0])} preload="none" /> )} diff --git a/components/pages/work-flow/use-workflow-data.tsx b/components/pages/work-flow/use-workflow-data.tsx index e132f79..ed9e9c9 100644 --- a/components/pages/work-flow/use-workflow-data.tsx +++ b/components/pages/work-flow/use-workflow-data.tsx @@ -206,6 +206,7 @@ export function useWorkflowData({}: UseWorkflowDataProps = {}) { const all_task_data = response.data; const { current: taskCurrent } = tempTaskObject; let combinerVideoUrl = ''; + let combinerVideoPoster = ''; // 收集所有需要更新的状态 let stateUpdates = JSON.stringify(taskCurrent); @@ -288,7 +289,8 @@ export function useWorkflowData({}: UseWorkflowDataProps = {}) { urls: videoUrls, video_id: video.video_id, video_status: video_status, // 0 生成中 1 生成完成 2 生成失败 - type: 'video' + type: 'video', + snapshot_url: video.snapshot_url }); } taskCurrent.videos.data = videoList; @@ -312,6 +314,7 @@ export function useWorkflowData({}: UseWorkflowDataProps = {}) { if (task.task_name === 'combiner_videos') { if (task.task_status === 'COMPLETED') { combinerVideoUrl = task.task_result.video_url; + combinerVideoPoster = task.task_result.snapshot_url; } if (task.task_status === 'FAILED' || task.task_status === 'ERROR') { taskCurrent.status = 'FAILED'; @@ -338,6 +341,7 @@ export function useWorkflowData({}: UseWorkflowDataProps = {}) { taskCurrent.currentStage = 'final_video'; taskCurrent.final.url = combinerVideoUrl; taskCurrent.final.note = 'combiner'; + taskCurrent.final.snapshot_url = combinerVideoPoster; taskCurrent.status = 'COMPLETED'; // 停止轮询 setNeedStreamData(false); @@ -410,7 +414,7 @@ export function useWorkflowData({}: UseWorkflowDataProps = {}) { } const { status, data, tags, mode, original_text, aspect_ratio, name, final_simple_video, final_video } = response.data; - + const { current: taskCurrent } = tempTaskObject; taskCurrent.title = name || 'generating...'; @@ -492,7 +496,8 @@ export function useWorkflowData({}: UseWorkflowDataProps = {}) { urls: videoUrls, video_id: video.video_id, video_status: video_status, // 0 生成中 1 生成完成 2 生成失败 - type: 'video' + type: 'video', + snapshot_url: video.snapshot_urls?.[0] || '' }); } taskCurrent.videos.data = videoList;