🏛️ 智影方案设计 - 智慧文旅 AI 视频平台
基于 Seedance 1.5 和 博观大模型,打造类似"智影"的智慧文旅小程序/网站平台。
📐 一、系统架构
┌─────────────────────────────────────────────────────────────────────────┐
│ 用户层 (微信小程序 / Web) │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ 🎬 视频生成 │ │ 🗣️ 智能导览 │ │ 🤖 AI 客服 │ │ 📸 AI 拍照 │ │
│ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ │
└─────────┼────────────────┼────────────────┼────────────────┼───────────┘
│ │ │ │
▼ ▼ ▼ ▼
┌─────────────────────────────────────────────────────────────────────────┐
│ API 网关层 │
│ ┌─────────────────────────────────────────────────────────────────┐ │
│ │ Spring Cloud Gateway / Nginx │ │
│ │ 认证、限流、路由、负载均衡 │ │
│ └─────────────────────────────────────────────────────────────────┘ │
└────────────────────────────────┬────────────────────────────────────────┘
│
┌───────────────────────┼───────────────────────┐
▼ ▼ ▼
┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ 视频服务 │ │ 知识库服务 │ │ 用户服务 │
│ (Seedance) │ │ (RAG+博观) │ │ (JWT) │
└──────────────────┘ └──────────────────┘ └──────────────────┘
│ │ │
└───────────────────────┼───────────────────────┘
▼
┌─────────────────────────────────────────────────────────────────────────┐
│ 基础设施层 │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ 火山方舟 │ │ MinIO │ │ Redis │ │ MySQL │ │
│ │ 视频生成 │ │ 对象存储 │ │ 缓存 │ │ 数据库 │ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
└─────────────────────────────────────────────────────────────────────────┘
🛠️ 二、技术栈
🌐 前端: Vue3 / React
📱 微信小程序
🔙 后端: Spring Boot
🔧 API 网关: Spring Cloud Gateway
☁️ 部署: Docker + K8s
🎬 视频: Seedance 1.5
🧠 AI: 博观大模型
💾 存储: MinIO + MySQL
📱 三、核心功能模块
🎬
AI 视频生成
图生视频、文生视频、主体参照、风格迁移、口型匹配
🗣️
智能语音导览
景点讲解、语音问答、AR 实景导航
🤖
AI 智能客服
7×24 问答、景点推荐、票务咨询
📸
AI 拍照
智能修图、风格滤镜、背景替换
🗺️
智能行程规划
个性化路线、时间优化、景点推荐
🎫
智能票务
在线预约、人流预测、刷脸入园
🔧 四、核心代码实现
4.1 视频生成服务
// 视频生成 Controller
@RestController
@RequestMapping("/api/video")
public class VideoController {
@Autowired
private SeedanceService seedanceService;
@PostMapping("/generate")
public Result<Task> generateVideo(@RequestBody VideoGenerateRequest request) {
// 1. 参数校验
// 2. 调用 Seedance API
// 3. 创建任务记录
// 4. 返回任务ID
return Result.success(task);
}
@GetMapping("/task/{taskId}")
public Result<VideoResult> getTaskResult(@PathVariable String taskId) {
// 查询任务状态
// 返回视频URL或进度
}
}
4.2 Seedance + 即梦 集成
// 视频生成服务 - 支持双平台
@Service
public class VideoService {
// 即梦配置
private static final String JIMENG_AK = "AKLTMGY5MDcxNmVjYTg4NDE4ZGE0YTMyMWJlZGQwZjExNzc";
private static final String JIMENG_SK = "WW1Wak9EVXdaRFU0WlRSaE5HSXlOMkkyT1dWall6WTRNekU0WWpkaVpqVQ";
private static final String JIMENG_ENDPOINT = "https://visual.baidu.com/pixelai/image2video";
// Seedance 配置
private static final String SEEDANCE_API_KEY = "your-key";
private static final String SEEDANCE_ENDPOINT = "https://ark.cn-beijing.volces.com/api/v3/contents/generations/tasks";
/**
* 创建视频任务 - 即梦
*/
public String createJimengTask(String prompt, String imageUrl, int duration) {
MultipartBody.Builder body = new MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart("prompt", prompt)
.addFormDataPart("image", imageUrl)
.addFormDataPart("duration", String.valueOf(duration))
.addFormDataPart("withLogo", "true");
Request request = new Request.Builder()
.url(JIMENG_ENDPOINT)
.addHeader("Authorization", "Bearer " + JIMENG_AK + ":" + JIMENG_SK)
.post(body.build())
.build();
// 执行请求并返回 task_id
}
/**
* 查询即梦任务状态
*/
public VideoResult checkJimengTask(String taskId) {
Request request = new Request.Builder()
.url(JIMENG_ENDPOINT + "/status/" + taskId)
.addHeader("Authorization", "Bearer " + JIMENG_AK + ":" + JIMENG_SK)
.get()
.build();
// 返回视频URL或进度
}
}
4.3 微信小程序调用
// 微信小程序 - 视频生成页面
Page({
data: {
imageUrl: '',
prompt: '',
generating: false,
videoUrl: ''
},
uploadImage() {
wx.chooseImage({
success: res => {
this.setData({ imageUrl: res.tempFilePaths[0] })
// 上传到服务器获取URL
this.uploadToServer(res.tempFilePaths[0])
}
})
},
generateVideo() {
wx.showLoading({ title: '生成中...' })
wx.request({
url: 'https://api.yourdomain.com/api/video/generate',
method: 'POST',
data: {
image_url: this.data.serverImageUrl,
prompt: this.data.prompt,
duration: 5
},
success: res => {
// 轮询任务状态
this.pollTask(res.data.task_id)
}
})
},
pollTask(taskId) {
const interval = setInterval(() => {
wx.request({
url: `https://api.yourdomain.com/api/video/task/${taskId}`,
success: res => {
if (res.data.status === 'succeeded') {
clearInterval(interval)
this.setData({
videoUrl: res.data.video_url,
generating: false
})
wx.hideLoading()
}
}
})
}, 3000)
}
})
📋 五、部署步骤
第一步:准备服务器
配置要求:
- CPU: 4 核 +
- 内存: 8GB +
- 硬盘: 100GB +
- 系统: Ubuntu 22.04
第二步:部署后端服务
# 安装 Docker
curl -fsSL https://get.docker.com | sh
# 启动基础服务
docker run -d --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=xxx mysql:8
docker run -d --name redis -p 6379:6379 redis:7
docker run -d --name minio -p 9000:9000 -p 9001:9001 -e MINIO_ROOT_USER=xxx -e MINIO_ROOT_PASSWORD=xxx minio/minio server /data
第三步:配置 Seedance API
在火山方舟控制台:
- 创建应用获取 API Key
- 开通 Seedance 1.5 模型
- 配置 API 调用地址
第四步:部署小程序
- 注册微信小程序
- 配置服务器域名
- 上传前端代码
- 提交审核
💰 六、成本估算
| 项目 | 说明 | 预估月成本 |
|---|---|---|
| 云服务器 | 4核8G | ¥300-500 |
| Seedance API | 按调用量计费 | ¥1000-5000 |
| 对象存储 | 图片+视频存储 | ¥100-300 |
| 数据库+缓存 | MySQL + Redis | ¥200-400 |
| 合计 | ¥1600-6200 |
📝 七、总结
核心功能:
- 🎬 AI 视频生成:基于 Seedance 1.5
- 🗣️ 智能导览:基于博观大模型 + RAG
- 📱 微信小程序:即用即走,方便快捷
- ☁️ 云端部署:弹性扩展,按需付费