feat: adaptive keyframe count based on video duration

- Replace fixed 5-8 keyframe limit with duration-based adaptive sizing
- Candidate frames: clamp(duration_min × 2, 30, 120)
- Keyframe cap: clamp(duration / 150s, 8, 30)
- 30min video → 12 keyframes (was 8), 60min → 24, 120min → 30
- Short videos (<12min) still get floor of 8 keyframes
- Add Ollama keep-alive config doc to PROGRESS.md (OLLAMA_KEEP_ALIVE=-1)
- Update config.yaml and config.yaml.example with new video params
This commit is contained in:
ericwyuan
2026-08-20 01:29:14 +08:00
parent 40944428d1
commit 727642d38b
5 changed files with 87 additions and 36 deletions

View File

@@ -1,6 +1,6 @@
# 项目进度追踪
> 最后更新: 2026-08-20 00:35
> 最后更新: 2026-08-20 01:25
## 服务运行状态
@@ -105,14 +105,16 @@
| 25 | FAM-Core 配置切换至 Oracle 公网 IP | ✅ 完成 | 2026-08-20 |
| 26 | 端到端聊天验证 (Core→Edge→Ollama) | ✅ 完成 | 2026-08-20 |
| 27 | NAS 安装 Streamlit + pandas + 部署 FAM-UI | ✅ 完成 | 2026-08-20 |
| 28 | Ollama 模型常驻内存 (OLLAMA_KEEP_ALIVE=-1) | ✅ 完成 | 2026-08-20 |
| 29 | 关键帧提取改为自适应帧数 (随视频时长动态计算) | ✅ 完成 | 2026-08-20 |
### 待完成
| # | 任务 | 依赖 | 优先级 |
|---|------|------|--------|
| 28 | 视频端到端集成测试 | FAM-UI ✅ | 高 |
| 29 | 单元测试 (JSON parser, circuit breaker, schema) | - | 中 |
| 30 | Tailscale 防火墙修复 (NAS↔Oracle) | - | 低 |
| 30 | 视频端到端集成测试 | FAM-UI ✅ | 高 |
| 31 | 单元测试 (JSON parser, circuit breaker, schema) | - | 中 |
| 32 | Tailscale 防火墙修复 (NAS↔Oracle) | - | 低 |
## 技术决策记录
@@ -124,6 +126,8 @@
6. **Python 3.10 venv** - NAS 系统 Python 3.8 过旧,用 Synology Python3.10 包创建 venv
7. **FAM-Edge 聊天代理** - Ollama 端口 11434 未对外暴露FAM-Edge 新增 /api/edge/chat 代理转发至本地 Ollama
8. **Oracle 公网 IP 替代 Tailscale** - Tailscale 两节点在线但端口不通防火墙edge_url 和 ollama_url 改用 Oracle 公网 IP 129.146.203.203
9. **Ollama 模型常驻内存** - systemd 加 `OLLAMA_KEEP_ALIVE=-1`,模型加载后永不卸载,消除 55s 冷启动延迟,常驻占用 4.3GB 内存(系统 12GB 够用)
10. **关键帧自适应帧数** - 原固定 5-8 帧对长视频太稀疏30分钟仅8帧=每3.75分钟1帧改为随视频时长自适应候选帧 `clamp(duration_min×2, 30, 120)`,关键帧上限 `clamp(duration/150s, 8, 30)`。30分钟→12帧60分钟→24帧封顶30帧
## FAM-Core API 测试结果 (2026-08-20)