Files
agent_test/VIDEO_EXPORT_SUMMARY.md

216 lines
5.3 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. 创建 `video_cutter.py` 模块
**功能**
- 解析图片名,提取视频名和时间点
- 根据视频名找到原始视频文件
- 使用 ffmpeg 切割视频
- 支持4种导出模式around/after/before/total
**核心函数**
- `parse_image_info(image_name)` - 解析图片名
- `find_video_file(video_name)` - 查找视频文件
- `get_video_duration(video_path)` - 获取视频时长
- `cut_video(video_path, start_time, end_time, output_path)` - 切割视频
- `export_video_clip(image_name, mode, minutes)` - 导出视频片段
### 2. 修改 `chat_bot.py`
**添加内容**
-`tool_list` 中添加 `export_video` 工具
-`test_openai` 中添加工具定义(包含参数说明)
-`sen_mess` 方法中添加处理逻辑
**工具定义**
```python
{
"name": "export_video",
"description": "当用户确认某张图片并要求导出视频时调用此工具",
"parameters": {
"image_name": "图片文件名",
"mode": "around/after/before/total",
"minutes": "分钟数默认5"
}
}
```
### 3. 修改 `weixin_sender.py`
**添加内容**
-`weix` 类中添加 `send_video` 方法
- 当前实现:发送文字提示(视频已保存到服务器)
- 后续可扩展:直接发送视频文件
### 4. 创建测试和文档
**测试文件**
- `test_video_export.py` - 完整测试脚本
**文档文件**
- `INSTALL_FFMPEG.md` - ffmpeg 安装说明
- `VIDEO_EXPORT_README.md` - 使用说明文档
- `VIDEO_EXPORT_SUMMARY.md` - 本文件
**更新文件**
- `CLAUDE.md` - 添加视频导出功能说明
## 用户交互流程
### 场景1前后5分钟
```
用户:找一下猫和老鼠里汤姆追杰瑞的场景
AI发送相似图片
用户第一张图不错给我前后5分钟的视频
AI✅ 视频已导出!
📁 文件名001 Puss Gets the Boot [1940]_03m23s-07m23s.mp4
📂 保存位置:./export_videos/...
⏱️ 时间范围03m23s -> 07m23s
🎬 时长04m00s
```
### 场景2后面5分钟
```
用户这张图后面的5分钟视频给我
AI调用 export_videomode="after", minutes=5
```
### 场景3整个视频
```
用户:我要整个视频
AI调用 export_videomode="total"
```
## 文件结构
```
/home/hasee/py/
├── video_cutter.py # 视频切割导出模块(新增)
├── chat_bot.py # 聊天机器人(已修改)
├── weixin_sender.py # 微信发送模块(已修改)
├── test_video_export.py # 测试脚本(新增)
├── INSTALL_FFMPEG.md # 安装说明(新增)
├── VIDEO_EXPORT_README.md # 使用说明(新增)
├── VIDEO_EXPORT_SUMMARY.md # 本文件(新增)
├── CLAUDE.md # 项目说明(已更新)
├── shipin/ # 原始视频目录
│ ├── 001 Puss Gets the Boot [1940].avi
│ ├── 001 Puss Gets the Boot [1940]_frames/
│ └── ...
└── export_videos/ # 导出视频目录(自动创建)
```
## 依赖要求
### Python 依赖
已包含在 `requirements.txt` 中,无需额外安装。
### 系统依赖
需要安装 ffmpeg
```bash
# Ubuntu/Debian
sudo apt install ffmpeg
# macOS
brew install ffmpeg
```
## 测试方法
### 1. 测试解析功能
```bash
python video_cutter.py
```
输出示例:
```
=== 测试图片名解析 ===
001 Puss Gets the Boot [1940]_05m23s_456.jpg
-> {'video_name': '001 Puss Gets the Boot [1940]', 'timestamp_seconds': 323.456}
```
### 2. 运行完整测试
```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. **ffmpeg 必须安装**
- 视频切割依赖 ffmpeg
- 请参考 `INSTALL_FFMPEG.md` 安装
2. **视频文件位置**
- 原始视频必须在 `./shipin/` 目录下
- 视频名必须与图片名中的视频名一致
3. **图片名格式**
- 必须符合:`{视频名}_{分钟}m{秒}s_{毫秒}.jpg`
- 例如:`001 Puss Gets the Boot [1940]_05m23s_456.jpg`
4. **切割精度**
- 使用 `-c copy` 参数,不重新编码
- 切割点可能不精确(取决于关键帧位置)
5. **存储空间**
- 导出的视频会占用额外空间
- 建议定期清理 `export_videos` 目录
## 后续扩展
### 1. 直接发送视频文件
修改 `weixin_sender.py` 中的 `send_video` 方法,实现视频文件上传和发送。
### 2. 自定义切割精度
添加参数控制切割精度(精确到帧或秒)。
### 3. 批量导出
支持一次导出多个视频片段。
### 4. 进度提示
在切割过程中发送进度提示给用户。
### 5. 视频格式转换
支持导出不同格式的视频MP4, AVI, MKV 等)。
## 技术支持
如有问题,请检查:
1. ffmpeg 是否正确安装
2. 视频文件是否存在
3. 图片名格式是否正确
4. 磁盘空间是否充足
详细说明请参考 `VIDEO_EXPORT_README.md`