tencent cloud

媒体处理

文档生视频

下载
聚焦模式
字号
最后更新时间: 2026-09-11 17:19:59

功能介绍

文档生视频(Doc to Video) 可将一份静态文档转化为带讲解的成片视频。您只需提供 PDF / PPTX / DOCX / 图片 等文档,系统即可结合大语言模型理解文档内容,自动完成分镜编排、画面生成、AI 配音与字幕,输出一条完整的讲解视频。
适用场景:短视频知识播报、在线教育课件、产品宣传片、企业培训与知识科普。
核心能力
能力
说明
多文档输入
单次最多 3 个文档,支持 pdf / pptx / docx / png / jpg。
多语言输出
支持中文、英文、日语、韩语、俄语、法语、西班牙语、德语8种语言。
多画幅
支持 16:9、9:16、1:1 三种宽高比。
AI 配音
可选开启语音合成,支持指定音色(含克隆音色 / 设计音色)。
字幕生成
可选开启字幕。
PPTX 保真复刻
尽可能复刻输入 PPTX 的原始版式与内容。
背景与水印
支持自定义背景图、四角位置水印。
分阶段确认
支持在大纲、配音动效两个阶段介入审核,可确认推进或按提示词重新生成。
结果持久化
支持将成片保存至您自有的 COS 存储桶。

两种生成模式

文档生视频提供两种生成模式,由创建任务时的 Mode 参数决定。这是接入前需要最先确定的设计选择,因为它决定了您的调用链路是「一次提交」还是「多轮交互」。
模式
取值
调用链路
适用场景
端到端直接生成
auto
创建任务 → 轮询查询 → 拿到成片
批量生产、无人值守的自动化管线。
确认后生成
stage
创建任务 → 阶段产物审核 → 确认 / 重新生成 → 拿到成片
对成片质量要求高、需人工把关的场景。
stage 模式将生成过程拆为两个可介入的阶段:
阶段
阶段产物
确认(confirm)后的动作
重新生成(regenerate)的作用
STAGE_1
视频大纲、分镜结构。
确认大纲,继续生成配音、动画效果、字幕。
重新生成大纲。
STAGE_2
配音、动画效果、字幕。
确认后合成最终成片。
重新生成配音、动画效果、字幕。
说明:
选择建议:先用 auto 模式跑通链路验证效果,再针对需要人工把关的业务切到 stage 模式。stage 模式下每次重新生成都会重新消耗模型算力,请结合计费预期评估重试次数。

前提条件

在使用本功能前,您需完成以下前置操作:
腾讯云账号注册/登录、开通 MPS 产品、完成服务角色授权
若您使用腾讯云子账号,还需要保证账号有足够权限使用 MPS 产品。
具体指引请参考 快速入门。账号授权问题可参考 账号授权 文档。

计费说明

本服务采用按量计费,计费项分为必选与可选两类。

必选计费项(每次任务必然产生)

计费项
刊例价
计费口径
视频生成时长
0.0583 USD/秒
按实际生成视频的时长计费。
LLM 理解消耗 Token
6.5 USD/百万Token
按大模型理解文档时实际消耗的 Token 数计费。

可选计费项

计费项
刊例价
触发条件
AI 配音
0.0746 USD/分钟
EnableTTS = true 时产生。
克隆音色 / 设计音色
1.5 USD/音色
仅使用克隆音色或设计音色时产生。

第一步:创建文档生视频任务

调用 CreateDocToVideoTask 接口,提交文档并发起生成任务。

核心参数

参数
类型
必选
说明
Input.FileUrl
Array of String
用于生成视频的文档链接。支持 pdf / pptx / docx / png / jpg;最多 3 个文档;单文档 ≤ 10MB;单文档 ≤ 100 页。链接须公网可访问。
Input.Prompt
String
生成视频的提示词,长度上限 2000 字符。
Input.ModelName
String
模型名称。默认值:Wand
Input.ModelVersion
String
模型版本号。默认值:1.0

生成模式参数

参数
类型
必选
说明
Input.Mode
String
生成模式。auto:端到端直接生成;stage:确认后生成,可在 STAGE_1STAGE_2 两阶段介入审核。

视频规格参数

参数
类型
必选
说明
Input.Ratio
String
宽高比。可选 16:9 / 9:16 / 1:1。默认值:16:9
Input.Language
String
生成语言。可选 zh(中文)/ en(英文)/ ja(日语)/ ko(韩语)/ ru(俄语)/ fr(法语)/ es(西班牙语)/ de(德语)。默认值:zh
Input.ReferenceDuration
Integer
时长参考值,单位秒,取值范围 [15, 1200]。非精确时长,仅供大模型参考,实际时长由模型根据文档内容与提示词决定。

配音与字幕参数

参数
类型
必选
说明
Input.EnableTTS
Boolean
是否开启 AI 配音。默认值:false。开启后产生 AI 配音费用。
Input.VoiceId
String
音色 ID,仅开启 AI 配音时有效。不填使用默认音色。可通过控制台音色库或查询音色接口获取。
Input.EnableCaption
Boolean
是否开启字幕生成。默认值:false

版式与画面参数

参数
类型
必选
说明
Input.PPTXFidelity
Boolean
是否开启 PPTX 保真复刻模式。默认值:false。开启后会尽可能复刻输入 PPTX 的内容与版式(暂不支持复刻动画效果,也无法做到完美复刻)。开启时输入文档中须至少含一个 PPTX;若有多个,仅对首个 PPTX 生效。
Input.Background.ImageUrl
String
背景图片 URL。仅在未开启保真复刻版式时生效。
Input.Watermark.ImageUrl
String
水印图片 URL。仅在未开启保真复刻版式时生效。
Input.Watermark.Position
String
水印位置。可选 top-left / top-right / bottom-left / bottom-right

存储参数(CosInfo)

参数
类型
必选
说明
CosInfo.CosBucketRegion
String
COS 桶地域。示例值:ap-guangzhou
CosInfo.CosBucketName
String
COS 桶名称。示例值:mps-guangzhou-1-1326534690
CosInfo.CosBucketPath
String
COS 桶路径。示例值:/doc2video/output

发起示例(auto 模式)

{
"Input": {
"FileUrl": [
"https://example-1303333058.cos.ap-guangzhou.myqcloud.com/doc/sample.pdf",
"https://example-1303333058.cos.ap-guangzhou.myqcloud.com/doc/slides.pptx"
],
"Prompt": "请根据这两份文档,生成一个 2 分钟左右的产品介绍视频,风格专业简洁,面向企业客户。",
"ModelName": "Wand",
"ModelVersion": "1.0",
"Mode": "auto",
"Ratio": "16:9",
"Language": "zh",
"ReferenceDuration": 120,
"EnableTTS": true,
"VoiceId": "v1_shUQBcs3N6VrPd9RMTf50H7M5kxeZ1VHIiWGDzq5Q9pE0HoEQ959hpulWHGFZSp3v4w=",
"EnableCaption": true,
"Watermark": {
"ImageUrl": "https://example-1303333058.cos.ap-guangzhou.myqcloud.com/logo.png",
"Position": "bottom-right"
}
},
"CosInfo": {
"CosBucketRegion": "ap-guangzhou",
"CosBucketName": "mps-guangzhou-1-1326534690",
"CosBucketPath": "/doc2video/output"
}
}

发起示例(stage 模式 + PPTX 保真复刻)

{
"Input": {
"FileUrl": [
"https://example-1303333058.cos.ap-guangzhou.myqcloud.com/doc/course.pptx"
],
"Prompt": "根据这份课件,生成一个教学讲解视频,逐页讲解要点。",
"ModelName": "Wand",
"ModelVersion": "1.0",
"Mode": "stage",
"PPTXFidelity": true,
"Ratio": "16:9",
"Language": "zh",
"EnableTTS": true,
"EnableCaption": true
},
"CosInfo": {
"CosBucketRegion": "ap-guangzhou",
"CosBucketName": "mps-guangzhou-1-1326534690",
"CosBucketPath": "/doc2video/output"
}
}

输出参数

参数
类型
说明
TaskId
String
任务 ID。示例值:e084efaa-d25************6b85e473c0e5
RequestId
String
唯一请求 ID,定位问题时需提供。
响应示例
{
"Response": {
"TaskId": "e084efaa-d25************6b85e473c0e5",
"RequestId": "a2644899-acbf-4973-b8ea-1a93772be6f7"
}
}

错误码

错误码
描述
FailedOperation.CreateAIGCTaskFailed
创建 AIGC 任务失败。
FailedOperation.UserArrears
用户状态已停服,请检查账户余额。
InvalidParameter
参数错误。
LimitExceeded.CreateTask
无法创建任务,当前正在执行的任务数达到上限。

第二步:查询任务结果

调用 DescribeAigcTaskStatus 接口,传入任务 ID 查询执行状态与结果。本接口为通用 AIGC 任务查询接口,文档生视频任务的 TaskTypeDocToVideo
输入参数
参数
类型
必选
说明
TaskId
String
任务 ID。示例值:c50f6094-3b56-a1fa-e616-0eec386bfc36
输出参数
参数
类型
说明
TaskId
String
任务 ID。
TaskStatus
String
任务状态,枚举值见下表。
OutputUrl
String
输出视频地址。仅任务成功完成时有值,其余状态可能返回 null
CreateTime
String
任务创建时间。示例值:2026-06-01 20:40:50
ScheduledTime
String
任务调度时间。
FinishedTime
String
任务完成时间。
TaskResultCode
Integer
任务错误码,任务失败时用于定位原因。
TaskResultMsg
String
任务错误信息。
RequestBody
String
创建任务时的原始请求体,用于核对参数。
TaskType
String
任务类型,文档生视频为 DocToVideo
Stage
String
任务子状态,标识当前所处阶段及该阶段的进展。示例值:STAGE_2_FINISHED
TaskInfo
String
任务其他信息,JSON 字符串。其中 current_stage 标识当前阶段。示例值:{"current_stage": "STAGE_1"}
RequestId
String
唯一请求 ID。
TaskStatus 枚举值
枚举值
含义
处理建议
PENDING
任务等待调度
排队中,继续轮询。
RUNNING
任务运行中
继续轮询。
FINISHED
任务执行成功
通过 OutputUrl 获取结果。
STOP
任务被中止
检查是否被手动或系统中止。
FAILED
任务失败
查看 TaskResultCodeTaskResultMsg
TIMEOUT
任务超时
检查文档体量与提示词复杂度后重试。

阶段状态字段(stage 模式必读)

StageTaskInfostage 模式下驱动交互流程的关键字段。TaskStatus 描述的是整个任务的宏观状态,而stage 模式下,任务会在某个阶段产物生成完毕后停下来等待您确认——此时您需要依靠 Stage / TaskInfo 判断「当前停在哪个阶段、该阶段是否已经产出完毕」,进而决定下一步是调用 confirm 推进还是 regenerate 重来。
字段
用途
Stage
任务子状态,命名格式为「阶段_进展」,如 STAGE_2_FINISHED 表示第二阶段产物已生成完毕。
TaskInfo
JSON 字符串,其中 current_stage 给出当前阶段,如 {"current_stage": "STAGE_1"}
典型判断逻辑:轮询查询接口,当 Stage 显示某阶段已完成时,取回该阶段产物交由人工审核,再带上对应的 StageSTAGE_1STAGE_2)调用 ModifyDocToVideoTaskStatus
说明:
TaskInfo 是 String 类型而非结构化对象,解析时需要先做一次 JSON 反序列化,并做好字段缺失的兜底。
Stage 的完整枚举值目前未在接口文档中列出(文档仅给出示例值 STAGE_2_FINISHED),接入前建议向研发确认全量取值,避免遗漏中间态。
响应示例(任务成功)
{
"Response": {
"TaskId": "c50f6094-3b56-a1fa-e616-0eec386bfc36",
"TaskStatus": "FINISHED",
"OutputUrl": "https://aigc-redraw-output-1326893053.cos.ap-guangzhou.myqcloud.com/aigc-c50f6094-3b56-a1fa-e616-0eec386bfc36-202606012044-0.mp4",
"CreateTime": "2026-06-01 20:40:50",
"ScheduledTime": "2026-06-01 20:40:51",
"FinishedTime": "2026-06-01 20:44:32",
"TaskResultCode": 0,
"TaskResultMsg": "",
"TaskType": "DocToVideo",
"Stage": "STAGE_2_FINISHED",
"TaskInfo": "{\\"current_stage\\": \\"STAGE_2\\"}",
"RequestId": "9ee02d10-a534-4a2d-842a-c4d084bcfbde"
}
}
响应示例(stage 模式:大纲已产出,等待确认)
下例中 TaskStatus 仍为 RUNNING(整个任务尚未走完),但 Stage 已显示 STAGE_1_FINISHED,说明大纲阶段产物已就绪、正在等待您确认。此时不能只看 TaskStatus 就继续空轮询,而应取回大纲交由审核,再调用 ModifyDocToVideoTaskStatus 推进或重新生成。
{
"Response": {
"TaskId": "c50f6094-3b56-a1fa-e616-0eec386bfc36",
"TaskStatus": "RUNNING",
"OutputUrl": null,
"CreateTime": "2026-06-01 20:40:50",
"ScheduledTime": "2026-06-01 20:40:51",
"FinishedTime": "",
"TaskResultCode": 0,
"TaskResultMsg": "",
"TaskType": "DocToVideo",
"Stage": "STAGE_1_FINISHED",
"TaskInfo": "{\\"current_stage\\": \\"STAGE_1\\"}",
"RequestId": "9ee02d10-a534-4a2d-842a-c4d084bcfbde"
}
}
错误码
错误码
描述
FailedOperation.QueryAIGCTaskFailed
查询任务发生错误。
ResourceNotFound.TaskNotFound
任务不存在,请检查 TaskId 是否正确。
说明:
轮询建议:间隔5秒查询一次,并设置整体超时上限(建议10分钟以上,视文档体量调整)。请勿高频空转轮询。

第三步:确认与重新生成(stage 模式)

调用 ModifyDocToVideoTaskStatus 接口,对 stage 模式下的阶段产物进行确认推进重新生成。仅 Mode=stage 的任务需要用到本接口。
输入参数
参数
类型
必选
说明
Input.Action
String
修改动作。confirm:确认已完成阶段并推进下一阶段;regenerate:重新生成指定阶段。
Input.Stage
String
目标阶段。STAGE_1:大纲阶段;STAGE_2:配音 / 动画 / 字幕阶段。
Input.SourceTaskId
String
需要修改的目标任务 ID。
Input.Regenerate
DocToVideoRegenerateInput
重新生成参数,仅 Action=regenerate 时必填。
Action 与 Stage 的组合语义
Stage
Action=confirm
Action=regenerate
STAGE_1
确认大纲,继续生成后续配音、动画效果、字幕。
重新生成大纲。
STAGE_2
确认配音、动画效果、字幕,生成最终成片。
重新生成配音、动画效果、字幕。
重新生成参数(Regenerate)
参数
类型
必选
说明
Regenerate.Scope
String
重新生成范围。full:该阶段全量重新生成(如调整整体场景数量);scenes:按场景局部重新生成(如修改某个场景的具体内容)。
Regenerate.Prompt
String
重新生成时的提示词,用于描述希望如何调整。
Regenerate.SceneIds
Array of String
目标场景 ID 数组。仅 Scope=scenes 时必填;不可重复,单次最多5个。
说明:
Scope 的选择取决于修改的粒度:改变整体结构(合并页、增删场景、压缩节奏)用 full;只想改某几个场景的文案或画面而保留其余部分,用 scenes 并指定 SceneIds,这样可以避免已经满意的场景被重新生成。
输出参数
参数
类型
说明
TaskId
String
任务 ID,与传入的 SourceTaskId 一致。示例值:996190db-c567-d47b-1641-6216c7457036
RequestId
String
唯一请求 ID。
说明:
任务 ID 全程不变stage 模式下,从创建任务到最终成片,整个流程始终使用同一个任务 ID。每次 confirm / regenerate 传入的 SourceTaskId,都是创建任务时返回的那个 TaskId;接口返回的 TaskId 也是同一个。业务侧只需保存这一个 ID,用它贯穿后续所有的状态查询与修改操作。

示例:全量重新生成大纲

{
"Input": {
"Action": "regenerate",
"Stage": "STAGE_1",
"SourceTaskId": "996190db-c567-d47b-1641-6216c7457036",
"Regenerate": {
"Scope": "full",
"Prompt": "压缩一下,第一页和第二页的内容合并到一起"
}
}
}

示例:局部重新生成指定场景

{
"Input": {
"Action": "regenerate",
"Stage": "STAGE_1",
"SourceTaskId": "996190db-c567-d47b-1641-6216c7457036",
"Regenerate": {
"Scope": "scenes",
"Prompt": "这一页的讲解太笼统,请补充具体的数据说明",
"SceneIds": [
"scene-3"
]
}
}
}

示例:确认阶段并推进

{
"Input": {
"Action": "confirm",
"Stage": "STAGE_1",
"SourceTaskId": "996190db-c567-d47b-1641-6216c7457036"
}
}
响应示例
{
"Response": {
"TaskId": "996190db-c567-d47b-1641-6216c7457036",
"RequestId": "3e8e036a-0aae-4ad6-b321-dc91eb5f7261"
}
}

完整调用流程

流程一:auto 模式(端到端)

1. CreateDocToVideoTask(Mode=auto)
↓ 返回 TaskId
2. DescribeAigcTaskStatus(轮询,间隔 5s)
TaskStatus=FINISHED
3. 从 OutputUrl 下载 / 转存成片

流程二:stage 模式(分阶段确认)

1. CreateDocToVideoTask(Mode=stage)
↓ 返回 TaskId —— 全流程只用这一个 ID
2. DescribeAigcTaskStatus(TaskId) 轮询
↓ 直到 Stage 显示 STAGE_1 阶段已完成 → 大纲产出
3. 审核大纲
├─ 不满意 → ModifyDocToVideoTaskStatus
(SourceTaskId=TaskId, Action=regenerate, Stage=STAGE_1, Regenerate={...})
│ ↓ 回到步骤 2 继续轮询同一个 TaskId
└─ 满意 → ModifyDocToVideoTaskStatus
(SourceTaskId=TaskId, Action=confirm, Stage=STAGE_1)
4. DescribeAigcTaskStatus(TaskId) 轮询
↓ 直到 Stage 显示 STAGE_2 阶段已完成 → 配音 / 动效 / 字幕产出
5. 审核阶段产物
├─ 不满意 → ModifyDocToVideoTaskStatus
(SourceTaskId=TaskId, Action=regenerate, Stage=STAGE_2, Regenerate={...})
│ ↓ 回到步骤 4 继续轮询同一个 TaskId
└─ 满意 → ModifyDocToVideoTaskStatus
(SourceTaskId=TaskId, Action=confirm, Stage=STAGE_2)
↓ 开始合成最终成片
6. DescribeAigcTaskStatus(TaskId) 轮询至 TaskStatus=FINISHED
7. 从 OutputUrl 下载 / 转存成片
接入要点
判断阶段进展要看 Stage / TaskInfo,而不是 TaskStatus stage 模式下任务在等待人工确认期间,TaskStatus 仍可能是 RUNNING,只有 Stage 才能告诉您当前停在哪个阶段、产物是否已就绪。
任务 ID 全程不变:创建任务拿到的 TaskId 会贯穿整个 stage 流程,每次 confirm / regenerate 都用它作为 SourceTaskId,状态查询也始终查这一个 ID。业务侧保存一个 ID 即可。
阶段产物的审核是人工环节,建议将任务状态落库、以异步架构承接,不要用同步阻塞轮询串起整条 stage 链路。
每次重新生成都会重新消耗模型算力并产生相应费用,建议在业务侧对单任务的重试次数设置上限。

使用限制与注意事项

文档要求
支持的格式:pdf、pptx、docx、png、jpg。
单次请求最多3个文档,多个文档的内容会被合并理解后生成视频。
单个文档大小 ≤ 10MB,页数 ≤ 100 页。
文档链接必须是公网可访问的 URL,建议上传至 COS 后获取访问链接,并确保链接在任务执行期间持续有效。
提示词
Prompt 上限2000字符。
建议在提示词中明确视频时长、风格、目标受众、讲解侧重点,生成效果会明显更贴合预期。
视频时长
ReferenceDuration 是参考值(15~1200 秒),不是精确时长;实际时长由模型根据文档内容与提示词决定。
计费按实际生成时长计算。
结果存储
不填 CosInfo 时结果存储在平台默认地址,该地址有时效限制。
生产环境请填写 CosInfo 持久化到自有 COS 桶,并在拿到 OutputUrl 后尽快下载或转存。
并发与频率
接口请求频率限制:20次/秒。
同时执行的任务数上限为 8 个,超限时返回 LimitExceeded.CreateTask,请控制并发并重试。
签名时间
请求时间戳与服务器时间相差不得超过 5 分钟,请确保本地系统时间与标准时间同步。

常见问题

文档链接无法访问怎么办?

FileUrl 必须是公网可访问的 URL。建议将文档上传至腾讯云 COS 并设置为公有读私有写,或使用预签名 URL,并确保链接在任务执行期间持续有效。

应该选 auto 还是 stage 模式?

批量生产、无人值守场景选 auto;成片需要人工把关、允许多轮调整的场景选 stage。建议先用 auto 跑通链路与效果验证,再按需切换。

stage 模式下任务卡在 RUNNING 不动,是卡住了吗?

不一定。stage 模式下任务产出阶段产物后会停下来等待您确认,此时 TaskStatus 仍为 RUNNING。请改看 Stage 字段:若已显示某阶段完成(如 STAGE_1_FINISHED),说明任务在等您调用 ModifyDocToVideoTaskStatus,而不是执行卡住。

TaskInfo 怎么解析?

TaskInfo 是 String 类型的 JSON 字符串(如 {"current_stage": "STAGE_1"}),需要先做一次 JSON 反序列化才能取用其中的 current_stage,并建议对字段缺失做兜底处理。

stage 模式下,每次确认或重新生成后任务 ID 会变吗?

不会。整个 stage 流程自始至终只有一个任务 ID:创建任务时返回的 TaskId,既是每次调用修改接口时要传的 SourceTaskId,也是修改接口返回的 TaskId,还是状态查询要用的 ID。业务侧保存这一个 ID 贯穿全程即可,不需要维护 ID 的更替。

Scope=fullScope=scenes 怎么选?

需要调整整体结构(合并页面、增删场景、压缩节奏)用 full;只想修改个别场景内容、保留其余已满意的场景,用 scenes 并通过 SceneIds 指定目标场景,单次最多5个。

开启 PPTX 保真复刻后,背景图和水印为什么没生效?

保真复刻模式下画面版式完全来自原始 PPTX,BackgroundWatermark 不生效。若需要自定义背景与水印,请关闭 PPTXFidelity

PPTX 保真复刻能完美还原原稿吗?

会尽可能复刻内容与版式,但无法做到完美复刻,且暂不支持复刻动画效果。若输入了多个 PPTX,仅对首个 PPTX 生效。

如何开启 AI 配音和字幕?

创建任务时设置 EnableTTS: true 开启配音,EnableCaption: true 开启字幕。配音可通过 VoiceId 指定音色,不填则使用默认音色。开启配音会产生额外费用(0.5元/分钟),使用克隆 / 设计音色会产生音色费用(9.9元/音色)。

任务一直处于 PENDING 怎么办?

排队时间取决于当前系统负载。若长时间(超过 10 分钟)仍为 PENDING,请检查账户是否欠费(FailedOperation.UserArrears),或联系技术支持。

如何排查任务失败原因?

查询任务详情时关注三个字段:TaskResultCode(错误码)、TaskResultMsg(错误信息)、RequestBody(创建任务时的原始请求,用于核对参数)。

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈