更新记录
1.0.0(2025-10-14)
新版本上线
平台兼容性
云端兼容性
阿里云 | 腾讯云 | 支付宝云 |
---|---|---|
√ | √ | √ |
uni-app(4.36)
Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
---|---|---|---|---|---|---|---|---|
√ | √ | √ | √ | √ | √ | √ | √ | - |
微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 快应用-华为 | 快应用-联盟 |
---|---|---|---|---|---|---|---|---|---|---|
- | - | - | - | - | - | - | - | - | - | - |
云函数类插件通用教程
使用云函数类插件的前提是:使用HBuilderX 2.9+
🎬 CSora2 - AI 视频生成应用
![]() 首页 - 创作界面 |
![]() 列表页 - 作品管理 |
![]() 详情页 - 视频播放 |
![]() 生成设置 - 参数配置 |
📖 项目简介
CSora2 是一款基于 Sora API 的专业 AI 视频生成应用,采用黑色炫酷风格设计,为用户提供简单易用的文字转视频创作体验。
🎯 在线体验地址:https://csora.hefeiruanyun.com/#/pages/sora/index
💡 获取开源版本:如需完整源码,请联系作者 QQ: ***
✨ 核心亮点
- 🎥 支持 Sora-2-Pro 高清模式:1024×1792 超清画质
- ⏱️ 最长 15 秒视频:Pro 模式支持 10 秒/15 秒 自定义时长
- 📱 多端运行:支持 H5、微信小程序、APP 多平台
- 🎨 黑色炫酷风格:现代化的视觉设计体验
- ⚡ 前后端一体:基于 uniCloud 云开发,无需独立服务器
- 💎 智能积分系统:灵活的消费计费机制
🎯 功能特色
💡 双模式支持
🎯 标准模式 (Sora-2)
- 分辨率:720×1280
- 时长:固定 10 秒
- 积分:20 积分/次
- 适用:快速创作、测试想法
⭐ Pro 高清模式 (Sora-2-Pro)
- 分辨率:1024×1792 超清画质 ✨
- 时长:10 秒 或 15 秒 可选 ⏱️
- 积分:100 积分/次
- 适用:专业创作、高质量输出
🎨 丰富的定制选项
- 📐 视频方向:竖屏 (Portrait) / 横屏 (Landscape)
- ⏱️ 时长选择:Pro 模式支持 10 秒/15 秒
- 🖼️ 参考图片:支持上传最多 3 张参考图片
- 💡 快速模板:内置 6 个精选提示词模板
- 📝 描述词:最多支持 4000 字符
📊 完整的作品管理
- 列表展示:卡片式布局,视频缩略图预览
- 状态筛选:全部/生成中/已完成/失败
- 批量操作:下拉刷新、上拉加载更多
- 快速操作:刷新状态、删除任务
🎥 强大的播放功能
- 在线播放:支持全屏播放、进度控制
- 视频下载:一键保存到本地
- 作品分享:分享你的创意视频
- 详细信息:展示 Prompt、参考图片、生成参数
🛠️ 技术栈
前端技术
- 框架:uniapp + Vue 2
- UI 风格:自定义黑色炫酷风格
- 图标库:FontAwesome 4.7
- 动效:CSS3 动画
后端技术
- 云服务:uniCloud(阿里云)
- 开发框架:vk-unicloud 快速开发框架
- 数据库:云数据库
- 云函数:路由模式
核心特性
- ✅ 前后端一体化开发
- ✅ 智能轮询机制
- ✅ 积分系统集成
- ✅ 实时状态同步
- ✅ 多端适配
🚀 快速开始
📦 获取完整源码
本项目为商业应用演示版本。如需获取完整开源版本源码,请联系作者:
- QQ: ***
- 说明: 开源版本、技术支持、商业授权咨询
环境要求
- HBuilderX: 3.1.2+
- Node.js: 12.0+(如需 npm)
- uniCloud: 阿里云服务空间
1. 获取项目源码
联系作者 QQ: *** 获取完整源码包
2. 配置 API Key
编辑配置文件:
uniCloud-aliyun/cloudfunctions/common/uni-config-center/vk-unicloud/config.js
添加你的 Sora API Key:
module.exports = {
service: {
sora: {
apiKey: "你的TTAPI-Sora-API-Key",
},
},
};
3. 初始化云服务空间
- 在 HBuilderX 中打开项目
- 右键
uniCloud
目录 - 选择
运行云服务空间初始化向导
- 按照提示完成初始化
4. 上传云函数
右键 uniCloud-aliyun/cloudfunctions/router
→ 选择 上传部署
5. 创建数据库表
在 uniCloud 控制台创建数据库表:sora-video-tasks
表结构参考:uniCloud-aliyun/database/sora-video-tasks.schema.json
6. 运行项目
# H5 端
HBuilderX → 运行 → 运行到浏览器
# 微信小程序
HBuilderX → 运行 → 运行到小程序模拟器 → 微信开发者工具
# APP
HBuilderX → 运行 → 运行到手机或模拟器
📱 页面说明
1. 首页 - 创作界面 (pages/sora/index.vue
)
功能模块:
- ✅ 顶部导航(Logo + 作品列表 + 退出)
- ✅ Hero 区域(标题 + 统计数据)
- ✅ 积分显示卡片
- ✅ Prompt 输入区(最多 4000 字符)
- ✅ 参考图片上传(最多 3 张)
- ✅ 生成设置(模型/方向/时长)
- ✅ 快速提示词模板(6 个精选)
- ✅ 生成按钮(动态积分显示)
- ✅ 最近作品展示
核心交互:
- 输入描述词
- 选择模型(标准/高清)
- 选择视频方向(竖屏/横屏)
- Pro 模式可选时长(10 秒/15 秒)
- 可选上传参考图片
- 点击生成,自动跳转详情页
2. 列表页 - 作品管理 (pages/sora/list.vue
)
功能模块:
- ✅ 顶部导航(返回 + 标题 + 筛选)
- ✅ 状态筛选标签(全部/生成中/已完成/失败)
- ✅ 作品列表(卡片式布局)
- ✅ 视频缩略图展示
- ✅ 下拉刷新功能
- ✅ 上拉加载更多
- ✅ 快速操作按钮
核心交互:
- 查看所有作品
- 切换状态筛选
- 点击作品查看详情
- 长按/点击操作按钮
- 执行删除/刷新
3. 详情页 - 视频播放 (pages/sora/detail.vue
)
功能模块:
- ✅ 顶部导航(返回 + 标题 + 更多)
- ✅ 视频播放器(全屏支持)
- ✅ 生成进度动画
- ✅ Prompt 展示
- ✅ 参考图片展示
- ✅ 基本信息(模型/方向/时长)
- ✅ 操作按钮(下载/分享/刷新)
核心交互:
- 实时轮询生成状态
- 生成中显示进度动画
- 成功后播放视频
- 支持下载和分享
- 查看详细信息
🔧 配置说明
积分消耗配置
标准用户:
- 标准模式 (sora-2):20 积分/次
- 高清模式 (sora-2-pro):100 积分/次
特殊用户(在代码中配置):
- 标准模式 (sora-2):20 积分/次
- 高清模式 (sora-2-pro):200 积分/次(特殊计费)
修改特殊用户列表:
// uniCloud-aliyun/cloudfunctions/router/service/client/sora/pub/generations.js
const SPECIAL_USERS = [
"用户ID1",
"用户ID2",
// ... 添加更多特殊用户ID
];
轮询配置
默认轮询间隔:5 秒
最大轮询时长:3 分钟
失败后重试次数:3 次
修改轮询配置:
// pages/sora/detail.vue
const POLL_INTERVAL = 5000; // 轮询间隔(毫秒)
const MAX_POLL_TIME = 180000; // 最大轮询时间(毫秒)
📊 项目结构
CSora2/
├── pages/ # 前端页面
│ └── sora/ # Sora 视频生成模块
│ ├── index.vue # 首页 - 创作界面
│ ├── list.vue # 列表页 - 作品管理
│ ├── detail.vue # 详情页 - 视频播放
│ └── README.md # 页面说明文档
│
├── uniCloud-aliyun/ # 云服务
│ ├── database/ # 数据库
│ │ └── sora-video-tasks.schema.json # 任务表结构
│ │
│ └── cloudfunctions/ # 云函数
│ └── router/ # 路由云函数
│ └── service/client/sora/ # Sora 业务逻辑
│ ├── pub/ # 公开接口(无需登录)
│ │ ├── generations.js # 创建视频任务
│ │ ├── fetch.js # 查询视频结果
│ │ └── receiveHook.js # 接收回调通知
│ │
│ ├── kh/ # 客户端接口(需登录)
│ │ ├── getTaskList.js # 获取任务列表
│ │ ├── getTaskDetail.js # 获取任务详情
│ │ ├── deleteTask.js # 删除任务
│ │ ├── pollTask.js # 轮询查询
│ │ └── batchQuery.js # 批量查询
│ │
│ ├── sys/ # 系统接口(管理员)
│ │ └── getStatistics.js # 获取统计数据
│ │
│ ├── util/ # 工具函数
│ │ └── helper.js # 辅助工具
│ │
│ ├── README.md # 接口文档
│ ├── 快速开始.md # 快速开始指南
│ └── example.js # 示例代码
│
├── common/ # 公共资源
│ ├── css/ # 公共样式
│ └── function/ # 公共函数
│
├── static/ # 静态资源
│ ├── logo.png # Logo
│ └── icon/ # 图标
│
├── package.json # 项目配置
├── pages.json # 页面配置
├── manifest.json # 应用配置
├── README.md # 项目文档(本文件)
├── AI视频生成应用设计文档.md # 设计文档
├── 快速启动指南.md # 启动指南
└── 项目完成清单.md # 完成清单
🎨 设计规范
色彩方案
主色调:
- Primary:
#8b5cf6
(紫色) - Secondary:
#ec4899
(粉红色) - Background:
#0a0a0a
→#1a1a2e
(渐变)
渐变配色:
/* 主渐变 */
linear-gradient(135deg, #8b5cf6 0%, #ec4899 100%)
/* 背景渐变 */
linear-gradient(180deg, #0a0a0a 0%, #1a1a2e 100%)
状态色:
- 生成中:
#fbbf24
(黄色) - 成功:
#22c55e
(绿色) - 失败:
#ef4444
(红色)
字体规范
/* 主标题 */
font-size: 60rpx;
font-weight: bold;
/* 副标题 */
font-size: 36rpx;
/* 正文 */
font-size: 28rpx;
/* 说明文字 */
font-size: 24rpx;
📚 文档
完整文档列表
- README.md - 项目说明(本文件)
- AI 视频生成应用设计文档.md - 完整设计文档
- 快速启动指南.md - 快速启动指南
- 项目完成清单.md - 项目完成清单
- pages/sora/README.md - 页面使用文档
- uniCloud-aliyun/cloudfunctions/router/service/client/sora/README.md - 接口文档
在线文档
- vk-unicloud 框架文档:https://vkdoc.fsq.pub/
- uniCloud 官方文档:https://uniapp.dcloud.net.cn/uniCloud/
- Sora API 文档:请查看 TTAPI 官方文档
🔌 API 接口
公开接口(pub/)
1. 创建视频任务
vk.callFunction({
url: "client/sora/pub/generations",
data: {
model: "sora-2-pro", // 模型:sora-2 或 sora-2-pro
prompt: "描述词", // 描述词(最多4000字符)
orientation: "portrait", // 方向:portrait 或 landscape
duration: 15, // 时长:10 或 15(仅 pro 支持)
referImages: [], // 参考图片数组(可选)
},
});
2. 查询视频结果
vk.callFunction({
url: "client/sora/pub/fetch",
data: {
jobId: "任务ID",
},
});
客户端接口(kh/)
1. 获取任务列表
vk.callFunction({
url: "client/sora/kh/getTaskList",
data: {
pageIndex: 1,
pageSize: 10,
status: "SUCCESS", // 可选:ON_QUEUE, SUCCESS, FAILED
},
});
2. 轮询查询(推荐)
vk.callFunction({
url: "client/sora/kh/pollTask",
data: {
jobId: "任务ID",
},
});
3. 删除任务
vk.callFunction({
url: "client/sora/kh/deleteTask",
data: {
jobId: "任务ID",
},
});
❓ 常见问题
1. 如何获取 Sora API Key?
请访问 TTAPI 官网申请 Sora API Key。
2. 支持哪些平台?
支持 H5、微信小程序、APP(iOS/Android)等多平台。
3. 如何修改积分消耗?
修改文件:
- 前端:
pages/sora/index.vue
的integralCost
计算属性 - 后端:
uniCloud-aliyun/cloudfunctions/router/service/client/sora/pub/generations.js
的INTEGRAL_COST
常量
4. 视频生成需要多久?
通常 30-120 秒,具体时间取决于服务器负载。
5. 为什么生成失败?
可能原因:
- 积分不足
- 描述词包含敏感内容
- 参考图片不符合要求(人脸、Logo 等)
- API 服务异常
6. 如何添加特殊用户?
编辑文件:
// uniCloud-aliyun/cloudfunctions/router/service/client/sora/pub/generations.js
const SPECIAL_USERS = ["用户ID1", "用户ID2"];
🤝 贡献指南
欢迎提交 Issue 和 Pull Request!
开发规范
- 遵循 DRY 原则(Don't Repeat Yourself)
- 遵循 KISS 原则(Keep It Simple, Stupid)
- 遵循 SOLID 原则(单一职责)
- 遵循 YAGNI 原则(You Aren't Gonna Need It)
提交规范
feat: 添加新功能
fix: 修复 Bug
style: 优化样式
docs: 更新文档
refactor: 代码重构
test: 添加测试
chore: 构建/工具变动
📄 开源协议
本项目基于 MIT License 开源协议。
🙏 致谢
- uniCloud - 云开发平台
- vk-unicloud - 快速开发框架
- FontAwesome - 图标库
- TTAPI - Sora API 提供商
📞 联系方式
- 在线演示:https://csora.hefeiruanyun.com/#/pages/sora/index
- 插件市场:uniapp 插件市场(搜索 CSora2)
- 作者:ChenChen
- 作者 QQ:***
- 服务内容:
- 💾 获取完整开源版本源码
- 🛠️ 技术支持与咨询
- 📝 商业授权与定制开发
- 📚 部署指导与培训
📈 更新日志
v1.0.0 (2025-10-14)
初始版本发布 🎉
- ✅ 支持 Sora-2 和 Sora-2-Pro 双模式
- ✅ 支持 15 秒高清视频生成
- ✅ 支持横竖屏切换
- ✅ 支持参考图片上传
- ✅ 完整的作品管理功能
- ✅ 实时状态轮询机制
- ✅ 积分系统集成
- ✅ 黑色炫酷风格设计
- ✅ 多端适配(H5/小程序/APP)
- ✅ 完整的文档和示例