# 视频导出功能使用说明 ## 功能简介 当用户通过相似度搜索找到图片后,可以要求导出对应的视频片段。 ## 支持的导出模式 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. 磁盘空间是否充足