Skip to content
ZhanyuaniumPublic

About

An AI application to summarize a video and to ask for its detailed info.

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

7 Commits

Folders and files

Repository files navigation

ViDigest - 视频智能摘要系统

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
Loading

安装依赖

pip install -e .

配置

系统支持多种配置方式,优先级从高到低为:

  1. 命令行参数
  2. 环境变量
  3. 配置文件 (config.toml)
  4. 默认值

配置文件示例

[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 local

API接口

视频上传

POST /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": "当前模型源"
}

模型支持

系统支持三种模型运行方式:

  1. 本地模型 - 直接在本地运行模型(需要安装对应模型)(暂未实现)
  2. Ollama - 通过 Ollama 服务运行模型
  3. 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           # 项目说明

核心模块

  1. 视频处理模块 - 负责视频内容提取
  2. 模型适配器 - 统一不同模型源的接口
  3. 问答系统 - 基于视频内容回答问题
  4. 配置管理 - 处理多层级配置

部署

环境准备

# 安装依赖
uv venv
&.venv\Scripts\Activate.ps1
uv sync

启动服务

# 基本启动
uv run main.py

# 指定配置
uv run main.py `
  --model-source ollama `
  --ollama-model qwen:8b

About

An AI application to summarize a video and to ask for its detailed info.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages