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