d419d6732e
后端:
- config.py: 新增 APP_BASE_URL 配置,支持 ENV 自动推断公网地址
- vidu.py: POST /lip-sync 自动拼接 callback_url 提交给 Vidu
- vidu.py: 新增 POST /callback 接收 Vidu 异步回调,写入 Redis
- vidu.py: GET /tasks/{id}/status 优先查 Redis,fallback 到 Vidu API
前端:
- types.ts / localStorage.ts: ScriptShot/ProjectSegment 新增 lipSyncVideoPath/VideoUrl/StartTime
- VideoGeneration.tsx: Step 1 提交对口型时保存 lipSyncStartTime(只算一次)
- VideoGeneration.tsx: 新增 Step 2 轮询后端状态(5s×120次),下载对口型视频
- VideoGeneration.tsx: Step 3 拼接时 segment 优先使用对口型视频,startTime=0
部署:
- docker-compose.test.yml / prod.yml: 添加 APP_BASE_URL 环境变量
- .env.example: 添加 APP_BASE_URL 说明
修复:
- 修复 React 闭包陷阱(updateSegment 后 shots 未同步)
- 修复 startTime 不一致(Step1/Step2 各自 random)
91 lines
2.7 KiB
Bash
91 lines
2.7 KiB
Bash
# 美家卡智影 API - 环境变量配置示例
|
||
# ================================
|
||
# 复制此文件为 .env 并填写实际值
|
||
|
||
# === 基础配置 ===
|
||
APP_NAME=美家卡智影 API
|
||
APP_VERSION=0.1.0
|
||
DEBUG=true
|
||
ENV=development
|
||
HOST=0.0.0.0
|
||
PORT=8000
|
||
|
||
# === 数据库配置 ===
|
||
# 本地开发: localhost
|
||
# Docker 部署: 容器名(如 db、meijiaka-db)
|
||
DATABASE_URL=postgresql+asyncpg://postgres:postgres@localhost:5432/meijiaka_zy
|
||
|
||
# === Redis 配置 ===
|
||
# 本地开发: localhost
|
||
# Docker 部署: 容器名(如 redis、meijiaka-redis)
|
||
REDIS_HOST=localhost
|
||
REDIS_PORT=6379
|
||
REDIS_DB=1
|
||
# REDIS_PASSWORD= # 如无密码请留空或注释
|
||
|
||
# === JWT 安全配置 ===
|
||
# 生产环境必须修改为强随机密钥
|
||
SECRET_KEY=your-secret-key-here-change-in-production
|
||
ACCESS_TOKEN_EXPIRE_MINUTES=10080
|
||
ALGORITHM=HS256
|
||
|
||
# === CORS 配置 ===
|
||
# 本地开发: 允许 localhost
|
||
# 测试/生产服: 填写实际域名,如 https://app.yourdomain.com
|
||
CORS_ORIGINS=http://localhost:1420,http://127.0.0.1:1420,http://localhost:8080
|
||
|
||
# === AI 平台配置 ===
|
||
|
||
# 火山方舟(必需)
|
||
VOLCENGINE_API_KEY=your-volcengine-api-key
|
||
VOLCENGINE_BASE_URL=https://ark.cn-beijing.volces.com/api/v3
|
||
|
||
# 火山字幕服务(必需)
|
||
VOLCENGINE_CAPTION_APPID=your-caption-appid
|
||
VOLCENGINE_CAPTION_TOKEN=your-caption-token
|
||
|
||
# 可灵 AI(必需,用于视频生成、形象克隆)
|
||
KLINGAI_ACCESS_KEY=your-kling-access-key
|
||
KLINGAI_SECRET_KEY=your-kling-secret-key
|
||
|
||
# MiniMax(必需,用于语音合成、语音克隆)
|
||
MINIMAX_API_KEY=sk-api-your-minimax-key
|
||
MINIMAX_BASE_URL=https://api.minimaxi.com
|
||
|
||
# Vidu(必需,用于TTS语音合成、声音复刻、对口型)
|
||
VIDU_API_KEY=your-vidu-api-key
|
||
VIDU_BASE_URL=https://api.vidu.cn
|
||
|
||
# OpenAI(可选)
|
||
# OPENAI_API_KEY=sk-your-openai-key
|
||
# OPENAI_BASE_URL=https://api.openai.com/v1
|
||
|
||
# 文心一言(可选)
|
||
# WENXIN_API_KEY=your-wenxin-key
|
||
# WENXIN_SECRET_KEY=your-wenxin-secret
|
||
|
||
# 通义千问(可选)
|
||
# QIANWEN_API_KEY=your-qianwen-key
|
||
|
||
# === 七牛云存储(必需,用于空镜图片上传)===
|
||
QINIU_ACCESS_KEY=your-qiniu-access-key
|
||
QINIU_SECRET_KEY=your-qiniu-secret-key
|
||
QINIU_VIDEO_BUCKET=media-liche
|
||
QINIU_VIDEO_DOMAIN=media.liche.cn
|
||
QINIU_IMAGE_BUCKET=img-liche
|
||
QINIU_IMAGE_DOMAIN=img.liche.cn
|
||
|
||
# === 其他服务 ===
|
||
|
||
# AnyToCopy 文案提取(可选)
|
||
ANYTOCOPY_API_KEY=your-anytocopy-api-key
|
||
ANYTOCOPY_API_SECRET=your-anytocopy-secret
|
||
ANYTOCOPY_BASE_URL=https://api.anytocopy.com/vip/open-api/v1
|
||
|
||
# === 应用公网地址(用于 Vidu 等第三方回调)===
|
||
# 不配置时自动根据 ENV 推断:production→tapi.meijiaka.cn, staging→dev.tapi.meijiaka.cn
|
||
# APP_BASE_URL=https://dev.tapi.meijiaka.cn
|
||
|
||
# === 日志配置 ===
|
||
LOG_LEVEL=INFO
|