init
基于AI的自动化宣传视频生成服务,根据用户的自然语言描述和提供的视频/音频素材,自动生成专业的宣传视频。
用户请求 → FastAPI接口 → AI分析 → TTS生成 → 文件上传 → Creatomate渲染 → 返回视频
git clone <repository-url> cd autoclips
python -m venv venv source venv/bin/activate # Linux/Mac # 或 venv\Scripts\activate # Windows
pip install -r requirements.txt
需要安装FFmpeg(用于获取视频/音频信息):
# macOS brew install ffmpeg # Ubuntu/Debian sudo apt-get install ffmpeg # Windows # 从 https://ffmpeg.org/download.html 下载并安装
复制示例配置文件并填写你的API密钥:
cp .env.example .env
编辑 .env 文件,配置以下参数:
.env
# DeepSeek API配置 DEEPSEEK_API_KEY=your_deepseek_api_key_here DEEPSEEK_BASE_URL=https://api.deepseek.com/v1 DEEPSEEK_MODEL=deepseek-chat # Creatomate API配置 CREATOMATE_API_KEY=your_creatomate_api_key_here # 存储服务配置(选择一种) STORAGE_TYPE=oss # oss, s3, 或 local # 阿里云OSS配置 OSS_ACCESS_KEY_ID=your_oss_access_key OSS_ACCESS_KEY_SECRET=your_oss_secret OSS_BUCKET_NAME=your_bucket_name OSS_ENDPOINT=oss-cn-hangzhou.aliyuncs.com # 或 AWS S3配置 # AWS_ACCESS_KEY_ID=your_aws_access_key # AWS_SECRET_ACCESS_KEY=your_aws_secret # AWS_BUCKET_NAME=your_bucket_name # AWS_REGION=us-east-1 # 其他配置...
mkdir -p temp output logs
python main.py
或使用uvicorn:
uvicorn main:app --host 0.0.0.0 --port 8000 --reload
服务将在 http://localhost:8000 启动。
http://localhost:8000
启动服务后,访问以下地址查看API文档:
curl -X POST "http://localhost:8000/api/v1/videos/generate" \ -F "description=帮我制作一个产品宣传视频,要突出产品的创新性和高品质" \ -F "video_files=@video1.mp4" \ -F "video_files=@video2.mp4" \ -F "audio_files=@bgm.mp3" \ -F "voice_preference=zh-CN-XiaoxiaoNeural" \ -F "output_format=mp4" \ -F "wait_for_completion=true"
curl -X POST "http://localhost:8000/api/v1/videos/generate-from-urls" \ -H "Content-Type: application/json" \ -d '{ "description": "帮我制作一个产品宣传视频,要突出产品的创新性和高品质", "video_urls": [ "https://example.com/video1.mp4", "https://example.com/video2.mp4" ], "audio_urls": [ "https://example.com/bgm.mp3" ], "voice_preference": "zh-CN-XiaoxiaoNeural", "output_format": "mp4", "wait_for_completion": true }'
curl -X GET "http://localhost:8000/api/v1/tasks/{task_id}"
curl -X DELETE "http://localhost:8000/api/v1/tasks/{task_id}"
curl -X GET "http://localhost:8000/api/v1/voices"
import requests from pathlib import Path API_BASE_URL = "http://localhost:8000" def generate_video( description: str, video_files: list, audio_files: list = None, voice_preference: str = "zh-CN-XiaoxiaoNeural" ): files = { "description": (None, description), "voice_preference": (None, voice_preference), "output_format": (None, "mp4"), "wait_for_completion": (None, "true") } for idx, video_file in enumerate(video_files): files[f"video_files"] = (Path(video_file).name, open(video_file, "rb")) if audio_files: for idx, audio_file in enumerate(audio_files): files[f"audio_files"] = (Path(audio_file).name, open(audio_file, "rb")) response = requests.post( f"{API_BASE_URL}/api/v1/videos/generate", files=files ) return response.json() # 使用示例 result = generate_video( description="制作一个科技感十足的产品宣传视频,强调创新和未来感", video_files=["product_video.mp4"], audio_files=["background_music.mp3"] ) print(result)
from example import AutoClipsClient client = AutoClipsClient() # 从URL生成视频 result = client.generate_video_from_urls( description="制作一个科技感十足的产品宣传视频,强调创新和未来感", video_urls=[ "https://example.com/product_video.mp4", "https://example.com/usage_scenario.mp4" ], audio_urls=["https://example.com/background_music.mp3"], wait_for_completion=True ) print(f"视频URL: {result.get('video_url')}")
优势:
autoclips/ ├── main.py # FastAPI主应用 ├── config.py # 配置管理 ├── logger.py # 日志配置 ├── models.py # 数据模型 ├── ai_analyzer.py # AI分析引擎 ├── tts_service.py # TTS服务 ├── storage_service.py # 存储服务 ├── creatomate_service.py # Creatomate集成 ├── video_generator.py # 视频生成器 ├── utils.py # 工具函数 ├── requirements.txt # 依赖列表 ├── .env.example # 环境变量示例 ├── .gitignore # Git忽略文件 ├── temp/ # 临时文件目录 ├── output/ # 输出文件目录 └── logs/ # 日志文件目录
DEEPSEEK_API_KEY
DEEPSEEK_BASE_URL
DEEPSEEK_MODEL
CREATOMATE_API_KEY
CREATOMATE_BASE_URL
支持三种存储类型:
阿里云OSS
OSS_ACCESS_KEY_ID
OSS_ACCESS_KEY_SECRET
OSS_BUCKET_NAME
OSS_ENDPOINT
AWS S3
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
AWS_BUCKET_NAME
AWS_REGION
本地存储
DEFAULT_VOICE
zh-CN-XiaoxiaoNeural
DEFAULT_RATE
+0%
DEFAULT_VOLUME
确保FFmpeg已安装并添加到系统PATH中。
检查API密钥是否正确配置,网络连接是否正常。
检查存储服务配置是否正确,权限是否足够。
可以增加超时时间或使用异步模式(wait_for_completion=false)。
wait_for_completion=false
MIT License
欢迎提交Issue和Pull Request!
如有问题,请提交Issue或联系开发者。
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802032778号
AutoClips - 自动化宣传视频生成系统
基于AI的自动化宣传视频生成服务,根据用户的自然语言描述和提供的视频/音频素材,自动生成专业的宣传视频。
功能特性
系统架构
技术栈
安装步骤
1. 克隆项目
2. 创建虚拟环境
3. 安装依赖
4. 安装系统依赖
需要安装FFmpeg(用于获取视频/音频信息):
5. 配置环境变量
复制示例配置文件并填写你的API密钥:
编辑
.env文件,配置以下参数:6. 创建必要的目录
运行服务
启动API服务
或使用uvicorn:
服务将在
http://localhost:8000启动。访问API文档
启动服务后,访问以下地址查看API文档:
API使用示例
1. 生成宣传视频(文件上传)
2. 生成宣传视频(URL方式)⭐ 新功能
3. 查询任务状态
4. 取消任务
5. 获取可用语音列表
Python客户端示例
使用URL生成视频(推荐)⭐
优势:
项目结构
核心流程
配置说明
DeepSeek配置
DEEPSEEK_API_KEY: DeepSeek API密钥DEEPSEEK_BASE_URL: API基础URLDEEPSEEK_MODEL: 使用的模型名称Creatomate配置
CREATOMATE_API_KEY: Creatomate API密钥CREATOMATE_BASE_URL: API基础URL存储配置
支持三种存储类型:
阿里云OSS
OSS_ACCESS_KEY_IDOSS_ACCESS_KEY_SECRETOSS_BUCKET_NAMEOSS_ENDPOINTAWS S3
AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYAWS_BUCKET_NAMEAWS_REGION本地存储
TTS配置
DEFAULT_VOICE: 默认语音(如zh-CN-XiaoxiaoNeural)DEFAULT_RATE: 默认语速(如+0%)DEFAULT_VOLUME: 默认音量(如+0%)常见问题
1. FFmpeg未找到
确保FFmpeg已安装并添加到系统PATH中。
2. API调用失败
检查API密钥是否正确配置,网络连接是否正常。
3. 文件上传失败
检查存储服务配置是否正确,权限是否足够。
4. 视频渲染超时
可以增加超时时间或使用异步模式(
wait_for_completion=false)。性能优化
wait_for_completion=false安全建议
.env文件提交到版本控制许可证
MIT License
贡献
欢迎提交Issue和Pull Request!
联系方式
如有问题,请提交Issue或联系开发者。