ViDigest 是一个智能视频摘要系统,可以从视频中提取内容并生成摘要和时间线。该系统支持多种模型运行方式和设备选择。
- 视频内容提取与摘要生成
- 支持多种模型运行方式(本地模型、Ollama API、Restful API)
- 支持多种设备(CPU、CUDA、ROCm)
- 视频场景检测与分段
- 基于内容的问答系统
- 多语言支持
graph TD
A[前端] -->|HTTP API| B(后端服务)
B -->|模型推理| C[模型运行时]
B -->|文件存储| D[本地文件系统]
C -->|设备选择| E[CUDA/ROCm/CPU]
C -->|模型源| F[本地/Ollama/RESTful]
subgraph 前端
G[视频上传]
H[摘要展示]
I[问答界面]
end
subgraph 后端
J[Flask API]
K[任务管理]
L[配置中心]
end
pip install -e .系统支持多种配置方式,优先级从高到低为:
- 命令行参数
- 环境变量
- 配置文件 (config.toml)
- 默认值
[runtime]
# 设备选择:cpu | cuda | rocm
torch_device = "cpu"
# 模型源:local | ollama | restful
summary_model_source = "local"
[ollama]
host = "http://localhost:11434"
model = "qwen3:4b"
[restful]
endpoint = "http://localhost:8000/v1/completions"
api_key = "your_api_key"
model = "your_model"
[storage]
# 临时文件目录
temp_dir = "./temp"
# 模型缓存路径
model_cache_dir = "./.cache"| 配置项 | 说明 | 可选值 |
|---|---|---|
runtime.torch_device |
PyTorch 运行设备 | cpu, cuda, rocm |
runtime.summary_model_source |
摘要模型来源 | local, ollama, restful |
ollama.host |
Ollama 服务地址 | URL |
ollama.model |
Ollama 模型名称 | 模型标识符 |
restful.endpoint |
RESTful API 端点 | URL |
restful.api_key |
RESTful API 密钥 | API 密钥 |
restful.model |
RESTful API 模型名称 | 模型标识符 |
storage.temp_dir |
临时文件目录 | 目录路径 |
storage.model_cache_dir |
模型缓存路径 | 目录路径 |
# 基本启动
uv run main.py
# 指定设备和模型源
uv run main.py --torch-device cuda --model-source localPOST /upload
Content-Type: multipart/form-data
Form-data:
- video: 视频文件响应:
{
"task_id": "uuid",
"status_url": "/status/uuid",
"summary_url": "/summary/uuid"
}GET /status/<task_id>响应:
{
"task_id": "uuid",
"status": "processing|completed|failed",
"progress": 0-100
}GET /summary/<task_id>响应:
{
"task_id": "uuid",
"transcript": "视频转录文本",
"summary": "视频摘要"
}POST /ask
Content-Type: application/json
{
"task_id": "uuid",
"question": "用户问题"
}响应:
{
"question": "用户问题",
"answer": "问题答案"
}GET /config响应:
{
"torch_device": "当前设备",
"summary_model_source": "当前模型源"
}系统支持三种模型运行方式:
- 本地模型 - 直接在本地运行模型(需要安装对应模型)(暂未实现)
- Ollama - 通过 Ollama 服务运行模型
- Restful API - 通过 RESTful API 调用远程模型服务
- CPU - 在所有平台上支持
- CUDA - 在支持 CUDA 的 NVIDIA GPU 或 ZLUDA + 支持 ROCm 的 AMD GPU 上运行
- ROCm - 在支持 ROCm 的 AMD GPU 上运行(仅限 Linux)
.
├── frontend/ # 前端文件
│ ├── css/
│ ├── js/
│ └── index.html
├── src/ # 后端源代码
│ ├── app.py # Flask 应用主文件
│ ├── config.py # 配置管理
│ ├── model_adapter.py # 模型适配器
│ ├── qa_system.py # 问答系统
│ └── video_processor.py # 视频处理
├── config.toml # 配置文件
├── main.py # 程序入口
├── pyproject.toml # 项目配置
└── README.md # 项目说明
- 视频处理模块 - 负责视频内容提取
- 模型适配器 - 统一不同模型源的接口
- 问答系统 - 基于视频内容回答问题
- 配置管理 - 处理多层级配置
# 安装依赖
uv venv
&.venv\Scripts\Activate.ps1
uv sync# 基本启动
uv run main.py
# 指定配置
uv run main.py `
--model-source ollama `
--ollama-model qwen:8b