DOVideo-AI · 面向长视频内容理解的 Video Agent
项目仓库:https://github.com/everythingis-ok/DOVideo-AI(MIT License,欢迎 Star ⭐)
DoVideoAI 是一个面向长视频内容理解的 Video Agent,致力于把长视频转化为可检索、可追溯、可继续追问的结构化知识。
用户登录后可以上传视频并在工作台管理解析任务;选择视频并输入分析目标后,既可以手动选择分析模式,也可以交给 Agent 自动判断。工作台会展示结构化结论、时间戳证据、执行计划、阶段轨迹与质量评估,并支持基于同一视频继续追问。
核心能力
长视频处理天然是长耗时、高资源消耗、外部调用成本敏感的场景,项目的设计围绕这一背景展开,分为四层能力。
可靠的视频任务链路
把大文件上传与耗时的视频解析从请求主链路中剥离,提交即返回,不阻塞、不重复烧钱。
- 分片上传 + 断点续传:前端按 5 MB 分片,Redis 记录已完成分片,MinIO 保存合并后的视频,弱网中断后可从断点续传。
- 异步削峰:RocketMQ 将视频解析移出请求线程,提交后立即返回任务 ID;Redisson 按「内容指纹 + 分析目标」加锁,拦截并发与重复消费。
- 成本护栏:用户级与全局令牌桶限制 AI 请求速率;ASR 与模型调用采用有限次数的指数退避重试,兜底第三方网络抖动。
时序多模态 VideoContext
把语音、画面文字与时间戳融合成一份可检索、可校验的统一上下文。
- 双分支抽取:FFmpeg 将音频按 60 秒切片,同时通过场景变化检测抽取关键帧,并以 30 秒保底采样避免遗漏静态板书。
- 并行与容错:ASR 与 OCR 使用独立有界线程池并行执行;相邻画面通过感知哈希去重,单路失败时仍保留另一条有效信息。
- 统一结构:语音区间、OCR 文本、关键帧与时间戳被合并为统一的
VideoSegment,后续检索与校验不再依赖底层模型格式。
1 | [02:00 - 03:00] |
有证据约束的 AgentLoop
每条结论都必须绑定可在原始视频中核验的时间戳证据,拒绝模型自由发挥。
- 角色分工:Planner 将用户目标拆成可执行任务,Executor 生成固定结构的结论、证据与建议。
- 闭环校验:Critic 检查目标覆盖、结构完整性与时间戳证据;不通过时依据缺失内容和时间范围定向重新检索。
- 自动模式路由:根据用户目标自动选择通用、学习、审查或创作模式;路由不可用时回退通用模式,不阻断分析任务。
- 四类结构化产物:通用模式生成结论与建议;学习模式生成大纲、自测题与易错点;审查模式定位逻辑漏洞与存疑结论;创作模式提取爆点、标题与口播脚本。
- 成本可控:AgentLoop 最多执行两轮,既允许定向修正,也通过轮次上限约束延迟与 Token 成本。
长视频检索与断点恢复
面向数小时长视频的分段检索,以及分阶段可恢复的任务状态机。
- 混合检索:每 5 分钟生成片段摘要、关键词与 Embedding,通过关键词匹配与 Qdrant 语义召回选出 TopK 原始证据。
- 优雅降级:Qdrant 或 Embedding 服务不可用时,退化到本地关键词与已有向量排序,不阻断主分析链路。
- 断点恢复:Checkpoint 以 MySQL 为恢复真源、Redis 为热缓存,持久化
VideoContext、分块、计划、Critic 状态与最终结果。 - 状态可观测:前端通过 SSE 接收任务阶段;失败消息写入独立失败主题与失败任务表,可由管理接口重新投递。
技术栈
| 层次 | 技术 | 用途 |
|---|---|---|
| Web | Vue 3、Vite、SSE、Marked | 上传、Agent 工作台、实时进度与安全 Markdown 展示 |
| API | Java 21、Spring Boot 3.5.9、Undertow、MyBatis-Plus | 鉴权、媒体管理、任务编排与 REST API |
| 异步与缓存 | RocketMQ 5.3.4、Redis 7.4、Redisson | 异步削峰、状态缓存、限流、锁与消费幂等 |
| 数据与存储 | MySQL 8、MinIO、Qdrant | 业务数据、视频对象、Checkpoint 与向量检索 |
| 视频与 AI | FFmpeg、Tesseract、LangChain4j、DeepSeek、TeleSpeechASR、BGE-M3 | 音视频处理、多模态解析、Agent 推理与 Embedding |
| 部署 | Docker Compose | 本地中间件编排 |
本地运行速览
环境要求:JDK 21、Node.js 22、Docker Compose v2、FFmpeg、Tesseract(安装 chi_sim 与 eng 语言包)。
1 | # 1. 准备配置(至少填写 SILICONFLOW_API_KEY 与各中间件密码) |
只想体验前端 Agent 工作台时,可直接访问 http://localhost:5173/?demo,Demo 模式使用内置示例数据,不依赖后端服务。
更详细的配置项说明、常见问题与目录结构请直接查看仓库 README: