diff --git a/PROGRESS.md b/PROGRESS.md index ef85fbc..0d2c17c 100644 --- a/PROGRESS.md +++ b/PROGRESS.md @@ -1,6 +1,6 @@ # 项目进度追踪 -> 最后更新: 2026-08-20 16:30 +> 最后更新: 2026-08-20 17:25 ## 服务运行状态 @@ -161,6 +161,26 @@ 19. **chunk_size 变更防护** - Edge 端 upload_chunk 检测 total_chunks 变更(由 chunk_size 变化导致),自动清理旧分块防止混合不同大小分块导致 assemble 后文件损坏。NAS 端 _query_uploaded_chunks 比对 expected_total != edge_total 时跳过断点续传 20. **看门狗机制** - app.py 启动 daemon 看门狗线程,每 60s 检查 scheduler/dispatcher/poller 线程 is_alive(),崩溃自动 check_and_restart()。/api/status 改用 thread.is_alive() 替代 _running 标志,防止线程假死误报 +## NVIDIA 原生视频输入切换 (2026-08-20 17:25, commit 55633d3) + +**调研结论**(免费托管 API `integrate.api.nvidia.com`,40 RPM 无限次调用): + +| 模型 | 状态 | 说明 | +|------|------|------| +| nvidia/nemotron-3-nano-omni-30b-a3b-reasoning | ✅ 采用 | Omni 模型,原生支持 video_url 输入(MP4,base64 data URI) | +| meta/video-llama3-8b-instruct | ❌ 404 已下线 | 曾是 NVIDIA 官方视频理解模型 | +| qwen/qwen2.5-vl-72b-instruct | ❌ 404 | 该 ID 不存在 | + +**实现**:NVIDIA 从"逐帧单图调用"切换为**原生视频输入**: +1. `analyze_video`:按关键帧时间点截取 ±1.5s 片段(drawtext 叠加时间戳,用连字符 `00-05-00` 避免 ffmpeg 冒号转义),拼成集锦视频(640 宽 CRF28,~35KB/片段),base64 后 `video_url` 单次调用 +2. 输出全 schema JSON(frame_details + global_summary + entities_json),归一化对齐时间戳 +3. `analyze_frames` 保留为降级路径;orchestrator 传 `video_path`,优先视频模式失败自动降级逐帧 +4. timeout 20→120s,chat max_tokens 512→2048(reasoning 模型 token 消耗大) + +**实测**(360MB 测试视频,3 关键帧):集锦 107KB,全程 37s,动态动作识别准确(走动→坐沙发→坐餐桌),跨片段综合摘要正常——**显著优于旧逐帧静态识别**。 + +**注意**:nemotron-omni 为 reasoning 模型,10s 视频 ~20s 返回;Gemini 仍是首选(多图 34s),NVIDIA 视频模式作为同级降级链路。 + ## Gemini 视觉解析排查 + 业务全流程梳理 (2026-08-20 16:30, commit f4e7424) **结论: Gemini 可以解析视频(多帧视觉分析),且有 40s 完成整段分析的实测记录,但当前被三重问题压制**