FastMovieAI 是一个功能完整的开源短剧/短视频创作平台,采用前后端分离架构,提供 AI 驱动的视频内容创作能力。平台集成了用户管理、支付系统、内容管理、视频生成等完整功能模块,适合内容创作者和视频制作团队使用。
FastMovieAI 致力于打造全球领先的开源短剧创作生态系统,全面对标商汤 Seko、幻舟、巨日禄、可梦、Oii、麻署、Flova、百度智能创作、火山引擎、阿里云视频 AI 等业界顶尖的商业化短剧创作平台。
🌟 真正的开源自由 - 不同于闭源商业平台的黑盒操作,我们提供完全开放的源代码,让每一位开发者都能深度定制、二次开发,打造专属的短剧创作工具。
💰 零成本商用 - 无需支付高昂的 SaaS 订阅费用,无需担心按量计费的天价账单,一次部署,永久使用,真正实现降本增效。
🚀 持续进化 - 我们相信开源的力量,通过社区驱动的方式,快速迭代功能,响应用户需求,让平台始终保持技术领先。
🤝 共创共赢 - 我们诚挚邀请影视制作公司、短剧团队、MCN 机构、独立创作者、技术开发者加入我们的生态,共同打磨产品细节,分享行业经验,让 FastMovieAI 成为真正懂创作者的工具。
- ✅ 开放透明 - 所有代码开源,所有决策公开,接受社区监督
- ✅ 用户至上 - 认真对待每一条反馈,快速响应每一个需求
- ✅ 技术领先 - 紧跟 AI 技术前沿,持续引入最新的视频生成、语音合成、智能剪辑能力
- ✅ 生态共建 - 提供完善的插件机制,支持第三方开发者贡献功能模块
- ✅ 长期维护 - 承诺长期维护更新,不会因商业化而放弃开源版本
无论你是:
- 🎬 影视公司 - 寻求降低制作成本、提升创作效率的解决方案
- 📱 短剧团队 - 需要批量化、工业化的内容生产工具
- 🎨 个人创作者 - 想要低成本实现创意想法的独立制作人
- 💻 技术开发者 - 对 AI 视频技术感兴趣的工程师
我们都欢迎你的加入!让我们一起,用开源的力量,重新定义短剧创作的未来,让每个人都能成为优秀的内容创作者!
- 🎬 AI 视频创作 - 基于 AI 的短剧视频生成和编辑能力
- 🎭 角色管理 - 虚拟角色创建、配置和管理
- 🎙️ 语音合成 - 多语言语音合成和配音功能
- 📝 剧本编辑 - 可视化剧本编辑器和分镜头管理
- 💰 支付集成 - 支持支付宝、微信支付等多种支付方式
- 👥 用户系统 - 完整的用户注册、登录、VIP 会员体系
- 💎 积分系统 - 灵活的积分充值和消费机制
- 📱 微信集成 - 支持微信公众号和小程序对接
- 🔌 插件架构 - 模块化插件系统,易于扩展
- 🌍 多语言支持 - 中文和英文界面切换
- 短视频内容创作平台
- AI 驱动的视频制作工具
- 短剧创作和分发系统
- 内容创作者社区平台
- 框架: Webman v2.1+ (基于 Workerman 的高性能 PHP 框架)
- PHP 版本: ≥8.1
- 数据库: MySQL ≥8.0, Redis
- ORM: ThinkORM v2.1+
- 模板引擎: ThinkTemplate v3.0+
- 支付: Yansongda/Pay v3.7+ (支付宝、微信支付)
- 视频处理: php-ffmpeg v1.3+
- WebSocket: webman/push v1.1+
- 框架: Vue 3.5+ (Composition API)
- 构建工具: Vite 7.1+
- 语言: TypeScript 5.9+
- UI 框架: Element Plus 2.11+
- 状态管理: Pinia 3.0+
- 路由: Vue Router 4.5+
- 视频处理: @webav/av-cliper, mp4box
fastmovieai/
├── fastmovie-admin/ # 后端应用 (PHP/Webman)
│ ├── app/ # 应用代码
│ ├── config/ # 配置文件
│ ├── plugin/ # 插件系统
│ ├── public/ # 公共资源
│ └── start.php # 启动入口
├── fastmovie-vue/ # 前端应用 (Vue3/TypeScript)
│ ├── src/ # 源代码
│ ├── public/ # 静态资源
│ └── vite.config.ts # Vite 配置
└── README.md # 项目文档
- PHP ≥ 8.1
- MySQL ≥ 8.0
- Redis
- 必需的 PHP 扩展:
- PDO, PDO_MySQL, MySQLi
- Redis
- cURL, OpenSSL
- GD, Fileinfo
- MBString, JSON
- Event (推荐,提升性能)
- Node.js (推荐 LTS 版本)
- npm 或 yarn
本项目由两个独立的 Git 仓库组成,需要分别克隆:
# 创建项目目录
mkdir fastmovieai
cd fastmovieai
# 克隆后端仓库
git clone https://gitee.com/yc_open/ai-short-play.git fastmovie-admin
# 克隆前端仓库
git clone https://gitee.com/yc_open/ai-short-play-vue.git fastmovie-vue克隆完成后,目录结构如下:
fastmovieai/
├── fastmovie-admin/ # 后端仓库
└── fastmovie-vue/ # 前端仓库
步骤 1:配置站点
如果使用宝塔面板:
- 创建站点,将运行目录设置为
fastmovie-admin/public - PHP 版本选择 8.1 或更高
步骤 2:访问安装向导
访问 http://your-domain.com/install,按照向导完成安装:
- 许可协议 - 阅读并同意开源协议
- 环境检测 - 自动检测 PHP 版本、扩展、权限等
- 参数配置 - 配置数据库和 Redis 连接信息,设置管理员账号
- 开始安装 - 自动完成数据库初始化和配置文件生成
安装完成后的操作:
安装向导会自动完成以下工作:
- 生成
.env配置文件(基于.env.example) - 自动配置数据库连接池参数
- 生成随机的 PUSH_KEY 和 PUSH_SECRET(32位字符串)
- 同步更新
nginx.example中的 PUSH_KEY - 创建
install.lock锁定文件防止重复安装
安装完成后,页面会提示您完成以下操作:
1. 配置伪静态规则
- 复制
fastmovie-admin/nginx.example文件的全部内容 - 在宝塔面板的"站点设置 → 伪静态"中粘贴并保存
- PUSH_KEY 已自动更新为实际生成的随机值
2. 启动后端服务
cd fastmovie-admin
php start.php start -d或在宝塔面板配置进程守护(推荐)
3. 删除安装目录
# 删除安装目录(重要!)
rm -rf public/install- 首次登录后立即修改默认管理员密码
- 确保
.env文件权限安全,不要暴露到公网 install.lock文件用于防止重复安装,请勿删除
如果不使用 Web 安装向导,可以手动配置:
cd fastmovie-admin
# 1. 复制环境配置文件
copy .env.example .env
# 2. 编辑 .env 文件,配置以下信息:
# 数据库配置
# - DATABASE_HOST=127.0.0.1
# - DATABASE_PORT=3306
# - DATABASE_NAME=your_database
# - DATABASE_USERNAME=your_username
# - DATABASE_PASSWORD=your_password
# - DATABASE_PREFIX=php_
#
# 数据库连接池配置(必需)
# - DATABASE_MAX_CONNECTIONS=10
# - DATABASE_MIN_CONNECTIONS=1
# - DATABASE_WAIT_TIMEOUT=3
# - DATABASE_IDLE_TIMEOUT=60
# - DATABASE_HEARTBEAT_INTERVAL=50
#
# Redis 配置
# - REDIS_HOST=127.0.0.1
# - REDIS_PORT=6379
# - REDIS_PASSWORD=
# - REDIS_DATABASE=2
#
# WebSocket 推送配置
# - PUSH_KEY=生成32位随机字符串
# - PUSH_SCERET=生成32位随机字符串
# - PUSH_API_PORT=37000
# - PUSH_WSS_PORT=37001
# 3. 导入数据库
mysql -u root -p your_database < database.sql
# 4. 更新 nginx.example 中的 PUSH_KEY
# 将 /app/PUSH_KEY 替换为 /app/你的实际PUSH_KEY值cd fastmovie-vue
# 安装依赖
npm install
# 配置后端 API 地址
# 编辑 .env.development 文件,设置 VITE_API_URL后端服务
cd fastmovie-admin
# 开发模式启动
php start.php start
# 守护进程模式(生产环境)
php start.php start -d
# 停止服务
php start.php stop
# 重启服务
php start.php restart
# 查看状态
php start.php status前端服务
cd fastmovie-vue
# 启动开发服务器(默认端口 36310)
npm run dev
# 构建生产版本
npm run build- 前端地址: http://localhost:36310
- 后端 API: http://localhost:36999
- 默认管理员账号: admin
- 默认密码: 123456
-
创建站点
- 在宝塔面板中创建新站点
- 将站点运行目录设置为
fastmovie-admin/public - 配置 PHP 版本为 8.1 或更高
-
配置伪静态
在站点设置的"伪静态"选项中,复制 fastmovie-admin/nginx.example 文件的全部内容并保存。
nginx.example 完整内容:
# 站内信推送
location /app/PUSH_KEY {
proxy_pass http://127.0.0.1:36302;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header X-Real-IP $remote_addr;
}
# 将请求转发到webman
location ^~ / {
# 接口QPS插件,nginx版本需要选择:nginx openresty
# 如需使用接口QPS插件,取消注释
# access_by_lua_file $document_root/lua/qps.lua;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_http_version 1.1;
proxy_set_header Connection "";
if (!-f $request_filename){
proxy_pass http://127.0.0.1:36300;
}
}
# 拒绝访问所有以 .php 结尾的文件
location ~ \.php$ {
return 404;
}
# 允许访问 .well-known 目录
location ~ ^/\.well-known/ {
allow all;
}
# 拒绝访问所有以 . 开头的文件或目录
location ~ /\. {
return 404;
}/app/PUSH_KEY中的PUSH_KEY在安装完成后会自动替换为实际的 32 位随机字符串- 如果手动安装,需要将
PUSH_KEY替换为.env文件中的实际值 proxy_pass http://127.0.0.1:36300中的端口需要与.env中的SERVER_PORT一致(默认 36999)
- 启动后端服务
cd /www/wwwroot/your-site/fastmovie-admin
php start.php start -d- 配置进程守护
在宝塔面板的"进程守护"中添加:
- 名称: FastMovieAI
- 启动命令:
cd /www/wwwroot/your-site/fastmovie-admin && php start.php start - 运行目录:
/www/wwwroot/your-site/fastmovie-admin
- 访问安装向导
访问 http://your-domain.com/install 完成安装配置。安装程序会自动:
- 生成
.env配置文件 - 创建数据库表结构
- 生成随机的 PUSH_KEY 和 PUSH_SECRET
- 同步更新
nginx.example中的 PUSH_KEY - 创建管理员账号
安装完成后,记得删除 public/install 目录。
- 配置 Nginx 反向代理
参考 fastmovie-admin/nginx.example 配置文件,完整配置示例:
upstream fastmovie {
server 127.0.0.1:36999;
keepalive 10240;
}
server {
listen 80;
server_name your-domain.com;
root /path/to/fastmovie-admin/public;
index index.html index.htm;
# 站内信推送(PUSH_KEY 需要替换为实际值)
location /app/YOUR_ACTUAL_PUSH_KEY {
proxy_pass http://127.0.0.1:37000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header X-Real-IP $remote_addr;
}
# 将请求转发到 webman
location ^~ / {
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_http_version 1.1;
proxy_set_header Connection "";
if (!-f $request_filename){
proxy_pass http://fastmovie;
}
}
# 拒绝访问所有以 .php 结尾的文件
location ~ \.php$ {
return 404;
}
# 允许访问 .well-known 目录
location ~ ^/\.well-known/ {
allow all;
}
# 拒绝访问所有以 . 开头的文件或目录
location ~ /\. {
return 404;
}
}YOUR_ACTUAL_PUSH_KEY需要替换为.env文件中的实际 PUSH_KEY 值- upstream 端口(36999)需要与
.env中的 SERVER_PORT 一致 - WebSocket 推送端口(37000)需要与
.env中的 PUSH_API_PORT 一致
- 启动后端服务
cd fastmovie-admin
php start.php start -d- 配置进程守护
使用 systemd 或 supervisor 管理进程,确保服务自动重启。
systemd 示例 (/etc/systemd/system/fastmovie.service):
[Unit]
Description=FastMovieAI Backend Service
After=network.target
[Service]
Type=forking
User=www-data
WorkingDirectory=/path/to/fastmovie-admin
ExecStart=/usr/bin/php start.php start -d
ExecStop=/usr/bin/php start.php stop
ExecReload=/usr/bin/php start.php restart
Restart=always
[Install]
WantedBy=multi-user.target启用服务:
sudo systemctl enable fastmovie
sudo systemctl start fastmovie- 构建生产版本
cd fastmovie-vue
npm run build- 部署构建文件
构建完成后,将生成的文件部署到 fastmovie-admin/public/assets/ 目录,或配置独立的静态文件服务器。
- 配置 Nginx
server {
listen 80;
server_name your-domain.com;
root /path/to/fastmovie-admin/public;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
location /api {
proxy_pass http://127.0.0.1:36999;
}
}FastMovieAI 采用模块化插件架构,核心插件包括:
- user - 用户管理和认证
- finance - 支付和财务管理
- marketing - 营销和推广工具
- article - 内容管理系统
- shortplay - 短剧创作核心功能
- model - AI 模型管理
- notification - 通知和消息推送
- control - 平台控制和配置
每个插件都是独立的功能模块,可以根据需要启用或禁用。
后端常用命令
# 查看所有命令
php webman
# 数据库迁移(如果支持)
php webman migrate
# 清除缓存
php webman cache:clear前端常用命令
# 开发服务器
npm run dev
# 生产构建
npm run build
# 预览构建结果
npm run preview
# 类型检查
vue-tsc --noEmit- 后端服务: 36999 (可在 .env 中配置 SERVER_PORT)
- 前端开发: 36310
- WebSocket Push: 37000
- WebSocket WSS: 37001
我们欢迎所有形式的贡献,包括但不限于:
- 🐛 提交 Bug 报告
- 💡 提出新功能建议
- 📝 改进文档
- 🔧 提交代码修复或新功能
- Fork 对应的仓库(后端或前端)
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m '添加某个很棒的功能') - 推送到分支 (
git push origin feature/AmazingFeature) - 提交 Pull Request
注意: 后端和前端是独立的仓库,请根据修改内容向对应的仓库提交 PR。
- 后端代码遵循 PSR-12 编码规范
- 前端代码使用 ESLint 和 Prettier 格式化
- 提交信息使用中文,清晰描述改动内容
- 添加必要的代码注释和文档
本项目采用 Apache License 2.0 开源协议。
本项目仅供学习和研究使用,使用本项目所产生的一切后果由使用者自行承担。请遵守相关法律法规,不得用于非法用途。
如有问题或建议,欢迎通过以下方式联系:
- 提交 Issue:
- 后端问题: ai-short-play Issues
- 前端问题: ai-short-play-vue Issues
- 邮箱: 416716328@qq.com
- 在线演示: https://fastmovie.ai
如果这个项目对你有帮助,请给我们一个 ⭐️ Star!
Made with ❤️ by FastMovieAI Team



