- 🎬 多视频合成 - 支持批量上传和合成多个视频文件
- ✨ 丰富转场效果 - 7种专业转场效果(淡入淡出、滑动、缩放等)
- 📱 现代化界面 - 基于Ant Design的企业级UI设计
- ⚡ 高性能处理 - 异步任务处理,支持大文件处理
- 📊 实时反馈 - 处理进度实时显示和状态更新
- 💾 便捷操作 - 在线预览、一键下载合成结果
- 前后端分离 - RESTful API设计,前后端完全解耦
- 模块化日志 - 按功能模块组织的清晰日志系统
- 错误处理 - 完善的异常处理和用户友好的错误提示
- 响应式设计 - 支持桌面端和移动端访问
- 文件管理 - 智能文件管理和存储优化
Video_synthesis/
├── 📂 backend/ # 后端服务
│ ├── 🐍 app.py # Flask 主应用
│ ├── 🎬 advanced_video_processor.py # 高级视频处理器
│ ├── 📋 logger_config.py # 日志配置模块
│ ├── 📦 requirements.txt # Python 依赖
│ ├── 🧪 test_transitions.py # 转场效果测试
│ ├── 🧪 test_video_processor.py # 视频处理器测试
│ ├── 📁 uploads/ # 上传文件目录
│ └── 📁 outputs/ # 输出文件目录
├── 📂 frontend/ # 前端应用
│ ├── 📂 src/
│ │ ├── 📂 components/
│ │ │ └── 🎯 EnterpriseVideoComposer.jsx # 视频合成组件
│ │ ├── ⚛️ App.jsx # 主应用组件
│ │ ├── 🎨 App.css # 应用样式
│ │ ├── 🎨 index.css # 全局样式
│ │ └── 🚀 main.jsx # 应用入口
│ ├── 📂 public/ # 静态资源
│ ├── 📦 package.json # 前端依赖
│ └── ⚙️ vite.config.js # Vite 配置
└── 📖 README.md # 项目文档
|
|
- Python 3.8+
- Node.js 16+
- FFmpeg (用于视频处理)
git clone https://github.com/ZHlovecat/video-synthesis.git
cd video-synthesiscd backend
# 安装Python依赖
pip install -r requirements.txt
# 启动后端服务
python app.pycd frontend
# 安装Node.js依赖
npm install
# 启动开发服务器
npm run dev- 🌐 前端界面: http://localhost:5173
- 🔌 后端API: http://localhost:5000
点击展开完整API文档
| 方法 | 端点 | 描述 |
|---|---|---|
GET |
/api/health |
健康检查 |
GET |
/api/transitions |
获取转场效果列表 |
| 方法 | 端点 | 描述 |
|---|---|---|
POST |
/api/upload |
上传视频文件 |
GET |
/api/files |
列出所有文件 |
GET |
/api/preview/<filename> |
预览视频文件 |
GET |
/api/download/<filename> |
下载视频文件 |
| 方法 | 端点 | 描述 |
|---|---|---|
POST |
/api/compose |
创建视频合成任务 |
curl -X POST -F "files=@video1.mp4" -F "files=@video2.mp4" \
http://localhost:5000/api/uploadcurl -X POST -H "Content-Type: application/json" \
-d '{
"video_files": ["uploads/video1.mp4", "uploads/video2.mp4"],
"transitions": [{"type": "fade", "duration": 1.0}],
"output_filename": "result.mp4"
}' \
http://localhost:5000/api/compose| 🌅 | 淡入淡出 (fade) | 交叉淡入淡出,最稳定优雅 |
| ⬅️ | 左滑转场 (slide_left) | 从右向左滑动,动感十足 |
| ➡️ | 右滑转场 (slide_right) | 从左向右滑动,流畅自然 |
| ⬆️ | 上滑转场 (slide_up) | 从下向上滑动,向上提升 |
| ⬇️ | 下滑转场 (slide_down) | 从上向下滑动,向下展开 |
| 🔍 | 放大转场 (zoom_in) | 缩放放大过渡,聚焦突出 |
| 🔎 | 缩小转场 (zoom_out) | 缩放缩小过渡,视野扩展 |
- ✅ 音频平滑过渡 - 自动处理音频淡入淡出
- ✅ 可调节时长 - 支持 0.5-3.0 秒转场时间
- ✅ 智能降级 - 转场失败时自动使用简单拼接
- ✅ 高质量输出 - H.264 + AAC 编码,保证质量
- 📁 文件上传 - 支持拖拽上传,多文件批量处理
- ⚙️ 参数配置 - 直观的转场效果选择和参数调整
- 🔄 实时处理 - 处理进度实时显示,状态清晰可见
- 📥 结果下载 - 一键预览和下载合成结果
# 后端配置
FLASK_ENV=development
UPLOAD_FOLDER=uploads
OUTPUT_FOLDER=outputs
MAX_CONTENT_LENGTH=500MB
# 前端配置
VITE_API_BASE_URL=http://localhost:5000- 输入格式: MP4, AVI, MOV, MKV, WMV, FLV, WEBM
- 输出格式: MP4 (H.264 + AAC)
- 最大文件大小: 500MB
- 推荐分辨率: 1920x1080 (1080p)
常见问题解决方案
A: 请确保已安装 FFmpeg 并添加到系统 PATH
# Windows
choco install ffmpeg
# macOS
brew install ffmpeg
# Ubuntu
sudo apt install ffmpegA: 检查文件大小和格式是否符合要求
- 文件大小不超过 500MB
- 文件格式为支持的视频格式
A: 查看后端日志,常见原因:
- 视频编码格式不兼容
- 音频轨道缺失
- 磁盘空间不足
我们欢迎所有形式的贡献!
- Fork 本项目
- 创建 功能分支 (
git checkout -b feature/AmazingFeature) - 提交 更改 (
git commit -m 'Add some AmazingFeature') - 推送 到分支 (
git push origin feature/AmazingFeature) - 创建 Pull Request
本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。
- 开发者 - ZHlovecat
- MoviePy - 强大的视频处理库
- React - 优秀的前端框架
- Ant Design - 企业级UI设计语言
- Flask - 轻量级Web框架
⭐ 如果这个项目对您有帮助,请给它一个星标!