Files
agent_test/VIDEO_EXPORT_README.md

174 lines
4.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 视频导出功能使用说明
## 功能简介
当用户通过相似度搜索找到图片后,可以要求导出对应的视频片段。
## 支持的导出模式
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. 磁盘空间是否充足