# video-fingerprint-system-pro **Repository Path**: rogmail/video-fingerprint-system-pro ## Basic Information - **Project Name**: video-fingerprint-system-pro - **Description**: 一个基于感知哈希(pHash)的大规模视频指纹分类系统,专为处理服务器上大量视频文件而设计。 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-24 - **Last Updated**: 2026-04-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 视频指纹分类系统 Pro 一个基于感知哈希(pHash)的大规模视频指纹分类系统,专为处理服务器上大量视频文件而设计。 ## 功能特点 ### 核心功能 - **批量扫描**:支持递归扫描多个目录,自动识别30+种视频格式 - **智能指纹**:使用DCT感知哈希算法提取视频关键帧指纹 - **相似度分析**:基于汉明距离计算视频相似度,自动分类相似视频 - **高性能处理**:多线程并行处理,支持上万级别视频文件 ### 用户界面 - **华丽深色主题**:现代化UI设计,渐变色和动画效果 - **实时进度显示**:扫描和处理进度实时更新 - **响应式设计**:支持桌面和移动设备 - **智能搜索**:全局搜索视频文件 ### 管理功能 - **分类管理**:创建和管理视频分类 - **配置灵活**:可调整处理参数、相似度阈值等 - **扫描历史**:记录每次扫描结果 ## 快速开始 ### 1. 配置扫描目录 编辑 `config.json` 文件,在 `scan_directories` 中添加要扫描的目录: ```json { "scan_directories": [ "/path/to/your/videos", "/another/path/to/videos" ] } ``` ### 2. 启动系统 ```bash chmod +x start.sh ./start.sh ``` 或者手动启动: ```bash python3 -m venv venv source venv/bin/activate pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ python app.py ``` ### 3. 访问系统 打开浏览器访问:http://localhost:5000 ## 使用流程 1. **扫描目录**:点击"扫描"按钮,系统将扫描配置的所有目录 2. **处理视频**:点击"处理"按钮,系统将提取视频指纹并计算相似度 3. **浏览视频**:在"视频库"中查看所有视频 4. **管理分类**:在"分类管理"中创建和管理分类 5. **查看相似**:点击视频查看详情和相似视频 ## 配置说明 ### config.json 参数 | 参数 | 说明 | 默认值 | |------|------|--------| | scan_directories | 要扫描的目录列表 | [] | | supported_formats | 支持的视频格式 | 30+种格式 | | max_frames_per_video | 每个视频提取的关键帧数 | 10 | | similarity_threshold | 相似度阈值(0-1) | 0.5 | | max_workers | 并行处理线程数 | 4 | | database_path | 数据库文件路径 | videos.db | | host | Web服务器地址 | 0.0.0.0 | | port | Web服务器端口 | 5000 | | theme | 界面主题(dark/light) | dark | | animations | 启用动画效果 | true | | items_per_page | 每页显示视频数 | 50 | ## 技术架构 ### 后端 - **Flask**:Web框架 - **OpenCV**:视频处理和帧提取 - **SQLite**:数据存储 - **NumPy**:数值计算 - **Pillow**:图像处理 ### 前端 - **原生JavaScript**:无框架依赖 - **CSS3**:动画和渐变效果 - **Font Awesome**:图标库 ### 算法 - **感知哈希(pHash)**:提取视频帧指纹 - **DCT变换**:离散余弦变换 - **汉明距离**:计算指纹相似度 ## 支持的视频格式 .mp4, .avi, .mov, .mkv, .flv, .wmv, .webm, .m4v, .mpg, .mpeg, .m2v, .3gp, .3g2, .vob, .ts, .mts, .m2ts, .ogv, .f4v, .divx, .xvid, .rm, .rmvb, .asf, .swf, .mxf, .dv, .hdv, .gxf ## 性能优化 - **多线程处理**:使用ThreadPoolExecutor并行处理 - **增量扫描**:只处理新增或修改的文件 - **数据库索引**:优化查询性能 - **批量操作**:减少数据库访问次数 ## 目录结构 ``` video-fingerprint-system-pro/ ├── app.py # Flask主应用 ├── config.py # 配置管理 ├── config.json # 配置文件 ├── scanner.py # 目录扫描器 ├── video_processor.py # 视频处理器 ├── database.py # 数据库操作 ├── requirements.txt # 依赖列表 ├── start.sh # 启动脚本 ├── templates/ │ └── index.html # 主页面 └── static/ ├── css/ │ └── style.css # 样式文件 └── js/ └── app.js # 前端逻辑 ``` ## API 接口 ### 扫描与处理 - `POST /api/scan` - 开始扫描目录 - `POST /api/process` - 开始处理视频 - `GET /api/status` - 获取处理状态 ### 视频管理 - `GET /api/videos` - 获取视频列表 - `GET /api/video/` - 获取视频详情 - `POST /api/video//category` - 分配分类 ### 分类管理 - `GET /api/categories` - 获取所有分类 - `POST /api/category` - 创建新分类 ### 配置管理 - `GET /api/config` - 获取配置 - `POST /api/config` - 更新配置 - `POST /api/config/directory` - 添加扫描目录 - `DELETE /api/config/directory` - 删除扫描目录 ## 常见问题 ### Q: 如何处理大量视频? A: 系统支持多线程处理,可以在config.json中调整max_workers参数增加并行度。 ### Q: 如何提高相似度匹配精度? A: 调整similarity_threshold参数,较低的阈值会产生更多匹配,较高的阈值会更严格。 ### Q: 支持哪些视频格式? A: 支持30+种常见视频格式,包括mp4、avi、mov、mkv、flv等。 ### Q: 如何备份数据? A: 备份videos.db文件即可保存所有视频指纹和分类信息。 ## 许可证 MIT License ## 作者 Hermes Agent - Nous Research