Chanjing Video Compose
When to Use This Skill
当用户要做这些事时使用本 Skill:
- 创建数字人视频合成任务
- 用文本驱动数字人出镜
- 用本地音频驱动数字人视频
- 查询公共数字人或定制数字人形象
- 轮询视频合成结果
- 在用户明确要求时下载最终视频到本地
如果需求更接近“上传一段真人视频做对口型驱动”,优先使用 chanjing-avatar,不要混用。
Preconditions
本 Skill 自己包含本地配置和鉴权流程,不依赖其他 skill 的运行时脚本。
本 Skill 使用:
- 配置文件:
~/.chanjing/credentials.json - 若设置环境变量
CHANJING_CONFIG_DIR:使用$CHANJING_CONFIG_DIR/credentials.json - API 基础地址固定:
https://open-api.chanjing.cc
当本地缺少 AK/SK 或 AK/SK 无效时,脚本默认返回登录引导信息,不自动打开浏览器。
如需本地自动开页,可显式设置:CHANJING_AUTO_OPEN_LOGIN=1。
https://www.chanjing.cc/openapi/login
Standard Workflow
- 先让用户明确选择数字人来源:
common(公共数字人)或customised(定制数字人) - 调用
list_figures --source <common|customised>(建议--json,公共源可加大--page-size或翻页)获取可用形象;在候选内对比name、各figure的type与分辨率、audio_man_id、audio_name(若有)与任务人设后再选定person.id。禁止未比较就默认列表最前几项。 - 如果选择公共数字人,还要再确认
figure_type(与所选figures[].type一致),例如sit_body/whole_body/circle_view。无用户特殊要求时,默认优先年轻、有活力的形象(名称/audio_name偏青年、学生、元气等);题材需要成熟或中老年气质时再改选。 - 若使用文本驱动,确定
audio_man_id - 在创建任务前,必须明确询问用户字幕偏好:
show(保留字幕)或hide(隐藏字幕) - 如果用户选择
show但没有提出自定义样式或位置需求,直接使用官方文档推荐默认值;只有在用户明确想调整字幕位置或样式时,才继续追问subtitle_config参数 - 若用户要定制字幕位置,说明坐标以左上角为原点,再补充
subtitle_config相关参数 - 若使用本地音频或背景图,先调用
upload_file获取file_id - 调用
create_task创建视频合成任务,得到video_id - 调用
poll_task轮询直到成功,得到video_url - 只有在用户明确要求保存到本地时,才调用
download_result
Covered APIs
本 Skill 当前覆盖:
GET /open/v1/list_common_dpPOST /open/v1/list_customised_personPOST /open/v1/create_videoGET /open/v1/videoGET /open/v1/common/create_upload_urlGET /open/v1/common/file_detail
Scripts
脚本目录:
scripts/
| 脚本 | 说明 |
|---|---|
chanjing-config |
写入/查看本地 app_id 与 secret_key,并清理旧 token 缓存 |
chanjing-get-token |
从本地凭证获取有效 access_token(必要时自动刷新) |
_auth.py |
读取凭证、获取或刷新 access_token |
list_figures |
按 `--source common |
upload_file |
上传音频或背景素材,轮询到文件可用后输出 file_id |
create_task |
创建视频合成任务;使用公共数字人时可补充 --figure-type ...,字幕支持 `--subtitle show |
poll_task |
轮询视频详情直到完成,默认输出 video_url |
download_result |
下载最终视频到 outputs/video-compose/ |
Usage Examples
示例 1:公共数字人文本驱动
# 1. 先列公共数字人
python scripts/list_figures --source common
# 2. 用公共数字人创建文本驱动视频
VIDEO_ID=$(python scripts/create_task \
--person-id "C-ef91f3a6db3144ffb5d6c581ff13c7ec" \
--figure-type "sit_body" \
--audio-man "C-0ae461135d8a4eb2b59c853162ea9848" \
--subtitle "show" \
--subtitle-x 31 \
--subtitle-y 1521 \
--subtitle-width 1000 \
--subtitle-height 200 \
--subtitle-font-size 64 \
--subtitle-stroke-width 7 \
--text "你好,这是一个蝉镜视频合成测试。")
# 3. 轮询到完成,拿到 video_url
python scripts/poll_task --id "$VIDEO_ID"
示例 2:定制数字人上传本地音频驱动
python scripts/list_figures --source customised
AUDIO_FILE_ID=$(python scripts/upload_file \
--service make_video_audio \
--file ./input.wav)
VIDEO_ID=$(python scripts/create_task \
--person-id "C-ef91f3a6db3144ffb5d6c581ff13c7ec" \
--subtitle "hide" \
--audio-file-id "$AUDIO_FILE_ID")
python scripts/poll_task --id "$VIDEO_ID"
示例 3:显式下载最终视频
python scripts/download_result \
--url "https://example.com/output.mp4"
Download Rule
下载是显式动作,不是默认动作:
poll_task成功后应先返回video_url- 不要自动下载结果文件
- 只有当用户明确表达“下载到本地”“保存到 outputs”“帮我落盘”时,才执行
download_result
Figure Selection Rule
选择数字人时遵循这条规则:
- 如果用户要用平台已有人物库,先走公共数字人:
list_figures --source common - 如果用户要用自己训练或上传生成的人物,先走定制数字人:
list_figures --source customised - 使用公共数字人创建视频时,可按所选形态传
--figure-type <type> - 使用定制数字人时,不需要
figure_type
Subtitle Rule
字幕遵循这条规则:
- 不要默认假设用户要字幕或不要字幕
- 创建任务前,必须先明确询问用户选择:
show或hide - 若由
chanjing-one-click-video-creation的run_render.py调用create_task,以当次workflow.json根级subtitle_required为准(默认 false →--subtitle hide;true →show及推荐样式),无需为该一键成片路径再单独追问字幕开关,除非用户在需求里明确要求改字幕策略 - 用户选择保留字幕时,调用
create_task --subtitle show - 若用户未指定字幕位置或样式,直接使用官方推荐默认值;
create_task在未传--subtitle-color时默认白字color=#FFFFFF:1080p 为x=31 y=1521 width=1000 height=200 font_size=64 stroke_width=7 asr_type=0;4K 画布为x=80 y=2840 width=2000 height=1000 font_size=150 stroke_width=7 asr_type=0(两组均含color=#FFFFFF) - 用户选择隐藏字幕时,调用
create_task --subtitle hide或兼容旧用法--hide-subtitle - 若用户要求调整字幕位置或样式,可继续传
--subtitle-x/--subtitle-y/--subtitle-width/--subtitle-height/--subtitle-font-size/--subtitle-color/--subtitle-stroke-color/--subtitle-stroke-width/--subtitle-font-id/--subtitle-asr-type - 坐标基于左上角原点;字幕区域不能超出
screen_width/screen_height - 如果用户只说“要字幕”但没指定位置,不必再追问具体数值;除非用户明确要调位置,否则直接走默认值
Output Convention
默认本地输出目录:
outputs/video-compose/
Additional Resources
更多接口细节见:
reference.mdexamples.md
