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({
>
@@ -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({
>
@@ -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;