Initial commit: WeChat bot project with AI chat, video export, and image upload scripts

This commit is contained in:
anqiang12
2026-06-18 15:53:24 +08:00
commit 3b1e106cb0
16 changed files with 2541 additions and 0 deletions

173
VIDEO_EXPORT_README.md Normal file
View File

@@ -0,0 +1,173 @@
# 视频导出功能使用说明
## 功能简介
当用户通过相似度搜索找到图片后,可以要求导出对应的视频片段。
## 支持的导出模式
1. **前后各N分钟**around
- 用户说:"给我前后5分钟的视频"
- 效果导出图片时间点前5分钟到后5分钟的视频
2. **后N分钟**after
- 用户说:"导出后面5分钟"
- 效果导出图片时间点到后5分钟的视频
3. **前N分钟**before
- 用户说:"导出前面5分钟"
- 效果导出图片时间点前5分钟到图片时间点的视频
4. **整个视频**total
- 用户说:"我要整个视频"
- 效果:导出完整的视频文件
## 使用流程
### 1. 搜索相似图片
```
用户:找一下猫和老鼠里汤姆追杰瑞的场景
AI调用 get_donghua_images
找到以下相似图片:
[图片1] 相似度: 0.95, 001 Puss Gets the Boot [1940]_05m23s_456.jpg
[图片2] 相似度: 0.89, 002 The Midnight Snack [1941]_02m15s_123.jpg
(发送图片给用户)
```
### 2. 确认图片并导出视频
```
用户第一张图不错给我前后5分钟的视频
AI✅ 视频已导出!
📁 文件名001 Puss Gets the Boot [1940]_03m23s-07m23s.mp4
📂 保存位置:./export_videos/001 Puss Gets the Boot [1940]_03m23s-07m23s.mp4
⏱️ 时间范围03m23s -> 07m23s
🎬 时长04m00s
```
## 文件结构
```
/home/hasee/py/
├── video_cutter.py # 视频切割导出模块
├── chat_bot.py # 聊天机器人(已添加视频导出工具)
├── weixin_sender.py # 微信发送模块(已添加视频发送函数)
├── test_video_export.py # 测试脚本
├── INSTALL_FFMPEG.md # ffmpeg 安装说明
├── VIDEO_EXPORT_README.md # 本文件
├── shipin/ # 原始视频目录
│ ├── 001 Puss Gets the Boot [1940].avi
│ ├── 001 Puss Gets the Boot [1940]_frames/
│ └── ...
└── export_videos/ # 导出视频目录(自动创建)
└── 001 Puss Gets the Boot [1940]_03m23s-07m23s.mp4
```
## 依赖要求
1. **Python 依赖**
- 标准库os, re, subprocess, pathlib
- 无需额外安装
2. **系统依赖**
- ffmpeg用于视频切割
- ffprobe用于获取视频信息
## 安装 ffmpeg
请参考 `INSTALL_FFMPEG.md` 文件。
## 测试
运行测试脚本:
```bash
python test_video_export.py
```
测试内容:
1. 图片名解析功能
2. 视频文件查找功能
3. 视频导出功能(需要 ffmpeg 和视频文件)
## 配置参数
`video_cutter.py` 中可以修改以下配置:
```python
VIDEO_DIR = "./shipin" # 原始视频目录
EXPORT_DIR = "./export_videos" # 导出视频目录
VIDEO_EXTENSIONS = {'.avi', '.mp4', '.mkv', '.mov', '.flv', '.wmv', '.webm', '.ts', '.m4v'}
```
## 注意事项
1. **视频格式**
- 输入支持多种视频格式avi, mp4, mkv 等)
- 输出:统一为 MP4 格式(兼容性最好)
2. **切割方式**
- 使用 `-c copy` 参数,直接复制视频流,不重新编码
- 优点:速度快,质量无损
- 缺点:切割点可能不精确(取决于关键帧位置)
3. **存储空间**
- 导出的视频会占用额外空间
- 建议定期清理 `export_videos` 目录
4. **性能考虑**
- 大视频文件切割可能需要较长时间
- 建议设置合理的超时时间当前为10分钟
5. **微信发送**
- 当前实现:发送文字提示(视频已保存到服务器)
- 后续扩展:可直接发送视频文件
## 扩展功能
### 1. 直接发送视频文件
修改 `weixin_sender.py` 中的 `send_video` 方法,实现视频文件上传和发送。
### 2. 自定义切割精度
添加参数控制切割精度(精确到帧或秒)。
### 3. 批量导出
支持一次导出多个视频片段。
### 4. 进度提示
在切割过程中发送进度提示给用户。
## 常见问题
### Q1: 提示"无法解析图片名"
**原因**:图片名格式不符合要求
**解决**:确保图片名格式为 `{视频名}_{分钟}m{秒}s_{毫秒}.jpg`
### Q2: 提示"未找到视频"
**原因**:视频文件不在 `./shipin` 目录下
**解决**:检查视频文件路径,或修改 `VIDEO_DIR` 配置
### Q3: 提示"无法获取视频时长"
**原因**ffmpeg/ffprobe 未安装或视频文件损坏
**解决**:安装 ffmpeg检查视频文件是否完整
### Q4: 视频切割超时
**原因**:视频文件过大或系统性能不足
**解决**:减小切割范围,或增加超时时间
## 技术支持
如有问题,请检查:
1. ffmpeg 是否正确安装
2. 视频文件是否存在
3. 图片名格式是否正确
4. 磁盘空间是否充足