使用AI模型为视频自动生成标签和描述的工具
功能特点 • 环境要求 • 安装 • 使用方法 • 工作流程 • 许可证
- ✨ 视频标签生成:使用Gemini AI模型自动为视频生成标签和描述
- 🕒 视频时间轴分析:智能识别视频内容变化,生成详细时间轴信息
- ☁️ 七牛云存储集成:支持将处理后的视频上传到七牛云存储
- 🔄 重复检测:通过MD5哈希值检测重复视频,避免重复处理
- 📂 批量处理:支持目录批量处理视频文件
- 📊 视频技术信息提取:自动获取视频分辨率、时长等技术信息
- 🌌 太空视频下载:从Pexels API下载宇宙探索相关视频素材
- Node.js (v14 或更高版本)
- 七牛云账户
- Gemini API 密钥
- Pexels API 密钥 (用于下载宇宙视频)
- FFmpeg (通过ffmpeg-static包自动安装,或手动安装并配置路径)
- 克隆仓库:
git clone https://github.com/mybolide/vidoeTags.git
cd vidoeTags- 安装依赖:
npm install- 配置环境变量:
复制 .env.example 文件为 .env,然后编辑 .env 文件填入必要的配置:
cp .env.example .env必要的配置项:
| 配置项 | 说明 |
|---|---|
| PROJECT_ROOT | 项目根目录的绝对路径 |
| GEMINI_API_KEY | Gemini AI API密钥 |
| PEXELS_API_KEY | Pexels API密钥 (用于下载视频素材) |
| QINIU_ACCESS_KEY | 七牛云访问密钥 |
| QINIU_SECRET_KEY | 七牛云秘密密钥 |
| QINIU_BUCKET | 七牛云存储桶名称 |
| QINIU_DOMAIN | 七牛云域名 |
| FFMPEG_PATH | FFmpeg安装路径 |
| IS_PROXY | 是否使用代理 (true/false) |
| PROXY | 代理服务器地址 (如 http://127.0.0.1:10808) |
本项目需要FFmpeg处理视频。有两种方式配置:
-
自动安装:项目依赖中包含ffmpeg-static,会自动下载FFmpeg(某些系统可能存在兼容问题)
-
手动安装(推荐):
- 从FFmpeg官网下载适合你系统的FFmpeg
- 解压到任意目录(例如:D:\plugins\ffmpeg)
- 在.env文件中设置FFMPEG_PATH指向该目录(确保目录下有ffmpeg.exe和ffprobe.exe)
npm run download-space-videos这将从Pexels API下载宇宙探索相关的视频素材到sourceVideo目录。
npm run process-video这将处理环境变量中指定的视频文件。
node generateVideoAnalysis.js这将处理 sourceVideo 目录中的所有视频文件。
- 读取视频文件:从指定路径读取视频文件
- 计算哈希值:计算视频文件的MD5哈希,用于重复检测
- 提取视频信息:使用FFmpeg获取视频分辨率和时长等技术信息
- AI分析:使用Gemini AI模型分析视频内容,生成标签、描述和时间轴信息
- 七牛云上传:将视频上传至七牛云存储
- 保存元数据:将视频信息和分析结果保存到JSON数据文件
vidoeTags/
├── assets/ # 项目资源文件
│ └── icon.svg # 项目图标
├── sourceVideo/ # 源视频存储目录
├── data/
│ └── videoData.json # 处理结果数据文件
├── src/
│ ├── dataService.js # 数据处理服务
│ ├── ffmpegService.js # FFmpeg视频信息提取服务
│ ├── geminiService.js # Gemini AI服务
│ ├── processVideoScript.js # 视频处理主脚本
│ ├── qiniuService.js # 七牛云服务
│ └── videoProcessor.js # 视频处理器
├── .env # 环境变量配置
├── .env.example # 环境变量示例
├── downloadSpace.js # 宇宙视频下载脚本
├── generateVideoAnalysis.js # 批量处理脚本
└── package.json # 项目依赖
处理后的视频信息将保存在 data/videoData.json 文件中,格式如下:
{
"id": "唯一ID",
"hash": "视频MD5哈希值",
"url": "七牛云URL",
"tags": ["标签1", "标签2", "..."],
"summary": "视频内容描述",
"duration": 视频时长(秒),
"resolution": "1920x1080",
"width": 1920,
"height": 1080,
"sourceFile": "源文件路径",
"model": "使用的AI模型",
"timeline": [
{
"start": 起始时间(秒),
"end": 结束时间(秒),
"tags": ["片段标签1", "片段标签2"],
"summary": "片段描述"
}
]
}欢迎提交问题和拉取请求。对于重大更改,请先开issue讨论您想要更改的内容。
ISC