chore: sync code and project files
This commit is contained in:
52
docs/04-development/DEV-LEGACY-SCHEMA-20251215.md
Normal file
52
docs/04-development/DEV-LEGACY-SCHEMA-20251215.md
Normal file
@@ -0,0 +1,52 @@
|
||||
# Legacy Project JSON Schema Scan Report
|
||||
|
||||
- temp_dir: `/opt/gloda-factory/temp`
|
||||
- total_files: 18
|
||||
- parsed_files: 18
|
||||
- failed_files: 0
|
||||
|
||||
## Schema variants
|
||||
|
||||
- Schema_A: 13 (samples: 0b0f819a, 18470131, 26ed8fa0, 3ce8a4ee, 61e70d91)
|
||||
- Unknown: 4 (samples: 01897830, 61a1e46d, 70663b6c, bf58ccd5)
|
||||
- Schema_B: 1 (samples: 690b2c54)
|
||||
|
||||
## CTA type distribution
|
||||
|
||||
- str: 17
|
||||
- dict: 1
|
||||
|
||||
## Top-level keys (top 30)
|
||||
|
||||
- id: 18/18
|
||||
- created_at: 18/18
|
||||
- status: 18/18
|
||||
- input_mode: 18/18
|
||||
- prompt: 18/18
|
||||
- image_urls: 18/18
|
||||
- video_url: 18/18
|
||||
- asr_text: 18/18
|
||||
- analysis: 18/18
|
||||
- questions: 18/18
|
||||
- answers: 18/18
|
||||
- hook: 18/18
|
||||
- scenes: 18/18
|
||||
- cta: 18/18
|
||||
- final_video_url: 18/18
|
||||
- bgm_url: 18/18
|
||||
|
||||
## Scene keys (top 40)
|
||||
|
||||
- id: 74
|
||||
- duration: 74
|
||||
- timeline: 74
|
||||
- camera_movement: 74
|
||||
- story_beat: 74
|
||||
- voiceover: 74
|
||||
- rhythm: 74
|
||||
- image_prompt: 69
|
||||
- keyframe: 69
|
||||
- sound_design: 69
|
||||
- image_url: 47
|
||||
- keyframes: 5
|
||||
|
||||
51
docs/07-user/USER-002-贴纸库数据源与授权.md
Normal file
51
docs/07-user/USER-002-贴纸库数据源与授权.md
Normal file
@@ -0,0 +1,51 @@
|
||||
## 目标
|
||||
为编辑器内置一个**适合抖音场景**的贴纸库(PNG/SVG),并保证:
|
||||
- **可商用/可分发**(许可清晰)
|
||||
- **可本地托管**(不依赖外部 CDN)
|
||||
- **所见即所得**:预览与导出一致(贴纸叠加到成片)
|
||||
|
||||
## 推荐贴纸库(抖音场景友好)
|
||||
### 方案 A:Microsoft Fluent UI Emoji(更“抖音感”)
|
||||
- **风格**:高饱和、现代、偏 3D/大图标,适合“强调/氛围/卖点”
|
||||
- **形态**:PNG/SVG(仓库提供多种风格/尺寸)
|
||||
- **适用**:火/赞/心/星星/箭头/提示/表情等常用贴纸
|
||||
- **风险**:请在引入前再次核对仓库 LICENSE(不同仓库/分支可能不同)
|
||||
|
||||
### 方案 B:Twemoji(稳定、覆盖全、但更像“emoji”)
|
||||
- **风格**:标准 emoji
|
||||
- **形态**:PNG/SVG
|
||||
- **适用**:作为“基础补全库”非常合适
|
||||
- **风险**:通常需要署名(CC-BY 类);引入前核对 LICENSE
|
||||
|
||||
### 不推荐(默认)
|
||||
### OpenMoji
|
||||
- **优点**:开源清晰、SVG 质量高
|
||||
- **缺点**:常见为 CC BY-SA(“同协议分享”约束强),对商业产品和二次分发不友好
|
||||
|
||||
## 贴纸库落地方式(本项目)
|
||||
本项目支持两类贴纸:
|
||||
- **内置贴纸**:放在 `assets/stickers_builtin/`,通过 `assets/stickers_builtin/index.json` 声明分类/标签/授权信息。
|
||||
- **自定义贴纸**:用户上传到 `assets/stickers_custom/`,可直接在 UI 里使用。
|
||||
|
||||
后端接口:
|
||||
- `GET /api/assets/stickers`:返回贴纸列表(合并 builtin + custom)
|
||||
- `POST /api/assets/stickers/upload`:上传 PNG/SVG/WEBP
|
||||
|
||||
前端能力:
|
||||
- 左侧 **“贴纸”** Tab:搜索/分类/缩略图;**拖拽到时间轴**生成贴纸片段
|
||||
- 时间轴新增 **“贴纸”轨道**:贴纸片段可移动/裁剪时长
|
||||
- 右侧属性:贴纸 **大小/旋转/X/Y**
|
||||
|
||||
导出(WYSIWYG):
|
||||
- FFmpeg 叠加贴纸:`overlay_multiple_images`
|
||||
- SVG 会在导出侧被转换为 PNG(优先使用 `rsvg-convert`,Dockerfile 已加入 `librsvg2-bin`)
|
||||
|
||||
## 下一步:把“推荐贴纸库”真正导入到 assets(需要一次性下载)
|
||||
由于贴纸库体积很大(数千~上万文件),建议用脚本把需要的子集同步到 `assets/stickers_builtin/`:
|
||||
- 先挑“抖音高频类目”:点赞/关注/箭头/爆款/促销/emoji 表情/弹幕气泡
|
||||
- 再逐步扩展
|
||||
|
||||
我建议你确认最终选用的库(Fluent vs Twemoji)后,我可以给你一个“按清单下载 + 生成 index.json”的脚本(可在服务器执行)。
|
||||
|
||||
|
||||
|
||||
164
docs/EDITOR_README.md
Normal file
164
docs/EDITOR_README.md
Normal file
@@ -0,0 +1,164 @@
|
||||
# Video Flow Editor - 视频编辑器
|
||||
|
||||
## 概述
|
||||
|
||||
Video Flow Editor 是一个基于浏览器的视频编辑器,支持多轨道时间轴编辑,与现有的 AI 视频生成工作流无缝集成。
|
||||
|
||||
## 架构
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────┐
|
||||
│ React Frontend (:3000) │
|
||||
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │
|
||||
│ │ Remotion │ │ Timeline │ │ Track Panel │ │
|
||||
│ │ 预览播放器 │ │ 时间轴 │ │ 轨道属性面板 │ │
|
||||
│ └─────────────┘ └─────────────┘ └─────────────────────┘ │
|
||||
└─────────────────────────────────────────────────────────────┘
|
||||
│
|
||||
▼
|
||||
┌─────────────────────────────────────────────────────────────┐
|
||||
│ FastAPI Backend (:8000) │
|
||||
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │
|
||||
│ │ 项目管理 │ │ 编辑器 API │ │ 合成 API │ │
|
||||
│ └─────────────┘ └─────────────┘ └─────────────────────┘ │
|
||||
└─────────────────────────────────────────────────────────────┘
|
||||
│
|
||||
▼
|
||||
┌─────────────────────────────────────────────────────────────┐
|
||||
│ Celery + Redis │
|
||||
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │
|
||||
│ │ 任务队列 │ │ Worker 1 │ │ Worker N... │ │
|
||||
│ └─────────────┘ └─────────────┘ └─────────────────────┘ │
|
||||
└─────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
## 功能特性
|
||||
|
||||
### 编辑功能
|
||||
- ✅ 视频裁剪 - 在时间轴上拖拽调整视频起止点
|
||||
- ✅ 旁白编辑 - 修改文本后重新生成 TTS
|
||||
- ✅ 花字编辑 - 修改花字内容和样式
|
||||
- ✅ BGM 管理 - 选择和替换背景音乐
|
||||
- ✅ 字幕编辑 - 修改字幕文本和时间
|
||||
|
||||
### 预览功能
|
||||
- ✅ Remotion 实时预览 - 浏览器端实时渲染
|
||||
- ✅ 多轨道显示 - 视频/音频/字幕/花字/BGM
|
||||
- ✅ 播放头控制 - 拖拽快速定位
|
||||
|
||||
### 导出功能
|
||||
- ✅ 异步合成 - 任务队列处理,不阻塞界面
|
||||
- ✅ 进度查询 - 实时查看合成进度
|
||||
- ✅ 下载成片 - 合成完成后直接下载
|
||||
|
||||
## 快速开始
|
||||
|
||||
### 开发环境
|
||||
|
||||
```bash
|
||||
# 1. 安装依赖
|
||||
pip install -r requirements.txt
|
||||
cd web && npm install && cd ..
|
||||
|
||||
# 2. 启动 Redis (需要 Docker)
|
||||
docker run -d --name redis -p 6379:6379 redis:7-alpine
|
||||
|
||||
# 3. 启动后端
|
||||
uvicorn api.main:app --reload --port 8000
|
||||
|
||||
# 4. 启动 Worker
|
||||
celery -A api.celery_app worker --loglevel=info
|
||||
|
||||
# 5. 启动前端
|
||||
cd web && npm run dev
|
||||
```
|
||||
|
||||
### Docker 环境
|
||||
|
||||
```bash
|
||||
# 一键启动所有服务
|
||||
docker-compose up -d
|
||||
|
||||
# 扩展 Worker 数量
|
||||
docker-compose scale worker=3
|
||||
|
||||
# 查看日志
|
||||
docker-compose logs -f worker
|
||||
```
|
||||
|
||||
## 端口规划
|
||||
|
||||
| 服务 | 端口 | 说明 |
|
||||
|------|------|------|
|
||||
| React Editor | 3000 | 视频编辑器前端 |
|
||||
| FastAPI | 8000 | REST API |
|
||||
| Streamlit | 8502 | 原有工作流调试界面 |
|
||||
| Redis | 6379 | 任务队列 |
|
||||
|
||||
## API 接口
|
||||
|
||||
### 编辑器状态
|
||||
|
||||
```
|
||||
GET /api/editor/{project_id}/state - 获取编辑器状态
|
||||
POST /api/editor/{project_id}/state - 保存编辑器状态
|
||||
```
|
||||
|
||||
### TTS 生成
|
||||
|
||||
```
|
||||
POST /api/editor/generate-voiceover
|
||||
{
|
||||
"text": "要转换的文本",
|
||||
"voice_type": "zh_female_santongyongns_saturn_bigtts",
|
||||
"target_duration": 3.0 // 可选
|
||||
}
|
||||
```
|
||||
|
||||
### 视频合成
|
||||
|
||||
```
|
||||
POST /api/compose/render
|
||||
{
|
||||
"project_id": "PROJ-xxx",
|
||||
"video_clips": [...],
|
||||
"voiceover_clips": [...],
|
||||
"subtitle_clips": [...],
|
||||
"fancy_text_clips": [...],
|
||||
"bgm_clip": {...}
|
||||
}
|
||||
|
||||
GET /api/compose/status/{task_id} - 查询合成进度
|
||||
```
|
||||
|
||||
## 扩展性
|
||||
|
||||
### 水平扩展
|
||||
|
||||
```bash
|
||||
# 增加 Worker 数量
|
||||
docker-compose scale worker=5
|
||||
```
|
||||
|
||||
### 性能监控
|
||||
|
||||
- Celery Flower: `celery -A api.celery_app flower`
|
||||
- Redis 监控: `redis-cli monitor`
|
||||
|
||||
## 与工作流的集成
|
||||
|
||||
编辑器自动读取工作流生成的素材:
|
||||
|
||||
1. 用户在 Streamlit 完成视频生成工作流
|
||||
2. 点击"编辑"按钮跳转到编辑器
|
||||
3. 编辑器自动加载项目的所有素材到时间轴
|
||||
4. 用户进行精细编辑
|
||||
5. 导出最终成品
|
||||
|
||||
## 技术栈
|
||||
|
||||
- **前端**: React 18 + TypeScript + Vite + Remotion
|
||||
- **后端**: FastAPI + Celery + Redis
|
||||
- **视频处理**: FFmpeg (Worker 中运行)
|
||||
- **数据库**: SQLite / PostgreSQL
|
||||
|
||||
Reference in New Issue
Block a user