这是一个基于Flask的视频音频推理服务,可以接收视频URL和音频URL,下载内容,在最佳GPU上执行Heygem数字人推理,并返回处理后的视频。
- 接收视频URL和音频URL,下载到本地
- 智能分配GPU资源(自动选择负载最低的GPU)
- 管理任务进度和并发
- 提供REST API接口进行任务创建和管理
- 自动清理临时文件
- 支持任务状态查询和结果下载
pip install -r requirements.txt
修改app.py中的配置参数以适应您的环境。以下是可配置的参数:
MAX_CONCURRENT_TASKS
: 最大并发任务数(默认:16)DOWNLOAD_DIR
: 下载文件的目录()OUTPUT_DIR
: 处理后文件的输出目录HEYGEM_PATH
: 如果使用heygem进行推理,设置heygem的路径
注意: 如果使用其他数字人推理代码,修改cmd
中的命令即可
python app.py
POST /api/tasks
请求体:
{
"video_url": "https://example.com/video.mp4",
"audio_url": "https://example.com/audio.mp3"
}
响应:
{
"task_id": "1234-5678-90ab-cdef",
"status": "pending",
"message": "Task created successfully"
}
GET /api/tasks/{task_id}
响应:
{
"task_id": "1234-5678-90ab-cdef",
"status": "processing",
"progress": 45.0,
"created_at": 1622547840.123456,
"started_at": 1622547845.123456,
"completed_at": null,
"result_path": null,
"error_message": null,
"gpu_id": 0
}
GET /api/tasks
POST /api/tasks/{task_id}/cancel
GET /api/output/{task_id}
GET /api/gpu/stats
GET /health
# 启动服务
python app.py
# 提交任务 (使用curl)
curl -X POST http://localhost:5000/api/tasks \
-H "Content-Type: application/json" \
-d '{"video_url": "https://example.com/video.mp4", "audio_url": "https://example.com/audio.mp3"}'
# 查询任务状态
curl -X GET http://localhost:5000/api/tasks/YOUR_TASK_ID
该系统由以下模块组成:
- app.py: 主Flask应用和API路由
- gpu_manager.py: GPU资源管理和监控
- task_manager.py: 任务队列和生命周期管理
- downloader.py: 处理文件下载和清理
- 确保系统已安装NVIDIA驱动和CUDA工具包
- 对于生产环境,建议配置适当的认证和授权机制
- 可能需要根据您的推理脚本调整代码中的命令行参数