返回市场
视频解析器

视频解析器

作者:michaelbaker-dev2 星标更新:2025-06-13

项目介绍

MCP Video Parser

一个强大的视频分析系统,使用模型上下文协议(MCP)通过AI视觉模型处理、分析和查询视频内容。

🎬 特性

  • AI驱动的视频分析:自动提取并分析帧,使用视觉大语言模型(Llava)
  • 自然语言查询:使用对话查询搜索视频
  • 基于时间的搜索:根据相对时间(“上周”)或具体日期查询视频
  • 基于位置的组织:按位置(棚屋、车库等)组织视频
  • 音频转录:提取并搜索视频字幕
  • 聊天集成:与Mistral/Llama进行自然对话,同时保持视频上下文
  • 场景检测:基于视觉变化智能提取帧
  • MCP协议:基于标准与Claude和其他MCP客户端集成

🚀 快速开始

先决条件

  • Python 3.10+
  • 安装并运行 Ollama
  • ffmpeg(用于视频处理)

安装

  1. 克隆仓库:
git clone https://github.com/michaelbaker-dev/mcpVideoParser.git
cd mcpVideoParser
  1. 安装依赖项:
pip install -r requirements.txt
  1. 拉取所需的Ollama模型:
ollama pull llava:latest    # 用于视觉分析
ollama pull mistral:latest  # 用于聊天交互
  1. 启动MCP服务器:
python mcp_video_server.py --http --host localhost --port 8000

基本用法

  1. 处理视频
python process_new_video.py /path/to/video.mp4 --location 车库
  1. 启动聊天客户端
python standalone_client/mcp_http_client.py --chat-llm mistral:latest
  1. 示例查询
  • "显示最新的视频"
  • "昨天车库发生了什么?"
  • "找到有汽车的视频"
  • "给我上周所有视频的总结"

🏗️ 架构

┌─────────────────┐     ┌─────────────────┐     ┌─────────────────┐
│   视频文件      │────▶│ 视频处理器       │────▶│ 帧分析           │
└─────────────────┘     └─────────────────┘     └─────────────────┘
                                │                         │
                                ▼                         ▼
┌─────────────────┐     ┌─────────────────┐     ┌─────────────────┐
│   MCP服务器      │◀────│ 存储管理器       │◀────│   Ollama LLM    │
└─────────────────┘     └─────────────────┘     └─────────────────┘
         │
         ▼
┌─────────────────┐
│   HTTP客户端     │
└─────────────────┘

🛠️ 配置

编辑 config/default_config.json 自定义:

  • 帧提取率:要分析多少帧
  • 场景检测灵敏度:何时捕捉场景变化
  • 存储设置:视频和数据存储的位置
  • LLM模型:用于视觉和聊天的模型

详情见 配置指南

🔧 MCP工具

服务器暴露了这些MCP工具:

  • process_video - 处理并分析视频文件
  • query_location_time - 根据位置和时间查询视频
  • search_videos - 搜索视频内容和字幕
  • get_video_summary - 获取视频的AI生成摘要
  • ask_video - 关于特定视频提问
  • analyze_moment - 分析视频中的特定时间戳
  • get_video_stats - 获取系统统计信息
  • get_video_guide - 获取使用说明

🛠️ 实用脚本

视频清理

从系统中清除所有视频并重置到初始状态:

# 干运行以查看将删除的内容
python clean_videos.py --dry-run

# 清除已处理的文件和数据库(保留原始文件)
python clean_videos.py

# 清除包括原始视频文件的所有内容
python clean_videos.py --clean-originals

# 跳过确认和备份
python clean_videos.py --yes --no-backup

此脚本将:

  • 从数据库中移除所有视频条目
  • 删除所有已处理的帧和字幕
  • 删除基于位置结构的所有视频
  • 可选地删除原始视频文件
  • 在清理之前创建数据库备份(除非指定 --no-backup

视频处理

处理单个视频:

# 使用自动位置检测处理视频
python process_new_video.py /path/to/video.mp4

# 使用特定位置处理
python process_new_video.py /path/to/video.mp4 --location 车库

📖 文档

🚦 开发

运行测试

# 所有测试
python -m pytest tests/ -v

# 单元测试
python -m pytest tests/unit/ -v

# 集成测试(需要Ollama)
python -m pytest tests/integration/ -v

项目结构

mcp-video-server/
├── src/
│   ├── llm/            # LLM客户端实现
│   ├── processors/     # 视频处理逻辑
│   ├── storage/        # 数据库和文件管理
│   ├── tools/          # MCP工具定义
│   └── utils/          # 工具和辅助函数
├── standalone_client/  # HTTP客户端实现
├── config/            # 配置文件
├── tests/             # 测试套件
└── video_data/        # 视频存储(git忽略)

🤝 贡献

欢迎贡献!请参阅 CONTRIBUTING.md 获取指南。

📝 发展路线图

  • ✅ 基础视频处理和分析
  • ✅ MCP服务器实现
  • ✅ 自然语言查询
  • ✅ 带上下文的聊天集成
  • 🚧 增强的时间解析(参见 INTELLIGENT_QUERY_PLAN.md
  • 🚧 多摄像头支持
  • 🚧 实时处理
  • 🚧 Web界面

🐛 故障排除

常见问题

  1. Ollama未运行
ollama serve  # 启动Ollama
  1. 缺少模型
ollama pull llava:latest
ollama pull mistral:latest
  1. 端口已被占用
# 更改命令中的端口
python mcp_video_server.py --http --port 8001

📄 许可证

MIT许可证 - 详情见 LICENSE

🙏 致谢

  • 基于 FastMCP 框架构建
  • 使用 Ollama 进行本地LLM推理
  • 受模型上下文协议规范启发

💬 支持


版本:0.1.1
作者:Michael Baker
状态:Beta - 可能会有重大变更