外观
架构与技术栈
米卡AIGC云转码系统采用前后端分离的架构设计,由多个独立模块组成,各模块职责清晰,便于开发、部署和维护。
项目架构
整体架构
米卡AIGC云转码系统
├── server/ # 后端主服务(Go)
├── web/ # 前端管理后台(Vue 3)
├── receiver/ # 分发接收服务(Go)
├── up/ # 上传服务模块
└── wordpress/ # WordPress 插件核心模块
1. Server - 后端主服务
后端主服务是整个系统的核心,基于 Go 语言开发,负责处理所有业务逻辑。
核心功能
- 视频转码引擎:基于 FFmpeg 的视频转码服务
- 存储管理:支持本地存储、阿里云 OSS、腾讯云 COS
- 图库管理:图片上传、压缩、水印
- 分发系统:多节点分发、负载均衡
- API 服务:RESTful API 接口
技术栈
- 框架:Gin(Web 框架)
- ORM:GORM(数据库操作)
- 数据库:MySQL 8.0+
- 缓存:Redis 7.0+
- 日志:Zap(高性能日志)
- 配置:Viper(配置管理)
- 认证:JWT(用户认证)
2. Web - 前端管理后台
前端管理后台基于 Vue 3 开发,提供可视化的系统管理界面。
核心功能
- 视频管理:视频上传、转码任务管理、进度监控
- 图库管理:图片上传、分类管理、水印设置
- 存储管理:存储配置、空间统计、数据迁移
- 系统设置:参数配置、水印模板、转码模板
- 数据统计:可视化图表、数据分析
技术栈
- 框架:Vue 3.4+
- 构建工具:Vite 5.0+
- UI 组件:Element Plus 2.5+
- 状态管理:Pinia 2.1+
- 路由:Vue Router 4.2+
- HTTP 请求:Axios 1.6+
- 类型检查:TypeScript 5.3+
- 图表:ECharts
3. Receiver - 分发接收服务
分发接收服务负责处理视频分发请求,支持多节点部署和负载均衡。
核心功能
- 视频分发:处理 M3U8 和 TS 文件的请求
- 负载均衡:智能分配请求到不同节点
- 缓存管理:热点内容缓存,提升访问速度
- 访问统计:记录播放量、访问来源等数据
- 防盗链:支持 Referer 验证、Token 验证
技术特点
- 轻量级设计,资源占用低
- 高并发支持,适合大流量场景
- 支持 CDN 加速集成
- 实时监控和日志记录
4. Up - 上传服务模块
上传服务模块提供独立的文件上传功能,可单独部署。
核心功能
- 大文件上传:支持分片上传、断点续传
- 格式验证:自动检测文件格式和完整性
- 预处理:视频预处理、缩略图生成
- 直传支持:支持直传到对象存储
5. WordPress - WordPress 插件
WordPress 插件让用户可以在 WordPress 网站中直接使用米卡云转码系统。
核心功能
- 媒体库集成:与 WordPress 媒体库无缝集成
- 短代码支持:通过短代码在文章中插入视频
- 古腾堡块:支持 WordPress 古腾堡编辑器
- 自动转码:上传视频自动提交转码任务
- 播放器集成:内置 HLS 播放器
数据流转
视频转码流程
1. 用户上传视频
↓
2. Web 前端 → Server API
↓
3. Server 保存原始文件
↓
4. 创建转码任务(队列)
↓
5. FFmpeg 执行转码
↓
6. 生成 M3U8 + TS 文件
↓
7. 上传到存储(OSS/COS/本地)
↓
8. 更新任务状态
↓
9. 通知前端完成视频播放流程
1. 用户请求播放
↓
2. 获取 M3U8 地址
↓
3. Receiver 接收请求
↓
4. 验证权限(防盗链)
↓
5. 从存储获取文件
↓
6. 返回给播放器
↓
7. 播放器解析 M3U8
↓
8. 逐个请求 TS 分片
↓
9. 播放视频部署架构
单机部署
适合小规模使用,所有服务部署在一台服务器上。
┌─────────────────────────────────────┐
│ 服务器(单机) │
│ ┌──────────┐ ┌──────────┐ │
│ │ Nginx │ │ MySQL │ │
│ └──────────┘ └──────────┘ │
│ ┌──────────┐ ┌──────────┐ │
│ │ Server │ │ Redis │ │
│ └──────────┘ └──────────┘ │
│ ┌──────────┐ ┌──────────┐ │
│ │ Web │ │ Receiver │ │
│ └──────────┘ └──────────┘ │
└─────────────────────────────────────┘分布式部署
适合大规模使用,各服务独立部署,支持横向扩展。
┌──────────────┐
│ 负载均衡 │
│ (Nginx) │
└──────┬───────┘
│
┌───┴────┬────────┬────────┐
│ │ │ │
┌──▼──┐ ┌──▼──┐ ┌──▼──┐ ┌──▼──┐
│Web 1│ │Web 2│ │API 1│ │API 2│
└─────┘ └─────┘ └──┬──┘ └──┬──┘
│ │
┌──────┴────────┴──────┐
│ │
┌────▼────┐ ┌─────▼────┐
│ MySQL │ │ Redis │
│ (主从) │ │ (集群) │
└─────────┘ └──────────┘
│
┌────▼────┐
│ OSS │
│ (对象存储)│
└─────────┘
│
┌─────────┴─────────┐
│ │
┌───▼────┐ ┌───▼────┐
│Receiver│ │Receiver│
│ Node 1 │ │ Node 2 │
└────────┘ └────────┘技术亮点
1. 高性能
- Go 语言:天然支持高并发,协程机制轻量高效
- Redis 缓存:热点数据缓存,减少数据库压力
- 对象存储:分布式存储,支持海量文件
- CDN 加速:全球节点分发,降低延迟
2. 高可用
- 服务隔离:各模块独立部署,故障不影响其他服务
- 负载均衡:多节点部署,自动故障转移
- 数据备份:定期备份,支持快速恢复
- 监控告警:实时监控,异常及时通知
3. 易扩展
- 模块化设计:功能模块独立,易于扩展
- 插件机制:支持 WordPress 等第三方平台集成
- API 开放:提供完整的 RESTful API
- 配置灵活:支持多种存储、多种部署方式
4. 安全性
- JWT 认证:安全的用户认证机制
- 权限控制:细粒度的权限管理
- 防盗链:多种防盗链策略
- 数据加密:敏感数据加密存储
- 日志审计:完整的操作日志记录
技术栈详解
后端技术
核心框架
| 技术 | 版本 | 用途 |
|---|---|---|
| Go | 1.22+ | 主开发语言,提供高性能并发处理能力 |
| Gin | 1.9+ | Web 框架,处理 HTTP 路由和中间件 |
| GORM | 1.25+ | ORM 框架,简化数据库操作 |
数据存储
| 技术 | 版本 | 用途 |
|---|---|---|
| MySQL | 8.0+ | 主数据库,存储业务数据 |
| Redis | 7.0+ | 缓存、会话管理、消息队列 |
核心组件
| 技术 | 版本 | 用途 |
|---|---|---|
| FFmpeg | 5.0+ | 视频转码引擎,支持多种格式转换 |
| JWT | - | 用户认证和授权 |
| Zap | - | 高性能结构化日志库 |
| Viper | - | 配置文件管理 |
对象存储
- 阿里云 OSS SDK - 阿里云对象存储集成
- 腾讯云 COS SDK - 腾讯云对象存储集成
- 本地文件系统 - 支持本地存储方案
前端技术
核心框架
| 技术 | 版本 | 用途 |
|---|---|---|
| Vue | 3.4+ | 渐进式前端框架 |
| TypeScript | 5.3+ | 类型安全的 JavaScript 超集 |
| Vite | 5.0+ | 下一代前端构建工具 |
UI 组件
| 技术 | 版本 | 用途 |
|---|---|---|
| Element Plus | 2.5+ | Vue 3 UI 组件库 |
| Pinia | 2.1+ | Vue 3 状态管理库 |
| Vue Router | 4.2+ | Vue 官方路由管理器 |
工具库
| 技术 | 版本 | 用途 |
|---|---|---|
| Axios | 1.6+ | HTTP 请求库 |
| Day.js | - | 轻量级日期处理库 |
| ECharts | - | 数据可视化图表库 |
运维技术
| 技术 | 用途 |
|---|---|
| Nginx | 反向代理、负载均衡、静态资源服务 |
| Systemd | Linux 系统服务管理 |
| 宝塔面板 | 可视化服务器运维管理工具 |
浏览器支持
系统前端支持现代浏览器的最新版本:
| 浏览器 | 最低版本 |
|---|---|
| Chrome | 最新 2 个版本 |
| Firefox | 最新 2 个版本 |
| Safari | 最新 2 个版本 |
| Edge | 最新 2 个版本 |
注意
不支持 IE 浏览器,建议使用现代浏览器以获得最佳体验。
系统要求
服务器配置建议
最低配置
- CPU: 2 核
- 内存: 4GB
- 硬盘: 50GB
- 带宽: 5Mbps
推荐配置
- CPU: 4 核及以上
- 内存: 8GB 及以上
- 硬盘: 100GB 及以上(根据存储需求调整)
- 带宽: 10Mbps 及以上
软件环境
- 操作系统: Linux (推荐 Ubuntu 20.04+, CentOS 7+)
- Go: 1.22+
- Node.js: 18+
- MySQL: 8.0+
- Redis: 7.0+
- FFmpeg: 5.0+
- Nginx: 1.20+