20260429_232813-fix: video frame display pipeline — default project seed, presigned URLs, Canvas/FrameTimeline real frames, upload-parse flow

This commit is contained in:
2026-04-29 23:42:18 +08:00
parent 51f1a60216
commit 35d6e1503c
16 changed files with 454 additions and 56 deletions

View File

@@ -0,0 +1,26 @@
# 需求分析 — 视频帧显示链路修复
## 问题背景
用户报告三个关联问题:
1. 项目库中没有默认视频 `Data_MyVideo_1.mp4`
2. 点击默认视频进入分割工作区后,画面区域一片黑(无影像)
3. 导入新视频后进入工作区,同样看不到视频帧
## 根因分析
| 问题 | 根因 |
|------|------|
| 无默认项目 | 后端 lifespan 无自动种子逻辑;`server.ts` 硬编码项目但前端根本不请求 Express |
| 工作区黑屏 | `CanvasArea.tsx` 硬编码 Unsplash 外链,未从 store 读取帧;进入工作区不调用帧列表 API |
| 导入后黑屏 | 上传未关联 project_id上传后未触发 `/api/media/parse` 帧提取;后端 `/frames` 返回的是 MinIO 对象名而非可访问 URL |
## 需求拆解
| 编号 | 需求 | 优先级 |
|------|------|--------|
| R1 | 后端启动时自动检测并注册 `Data_MyVideo_1.mp4` 为默认项目 | P0 |
| R2 | 后端 `/api/projects/{id}/frames` 返回 presigned URL 而非对象名 | P0 |
| R3 | 后端 `ProjectOut` 增加 `frame_count` 供前端显示 | P1 |
| R4 | 前端 `VideoWorkspace` 进入时自动获取帧列表并写入 store | P0 |
| R5 | 前端 `CanvasArea` 从 store 读取当前帧 URL 并渲染 | P0 |
| R6 | 前端 `FrameTimeline` 从 store 读取真实帧数据,支持切换 | P0 |
| R7 | 前端 `ProjectLibrary` 上传流程:创建项目 → 带 project_id 上传 → 触发解析 | P0 |
| R8 | 后端 upload 接口支持无 project_id 时自动创建项目 | P1 |