forked from 77media/video-flow
新增 使用后端返回的snapshot
This commit is contained in:
parent
7beab504af
commit
79b7f43c0f
@ -267,6 +267,8 @@ export interface VideoData {
|
|||||||
video_name_prefix: string;
|
video_name_prefix: string;
|
||||||
/** 视频URL列表 */
|
/** 视频URL列表 */
|
||||||
urls: string[];
|
urls: string[];
|
||||||
|
/** 视频封面图(后端返回) */
|
||||||
|
snapshot_urls?: string[];
|
||||||
/** 视频状态 */
|
/** 视频状态 */
|
||||||
video_status: number;
|
video_status: number;
|
||||||
}
|
}
|
||||||
@ -654,6 +656,7 @@ export interface ShotVideo {
|
|||||||
urls: string[];
|
urls: string[];
|
||||||
video_status: number;
|
video_status: number;
|
||||||
type: string;
|
type: string;
|
||||||
|
snapshot_url?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 执行loading文字映射
|
// 执行loading文字映射
|
||||||
@ -700,5 +703,6 @@ export interface TaskObject {
|
|||||||
final: {
|
final: {
|
||||||
url: string;
|
url: string;
|
||||||
note: string;
|
note: string;
|
||||||
|
snapshot_url?: string;
|
||||||
}; // 剪辑视频
|
}; // 剪辑视频
|
||||||
}
|
}
|
||||||
@ -214,7 +214,7 @@ export function ThumbnailGrid({
|
|||||||
>
|
>
|
||||||
<img
|
<img
|
||||||
className="w-full h-full object-cover"
|
className="w-full h-full object-cover"
|
||||||
src={getFirstFrame(taskObject.final.url)}
|
src={taskObject.final.snapshot_url || getFirstFrame(taskObject.final.url)}
|
||||||
draggable="false"
|
draggable="false"
|
||||||
alt="final video thumbnail"
|
alt="final video thumbnail"
|
||||||
/>
|
/>
|
||||||
@ -226,7 +226,7 @@ export function ThumbnailGrid({
|
|||||||
muted
|
muted
|
||||||
playsInline
|
playsInline
|
||||||
loop
|
loop
|
||||||
poster={getFirstFrame(taskObject.final.url)}
|
poster={taskObject.final.snapshot_url || getFirstFrame(taskObject.final.url)}
|
||||||
preload="none"
|
preload="none"
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
@ -288,7 +288,7 @@ export function ThumbnailGrid({
|
|||||||
>
|
>
|
||||||
<img
|
<img
|
||||||
className="w-full h-full object-cover"
|
className="w-full h-full object-cover"
|
||||||
src={getFirstFrame(taskObject.videos.data[index].urls[0])}
|
src={taskObject.videos.data[index].snapshot_url || getFirstFrame(taskObject.videos.data[index].urls[0])}
|
||||||
draggable="false"
|
draggable="false"
|
||||||
alt="video thumbnail"
|
alt="video thumbnail"
|
||||||
/>
|
/>
|
||||||
@ -300,7 +300,7 @@ export function ThumbnailGrid({
|
|||||||
muted
|
muted
|
||||||
playsInline
|
playsInline
|
||||||
loop
|
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"
|
preload="none"
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
|
|||||||
@ -206,6 +206,7 @@ export function useWorkflowData({}: UseWorkflowDataProps = {}) {
|
|||||||
const all_task_data = response.data;
|
const all_task_data = response.data;
|
||||||
const { current: taskCurrent } = tempTaskObject;
|
const { current: taskCurrent } = tempTaskObject;
|
||||||
let combinerVideoUrl = '';
|
let combinerVideoUrl = '';
|
||||||
|
let combinerVideoPoster = '';
|
||||||
|
|
||||||
// 收集所有需要更新的状态
|
// 收集所有需要更新的状态
|
||||||
let stateUpdates = JSON.stringify(taskCurrent);
|
let stateUpdates = JSON.stringify(taskCurrent);
|
||||||
@ -288,7 +289,8 @@ export function useWorkflowData({}: UseWorkflowDataProps = {}) {
|
|||||||
urls: videoUrls,
|
urls: videoUrls,
|
||||||
video_id: video.video_id,
|
video_id: video.video_id,
|
||||||
video_status: video_status, // 0 生成中 1 生成完成 2 生成失败
|
video_status: video_status, // 0 生成中 1 生成完成 2 生成失败
|
||||||
type: 'video'
|
type: 'video',
|
||||||
|
snapshot_url: video.snapshot_url
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
taskCurrent.videos.data = videoList;
|
taskCurrent.videos.data = videoList;
|
||||||
@ -312,6 +314,7 @@ export function useWorkflowData({}: UseWorkflowDataProps = {}) {
|
|||||||
if (task.task_name === 'combiner_videos') {
|
if (task.task_name === 'combiner_videos') {
|
||||||
if (task.task_status === 'COMPLETED') {
|
if (task.task_status === 'COMPLETED') {
|
||||||
combinerVideoUrl = task.task_result.video_url;
|
combinerVideoUrl = task.task_result.video_url;
|
||||||
|
combinerVideoPoster = task.task_result.snapshot_url;
|
||||||
}
|
}
|
||||||
if (task.task_status === 'FAILED' || task.task_status === 'ERROR') {
|
if (task.task_status === 'FAILED' || task.task_status === 'ERROR') {
|
||||||
taskCurrent.status = 'FAILED';
|
taskCurrent.status = 'FAILED';
|
||||||
@ -338,6 +341,7 @@ export function useWorkflowData({}: UseWorkflowDataProps = {}) {
|
|||||||
taskCurrent.currentStage = 'final_video';
|
taskCurrent.currentStage = 'final_video';
|
||||||
taskCurrent.final.url = combinerVideoUrl;
|
taskCurrent.final.url = combinerVideoUrl;
|
||||||
taskCurrent.final.note = 'combiner';
|
taskCurrent.final.note = 'combiner';
|
||||||
|
taskCurrent.final.snapshot_url = combinerVideoPoster;
|
||||||
taskCurrent.status = 'COMPLETED';
|
taskCurrent.status = 'COMPLETED';
|
||||||
// 停止轮询
|
// 停止轮询
|
||||||
setNeedStreamData(false);
|
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 { status, data, tags, mode, original_text, aspect_ratio, name, final_simple_video, final_video } = response.data;
|
||||||
|
|
||||||
const { current: taskCurrent } = tempTaskObject;
|
const { current: taskCurrent } = tempTaskObject;
|
||||||
|
|
||||||
taskCurrent.title = name || 'generating...';
|
taskCurrent.title = name || 'generating...';
|
||||||
@ -492,7 +496,8 @@ export function useWorkflowData({}: UseWorkflowDataProps = {}) {
|
|||||||
urls: videoUrls,
|
urls: videoUrls,
|
||||||
video_id: video.video_id,
|
video_id: video.video_id,
|
||||||
video_status: video_status, // 0 生成中 1 生成完成 2 生成失败
|
video_status: video_status, // 0 生成中 1 生成完成 2 生成失败
|
||||||
type: 'video'
|
type: 'video',
|
||||||
|
snapshot_url: video.snapshot_urls?.[0] || ''
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
taskCurrent.videos.data = videoList;
|
taskCurrent.videos.data = videoList;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user