PPT 逐元素讲解
16:9 把现成的 .pptx 变成带解说的视频。每页一个场景,页面元素按「拍」随旁白逐个出现,画面从原稿一比一还原,旁白优先用 PPT 备注页。
· Markdown
直接这样说
- 用 ppt-to-video 把这份 PPT 做成讲解视频,旁白用备注页
- 把这个 pptx 的第 3 到第 6 页做成一段口播视频
什么时候选它
你已经有一份 PPT:课程讲义、方案汇报、培训材料,想把它变成可以发出去的讲解视频,而不是重新做一遍。
画面不用你描述:形状、文本、图标、坐标、配色都由渲染管线直接从 .pptx 里抽取并还原。你只需要提供文件,确认旁白。
规格
| 项 | 值 |
|---|---|
| 画幅 | 16:9(只有横屏,1920×1080) |
| 时长 | 5–600 秒 |
| 内容语言 | 中文、英文 |
| 场景结构 | 一页 PPT = 一个场景,最多 120 个场景 |
| 旁白 | 需要(音频);每一拍对齐一句旁白 |
| 字幕 | 默认开 |
| 需要的素材 | .pptx 源文件 URL + 旁白音频 |
旁白从哪来
- 优先用 PPT 的备注页。它本来就是「说给人听的话」,agent 只做重排和口语化:切成与拍数对齐的句子,去掉「如图所示」「(翻页)」这类现场指代,不加原稿没有的事实。
- 备注为空时,从页面正文扩写。原则是讲要点背后的意思,不是把屏幕上的字再念一遍。这部分旁白是 agent 写的,会请你过目。
每页怎么动
抽取时会为每一页判定一个档位,判定理由写在 slide.modeReason:
- static:整页第 0 帧就位,不做逐元素动画,和原稿一致。判不出结构时就用它。
- spotlight:整页就位,随旁白提亮当前块、压暗其余,只改透明度不动位置。
- sequenced:按块逐个入场。
原则是「宁愿不动,也不能错」。元素只增不减、已有内容永不移动。
关键参数
customPayload.slide(元素清单与时间轴)由管线自动填入,不需要也不应该手写。你能调的是下面这些。
| 参数 | 位置 | 类型 / 取值 | 默认 | 说明 |
|---|---|---|---|---|
source_document_url | gen-script 参数(CLI --source-document-url) | .pptx 的 URL | — | 必传,与给 doc-parse 的是同一个 URL。管线据此抽取每页画面 |
scenes | gen-script 参数(CLI --scenes) | 整数,上限 120 | — | 传 PPT 页数 |
slideIndex | customPayload.slideIndex | 整数,1-based | 按场景顺序取第 i 页 | 只讲其中几页、跳过某几页时才写 |
mode | customPayload.mode | static / spotlight / sequenced | 用抽取判定 | 只能把判定往下压(sequenced → spotlight → static),不能往上抬 |
trustMeMode | customPayload.trustMeMode | 布尔 | false | 允许 mode 越过判定往上抬。只在人工核对过这一页重绘无误时用 |
defaultAnim | customPayload.defaultAnim | fade / up / down / left / right / scale / grow-x / grow-y | up | 全局默认入场动画。细长条自动走 grow-x / grow-y |
revealDurationSec | customPayload.revealDurationSec | 秒 | 0.45 | 单个元素的入场动画时长 |
minBeatHoldSec | customPayload.minBeatHoldSec | 秒 | 1.2 | 每拍最短停留,只影响推荐时长,不会把后面的拍往后推 |
tailPadSec | customPayload.tailPadSec | 秒 | 0.6 | 旁白结束后的静音尾巴 |
showSubtitles | customPayload.showSubtitles | 布尔 | true | 底部字幕条 |
fontFit | customPayload.fontFit | shrink / overflow | shrink | 单行文字超框时等比缩字号塞回去,还是任其溢出。渲染环境装了原稿字体时应切 overflow |
slide.beats[].atSec | customPayload.slide.beats | 秒 | 对齐第 i 句旁白起点 | 显式起始秒,一般不用写 |
什么时候别选它
常见坑
- 没传源文件 URL。漏了
--source-document-url,要到写完全部旁白、准备素材时才会被整份拒绝。 - 场景数没对上页数。用 doc-parse 摘要里的页数传
--scenes,生成后以 DSL 里实际的场景数为准。 - 旁白句数和拍数对不上。句数少于拍数时,剩下的拍会在末尾均分,能跑但节奏会散。
- 自己给 mode 往上抬。不写
trustMeMode不生效;写了又没人工核对,可能出现画面错位。 - 时长自己拍一个数。每页时长要同时满足「旁白说得完」和「每拍看得清」,让管线按估算器排。
- 旁白把屏幕上的字原样念一遍。画面文字、字幕、语音三重重复,观感很差。
- 备注里混着出处、TODO、提醒。这些不是讲稿,确认旁白时留意是否已被剔掉。
下一步
- 文档抽取(doc-parse) — 把一份 .pptx 拆成结构化数据——每页的标题、正文、备注页讲稿,以及一比一还原原稿版式的形状/坐标/配色和动画分拍。
- 脚本生成(gen-script) — 输入一个主题,产出结构化的视频 DSL:分几个场景、每个场景讲什么、要哪些素材。这是整条流水线的第一步,出稿后会停下来等你确认。
- 配音(gen-voice) — 文字转语音(Minimax)。返回可直接播放的音频 URL,JSON 输出时附带音频时长和字幕时间轴,不需要下载。
- 素材准备(prepare-video-assets) — 拿一份 DSL,把里面引用的每张图、每段音频、每个视频和数字人都真的生成出来,落成一个渲染计划,返回 job_id。
- 视频渲染(render-video) — 按 job_id 取出渲染计划,交给 Remotion 渲染引擎出片并上传。它不生成任何素材——素材必须已经准备好并经你确认。
- 知识看板 — 16:9 横屏概念讲解模板。26 种内置幻灯片版式、7 种背景预设,卡片随旁白逐项点亮,适合科普、白板风格的讲解。
- 黑板粉笔 — 16:9 横屏黑板课程模板。木框 + 墨绿板面 + 粉笔字,版式与知识看板完全同名,多了课程名页眉、章节号和标题两色分词,适合成系列的课程讲解。