项目简介
这是一个基于火山引擎即梦(Jimeng)CV API 的数字人视频生成 Streamlit 演示项目。它实现了图片与音频驱动的数字人生成流程,集成了主体检测、Mask 选择、Prompt 控制、任务轮询及结果下载等功能,适合内部测试、技术验证或作为二次开发的基础工程。
核心功能
- AK/SK 在线配置:支持在页面直接输入 Access Key 和 Secret Key,无需硬编码,方便多账号切换。
- 文件上传处理:支持 JPG/PNG 人物图像及 MP3/WAV 驱动音频的本地上传。
- 智能主体检测:调用目标检测接口自动识别图片中的多个主体,并返回对应的 Mask。
- Mask 裁剪预览:根据 Mask 自动裁剪主体区域,按最长边缩放统一尺寸进行可视化预览。
- Prompt 驱动控制:支持输入文本 Prompt,用于调节表情、稳定性、真实感及风格。
- 任务状态轮询:提交生成任务后自动轮询状态,完成后提供在线播放与 MP4 下载。
环境准备
基础要求
- Python ≥ 3.9(推荐 3.10)
- 操作系统:Linux / macOS / Windows
- 关键依赖:需要一个可公网访问的静态文件服务,因为火山引擎接口要求图片和音频 URL 必须能被公网直接访问。
安装依赖
建议创建虚拟环境以隔离依赖:
python -m venv venv
source venv/bin/activate
Windows 环境下激活命令为:
venv\Scripts\activate
安装所需库:
pip install streamlit requests pillow numpy
或者使用 requirements.txt:
pip install -r requirements.txt
目录结构
确保项目包含以下结构,其中 res 目录需手动创建用于保存生成的视频:
.
├── app.py # Streamlit 主程序
├── res/ # 视频结果保存目录
├── requirements.txt # Python 依赖
└── README.md
创建目录命令:
mkdir -p res
静态文件服务配置
由于 API 需要公网 URL,你需要将上传的图片/音频通过 HTTP 暴露出去。本地测试时,可以使用 Python 内置服务或云隧道工具。
本地 HTTP 服务
设置上传目录和公开访问地址:
UPLOAD_DIR = "/home/yourname/data/uploads"
PUBLIC_BASE_URL = "http://你的 IP:8000"
启动服务:
/home/yourname/data/uploads
python -m http.server 8000

