一个基于 Azure OpenAI Sora 2 的 Web 视频生成界面,支持文本生成视频(Text to Video)和图片生成视频(Image to Video)功能。
- 🎬 文本生成视频 - 通过文字描述生成高质量视频
- 🖼️ 图片生成视频 - 上传图片,AI 将其转换为动态视频
- 📊 实时进度跟踪 - 可视化显示视频生成进度,带火花动画效果
- 📜 历史记录管理 - 查看、下载和管理所有生成的视频
- 🎥 视频预览播放 - 在历史页面直接预览和播放生成的视频
- ⚙️ 配置管理 - 灵活配置 Azure OpenAI 连接信息
- 🎨 现代化 UI - 基于 Tailwind CSS 的美观界面设计
- React 18 + TypeScript
- Vite - 快速的构建工具
- Tailwind CSS - 实用优先的 CSS 框架
- Zustand - 轻量级状态管理
- Axios - HTTP 客户端
- Lucide React - 图标库
- Node.js + Express
- TypeScript
- OpenAI SDK - Azure OpenAI 集成
- Multer - 文件上传处理
- Sharp - 图片处理
- Node.js >= 18.0.0
- npm >= 9.0.0
- Azure OpenAI 账号 并开通 Sora 2 服务
git clone https://github.com/nikawang/sora2-ui.git
cd sora2-ui项目包含前端和后端两部分,需要分别安装依赖:
# 安装后端依赖
cd src/backend
npm install
# 安装前端依赖
cd ../frontend
npm install在 src/backend 目录下创建 .env 文件(可选):
# 服务器配置
PORT=8080💡 提示:如果不在环境变量中配置,也可以在启动后通过 Web 界面的设置页面进行配置。
# 在项目根目录运行
chmod +x start-all.sh
./start-all.sh这个脚本会自动:
- 启动后端服务(端口 8080)
- 启动前端服务(端口 5173)
- 输出日志到
backend-output.log和frontend-output.log
启动后端:
cd src/backend
npm run dev启动前端(新开一个终端):
cd src/frontend
npm run dev打开浏览器访问:
- 前端界面:http://localhost:5173
- 后端 API:http://localhost:8080
-
配置 Azure OpenAI
- 点击右上角的设置图标(⚙️)
- 输入你的 Azure OpenAI Endpoint 和 API Key
- 点击"Save Configuration"保存并验证连接
-
生成视频
文本生成视频:
- 导航到"Text to Video"页面
- 输入视频描述提示词
- 选择视频参数(分辨率、时长、模型)
- 点击"Generate Video"
图片生成视频:
- 导航到"Image to Video"页面
- 上传图片(支持 jpg, png, webp)
- 可选:输入运动描述
- 选择视频参数
- 点击"Generate Video"
-
查看历史
- 导航到"History"页面
- 查看所有生成的视频
- 直接在线预览播放
- 下载视频到本地
- 删除不需要的记录
sora2-ui/
├── src/
│ ├── backend/ # 后端服务
│ │ ├── src/
│ │ │ ├── controllers/ # 控制器
│ │ │ ├── services/ # 业务逻辑
│ │ │ ├── routes/ # 路由
│ │ │ ├── middleware/ # 中间件
│ │ │ └── server.ts # 服务器入口
│ │ ├── uploads/ # 上传文件目录
│ │ ├── videos/ # 生成的视频目录
│ │ └── package.json
│ │
│ └── frontend/ # 前端应用
│ ├── src/
│ │ ├── components/ # React 组件
│ │ ├── pages/ # 页面组件
│ │ ├── services/ # API 服务
│ │ ├── hooks/ # 自定义 Hooks
│ │ ├── store/ # Zustand 状态管理
│ │ └── App.tsx # 应用入口
│ └── package.json
│
├── start-all.sh # 启动脚本
└── README.md # 项目文档
1280x720- 720p 横屏720x1280- 720p 竖屏(适合手机)1792x1024- 宽屏横屏1024x1792- 高屏竖屏
4秒- 快速短视频8秒- 标准时长12秒- 扩展时长
sora-2- Sora 第二代模型
cd src/backend
npm run dev # 开发模式(热重载)
npm run build # 编译 TypeScript
npm run start # 生产模式cd src/frontend
npm run dev # 开发服务器
npm run build # 构建生产版本
npm run preview # 预览生产版本如果 8080 或 5173 端口被占用:
# 查找占用端口的进程
lsof -i :8080
lsof -i :5173
# 或使用 netstat
netstat -tulpn | grep 8080
netstat -tulpn | grep 5173
# 杀死进程
kill -9 <PID>- 检查 Node.js 版本:
node --version(需要 >= 18) - 清理依赖重新安装:
cd src/backend rm -rf node_modules package-lock.json npm install
-
检查 Azure OpenAI 配置
- 确保 Endpoint 和 API Key 正确
- 在设置中测试连接是否成功
-
查看后端日志
tail -f backend-output.log
-
检查网络连接
- 确保可以访问 Azure OpenAI 服务
- 检查防火墙设置
GET /api/tasks- 获取所有任务POST /api/tasks/text-to-video- 提交文本生成视频任务POST /api/tasks/image-to-video- 提交图片生成视频任务GET /api/tasks/:taskId/status- 获取任务状态DELETE /api/tasks/:taskId/delete- 删除任务POST /api/config/validate- 验证配置GET /api/files/video/:filename- 下载视频文件
欢迎提交 Issue 和 Pull Request!
MIT License
如有问题或建议,请提交 Issue。
享受 AI 视频创作的乐趣! 🎬✨
