基于 FastAPI + Celery + MongoDB + MinIO + Taro 的全栈去水印解决方案。
PureClip 是一个功能强大的视频和图片去水印系统,支持多种去水印方法:
- 裁剪:快速裁掉水印区域
- 模糊:对水印区域进行高斯模糊
- 覆盖:智能用周围颜色覆盖水印
- 填充:使用AI算法智能修复水印区域
用户上传URL
↓
[微信小程序 Taro]
↓
[FastAPI服务] → MongoDB (任务存储)
↓ → Redis (任务缓存)
[Celery Worker]
↓
[ffmpeg/OpenCV] (视频/图片处理)
↓
[MinIO对象存储]
↓
返回处理结果URL
PureClip/
├── backend-watermark/ # 后端服务
│ ├── api/ # API路由
│ ├── celery_app/ # Celery任务
│ ├── config/ # 配置文件
│ ├── core/ # 核心模块(MongoDB/Redis/MinIO)
│ ├── models/ # 数据模型
│ ├── services/ # 业务服务
│ ├── app.py # FastAPI应用入口
│ └── requirements.txt # Python依赖
│
├── frontend-watermark/ # 前端小程序
│ ├── config/ # Taro配置
│ ├── src/
│ │ ├── pages/ # 页面
│ │ │ ├── index/ # 首页(上传)
│ │ │ ├── result/ # 处理结果页
│ │ │ └── history/ # 历史记录页
│ │ ├── services/ # API服务
│ │ ├── store/ # Redux状态管理
│ │ └── utils/ # 工具函数
│ └── package.json
│
└── README.md
后端:
- Python 3.8+
- MongoDB 4.4+
- Redis 6.0+
- MinIO
- FFmpeg
- OpenCV
前端:
- Node.js 16+
- pnpm 8+
cd backend_watermark
pip install -r requirements.txt编辑 config/config.yaml:
# MongoDB配置
mongodb:
uri: "mongodb://localhost:27017/"
database: "pureclip"
# Redis配置
redis:
host: "localhost"
port: 6379
# MinIO配置
minio:
endpoint: "localhost:9000"
access_key: "your_access_key"
secret_key: "your_secret_key"# 启动FastAPI服务
python app.py
# 启动Celery Worker (新终端)
celery -A backend_watermark.celery_app.celery worker --loglevel=info
# 启动Celery Beat (可选,定时任务)
celery -A backend_watermark.celery_app.celery beat --loglevel=infocd frontend-watermark
pnpm install编辑 src/config/api.ts:
export const API_BASE_URL = 'http://your-api-domain.com/api'# H5开发
pnpm dev:h5
# 微信小程序开发
pnpm dev:weapp
# 然后使用微信开发者工具打开 dist 目录# 构建H5
pnpm build:h5
# 构建微信小程序
pnpm build:weapp- 支持多种视频格式 (MP4, AVI, MOV等)
- 最大支持500MB视频
- 最长支持10分钟视频
- 支持多种图片格式 (JPG, PNG, WebP等)
- 最大支持20MB图片
- 高质量输出
- 裁剪: 速度最快,适合边角水印
- 模糊: 简单快速,让水印不明显
- 覆盖: 用周围颜色自动填充
- 智能填充: AI算法,效果最好
- 实时进度显示
- 任务状态轮询
- 历史记录查询
- MinIO对象存储
- 预签名URL访问
- 7天自动过期
- FastAPI: 现代化的Python Web框架
- Celery: 分布式任务队列
- MongoDB: NoSQL数据库
- Redis: 缓存和消息队列
- MinIO: S3兼容对象存储
- FFmpeg: 视频处理
- OpenCV: 图像处理
- Taro 4.0: 多端开发框架
- React 18: UI框架
- Redux Toolkit: 状态管理
- TypeScript: 类型支持
- Sass: CSS预处理器
POST /api/tasks
Content-Type: application/json
{
"url": "https://example.com/video.mp4",
"media_type": "video",
"method": "crop",
"watermark_region": {
"x": 10,
"y": 10,
"width": 100,
"height": 50
},
"user_id": "user_123"
}GET /api/tasks/{task_id}GET /api/history?user_id=user_123&limit=20完整API文档:启动后端服务后访问 http://localhost:8001/docs
生产环境请务必修改以下配置:
- MongoDB: 使用强密码,开启认证
- Redis: 设置密码,绑定内网IP
- MinIO: 修改默认账号密码
- FastAPI: 修改SECRET_KEY
- CORS: 设置允许的域名
- Redis缓存: 任务状态缓存24小时
- 异步处理: Celery异步任务队列
- 流式传输: 大文件分块上传下载
- CDN加速: MinIO配合CDN使用
# Ubuntu/Debian
sudo apt-get install ffmpeg
# macOS
brew install ffmpeg
# Windows
# 下载并添加到PATHpip install opencv-python opencv-contrib-python检查Redis是否启动:
redis-cli ping确保MinIO服务正常运行:
mc admin info local- 支持批量处理
- AI智能检测水印位置
- 支持更多视频格式
- 视频压缩优化
- 用户系统和权限管理
- 微信模板消息通知
- 文件加密存储
欢迎提交 Issue 和 Pull Request!
MIT License
- Email: [email protected]
- 项目主页: https://github.com/yourname/pureclip
注意: 本项目仅供学习交流使用,请勿用于商业用途或侵犯他人版权。