diff --git a/PROGRESS.md b/PROGRESS.md index 4154549..967fc3f 100644 --- a/PROGRESS.md +++ b/PROGRESS.md @@ -1,6 +1,6 @@ # 项目进度追踪 -> 最后更新: 2026-08-20 01:25 +> 最后更新: 2026-08-20 02:10 ## 服务运行状态 @@ -107,14 +107,16 @@ | 27 | NAS 安装 Streamlit + pandas + 部署 FAM-UI | ✅ 完成 | 2026-08-20 | | 28 | Ollama 模型常驻内存 (OLLAMA_KEEP_ALIVE=-1) | ✅ 完成 | 2026-08-20 | | 29 | 关键帧提取改为自适应帧数 (随视频时长动态计算) | ✅ 完成 | 2026-08-20 | +| 30 | FFmpeg 快速 seek 替代 fps 滤镜 (6-8x 提速) | `7ce8aff` | 2026-08-20 | +| 31 | 真实视频性能基准测试 (30min 360MB 视频) | ✅ 完成 | 2026-08-20 | ### 待完成 | # | 任务 | 依赖 | 优先级 | |---|------|------|--------| -| 30 | 视频端到端集成测试 | FAM-UI ✅ | 高 | -| 31 | 单元测试 (JSON parser, circuit breaker, schema) | - | 中 | -| 32 | Tailscale 防火墙修复 (NAS↔Oracle) | - | 低 | +| 32 | 视频端到端集成测试 | FAM-UI ✅ | 高 | +| 33 | 单元测试 (JSON parser, circuit breaker, schema) | - | 中 | +| 34 | Tailscale 防火墙修复 (NAS↔Oracle) | - | 低 | ## 技术决策记录 @@ -128,6 +130,22 @@ 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帧 +11. **FFmpeg 快速 seek 替代 fps 滤镜** - 原方案 `ffmpeg -vf fps=1/interval` 需全解码视频,30min 360MB 视频在 ARM CPU 上需 180s+(超 120s 超时)。改为逐帧 `ffmpeg -ss -frames:v 1` 快速 seek,仅 33s(6-8x 提速) + +## 真实视频性能基准测试 (2026-08-20) + +测试视频: `Generic_ONVIF-001-20260819-210403` (30分钟, 360MB, 1080p H.264) + +| 步骤 | 耗时 | 详情 | +|------|------|------| +| 1. 视频传输 (NAS→Oracle) | 70s | 360MB, 5.1 MB/s (Tailscale) | +| 2a. FFmpeg 快速 seek 抽帧 | 33s | 60 张候选帧 (每30s一张) | +| 2b. OpenCV 关键帧筛选 | 5s | MSE 帧差 → 12 张关键帧 | +| 2c. 压缩 | 0.6s | 12 帧, 总 1.9MB | +| 3. Ollama llava-phi3 分析 | 820s | 12 帧, avg 68s/帧, 0.9 tokens/s | +| **总计** | **929s (15.5min)** | 30 分钟视频处理 | + +AI 分析瓶颈: 帧5耗时 229s (疑似 ARM CPU 热降频), 其余帧 50-65s ## FAM-Core API 测试结果 (2026-08-20)