ZenStory AI

视频解说与剪辑

剪映草稿导出:视频解说导进剪映 / CapCut 继续精剪

Video Recap Skills · 更新于 2026-09-29

想在剪映或 CapCut 里继续改一条做好的解说,就把现有的 timeline.json 导成可编辑草稿,素材直接取自原片和逐段旁白。Video Recap Skills 的独立导出器把原片(带原声)、旁白和可选配乐分别放上轨道,字幕作为文本,媒体默认打包进 --out-dir 下的草稿文件夹,草稿搬走后仍能打开。导出只读取时间轴和它引用的媒体,ASR、视觉理解和 TTS 都不用重跑,已渲染的 MP4 也保持原样。下面的排练示例比较两种精剪,包括移动旁白时还要一起改什么。

所属项目 Video Recap Skills在 GitHub 查看源码

开始之前

  • 本地仓库或已安装的 skill 目录中有 skills/video-assemble/scripts/export_jianying.py,已准备 Python、ffprobe、生成完毕的 timeline.json,且媒体引用可访问。替换下方 /ABS/ 占位路径。尚无解说时间轴时,先从视频解说完整流程开始;分开的旁白轨和字幕轨来自这份时间轴,成片 MP4 里它们已经和画面、声音合在一起。
  • 若尚未合成,先准备源视频与 work_dir/tts_meta.json。本地合成需要 ffmpeg;烧录字幕需要 libass/subtitles filter。MiMo 提供远程 ASR/VLM/默认 TTS;可选 Fish Audio 只替换 TTS。
  • 能用于实际测试草稿的剪映或 CapCut 桌面安装。草稿是可选的附加导出,渲染解说 MP4 用不到它。
  • 先决定修改范围:要留下的意思、必须听见的原话或看见的动作,以及保留现有配音还是另外申请新配音。若时间轴明确要求倒放却没有已备好的倒放文件,导出可以调用本地 ffmpeg 生成并打包该素材。

操作步骤

  1. 区分仅导出与重新合成 已有完整 timeline.json 时,用下方独立命令导出当前剪辑,不重跑合成。尚未合成时,另一条 assemble.py 流程也能通过 --export-jianying --jianying-out /ABS/drafts 附带导出草稿,它会先照常完成合成,再写出草稿。
  2. 保留正确源视频 cut 模式下,在生成 timeline.json 的 assemble.py 命令中传入 --source-video /ABS/original.mp4,让时间轴保留真实原片区间。之后独立导出器只读取这份已完成的时间轴,不接受 --source-video 参数。
  3. 从原素材导出已有剪辑 对真实时间轴运行独立命令,读取返回的 draft_dir 与警告。这条路径只读取时间轴及引用媒体,用不到 MiMo/Fish,也不重新渲染整部解说。原素材缺失时,先把原片找回来;result.mp4 画面再像,里面也已经混进旁白,默认还烧上了字幕。
  4. 完整保留媒体包 默认开启媒体打包。移动时复制整个输出目录,包括 Resources/local/。只有编辑器仍能访问外部媒体路径时才使用独立导出器的 --no-bundle-media。注意读取警告:缺失的媒体会在警告里列出,并保留为外部引用。
  5. 在目标编辑器中打开 使用已安装版本支持的本地草稿打开或导入方式,保持返回的草稿目录完整,并检查媒体、字幕和音轨都能正常使用;菜单与草稿位置以你安装的版本为准。
  6. 看清可编辑元素里到底是什么 常规导出的解说里,视频片段带着原声与音量关键帧,对白和原片其他声音混在这同一段原声里。旁白、可选 BGM 是独立音频段,解说字幕是文本段。改字幕只改屏幕上的文字,WAV 里说的话照旧;原画面自带的硬字幕属于画面本身,需要时在编辑器里遮罩。
  7. 移动解释,保住它依赖的证据 先确定观众必须听见或看见什么,再缩短。排练示例保留一次没合上的起拍、原话、可见手势和下一次起拍;可以把解说移到结果后,也可以去掉解说做原声主导的短版。为省两秒剪掉手势,成片就再也说明不了回应是跟着手势来的。更前面的声音分工问题,见原声与旁白指南。
  8. 让配音、字幕与音量变化一起对齐 移动已有旁白时,一起移动它对应的字幕提示,并检查旧位置、新位置的原声音量和配乐关键帧。导出器只在导出时写一次这些位置,之后编辑器里的压低窗口由你手动调整。真要改说话内容,就准备作者接受的新录音,按它的实际时长重排,字幕和录音一起换。
  9. 确定哪一版负责最终交付 把未修改的导出留作起点,用目标编辑器支持的复制/版本方式建立精剪版。这个导出器是单向的:从 timeline.json 写出草稿,桌面工程里的修改留在工程里,时间轴、SRT、WAV 和之前的 MP4 保持原样。最终选择在编辑器中导出成片,或先把修改决定明确带回流程输入再另行渲染;再导出一次旧时间轴,得到的仍是未修改的起点。

示例

示例

从已有时间轴导出(替换所有 /ABS 路径): python3 /ABS/video-recap-skills/skills/video-assemble/scripts/export_jianying.py \ /ABS/work/timeline.json \ --out-dir /ABS/drafts \ --name rehearsal_base

读取返回的 draft_dir 与全部警告。 把完整草稿目录与其中的 Resources/local/ 媒体一起保留。

原创编辑练习——《第二次起拍》 以下是虚构的画面描述与剪辑位置,所有时间只用来说明剪辑关系。 真实素材里确有这些拍点时,才照这个方案剪。

观众问题:两次起拍之间,什么发生了变化? 这份虚构素材里,吉他先于其他人进入,大家停下;随后有人发出指令、抬手, 第二次起拍合在一起。素材能支撑的就是这一处变化:抬手之后,第二次起拍合上了。 整场排练是否结束、第一次为什么没合上,都要另有画面才能说。

原片时间 → 剪后时间 | 画面与原声 00:12–00:16 → 00:00–00:04 | 第一次起拍没合上,大家停下 00:22–00:26 → 00:04–00:08 | “看我抬手,再进。” 00:26–00:28 → 00:08–00:10 | 领拍的人抬手,其他人等着 00:28–00:34 → 00:10–00:16 | 第二次一起进入,奏完短乐句并留足必要余音 00:34–00:38 → 00:16–00:20 | 乐句及其余音已结束,手放下,只余现场底声

原片00:16–00:22这段已从示例剪辑中省略。下文的编辑操作都用右边的剪后时钟。 手势和第二次起拍保持原片中的相邻顺序,都来自同一次尝试。

给示例草稿故意放入一个问题: - 一段旁白录音及其对应字幕位于剪后00:05–00:09。 - 旁白是:“抬手以后,第二次起拍合在了一起。” - 只为讲清移动关系,假设这段已有完整录音长四秒。 - 它盖住部分原话,视频片段的原声音量关键帧也压低了这个区域。 要让那句指令重新听清,录音和关键帧都得跟着动。

A——保留一句解释,但放到结果之后(示意20秒版) 1.保留第一次没合上的起拍、完整指令、抬手与第二次短句的先后关系。 2.把完整四秒旁白从00:05–00:09移到00:16–00:20,对应字幕也整体后移十一秒。 先让观众听到结果,再回看一句,不在发出指令时抢话。 3.检查视频片段的原声音量关键帧:按需解除指令处已经过时的压低,保住两次 起拍的可听性,并处理新旁白位置的压低/恢复;有配乐时也检查那个位置。 视频片段上的关键帧要和配音分开,单独挪动。 4.真实录音或原声短句比示意窗口长,就扩展或另选剪法;不要切尾字、假设有 静默空隙,或为了凑“20秒”删掉手势。尾镜也必须真的有可用的收束过程。

B——让这次重来自己说话(示意16秒的编辑器短版) 1.删掉这段新增旁白及其对应的解说字幕,其他文本保留。 若原声对白字幕已经存在,只保留与实际可听内容相符的部分,并逐条核对 哪些原声对白有字幕。 2.删的是00:16–00:20尾段;指令和00:08–00:10的手势都留着。 3.解除不再需要的原声压低,按正常速度听两次起拍。配乐遮住比较时,降低或 去掉配乐。实际结束点放在第二次乐句完整奏完、余音收住之后,以素材为准。

A 多留一句事后解释;B 让可听的比较承担更多叙事。两版都能用的标题是 “同一个开头,再来一次”;“他们终于练熟了整首曲子”超出了素材能证明的范围。 两版都是作者手动选的剪法。

如果要改的是说话内容: 假设已有录音说“他们终于练熟了整首曲子”,只把字幕改成较窄的判断,观众仍会 听到过度结论。应连同字幕去掉这段录音,或另外准备获准的新录音,再按真实时长 放置。新配音要另外合成,仅导出草稿的命令只搬运现有录音。

交接说明(普通编辑笔记): 选定版本:A 或 B,记下哪一版是最终稿。 保留拍点:第一次停下 → 完整指令 → 抬手 → 第二次短句。 修改元素:旁白移动/删除、对应字幕、原声/配乐音量。 当前母版:点名的编辑器工程;最初导出保留不动。 最终交付:从选定精剪版导出的成片,替代之前那份流程 MP4。 实际素材仍要判断:原话是否完整、手势是否可见、短句是否收住,目标编辑器能否 正确打开媒体包。

再次运行独立导出器,读取的仍是它的输入时间轴;编辑器工程中的修改留在工程里, 换输出目录名也一样。完整保留媒体包,并注明最后真正选中了哪一版。

常见问题

导出的剪映草稿保存在哪里?

独立导出时,草稿文件夹建在 --out-dir 指定的目录下,名字取 --name(默认 recap),命令输出的 draft_dir 就是完整路径。走 assemble.py --export-jianying 时,父目录依次取 --jianying-out、环境变量 JIANYING_DRAFT_DIR,都没设就放在工作目录,文件夹名是 recap_ 加源视频文件名(不含扩展名;传了 --recap-stem 时用它)。目标文件夹已有内容时,导出器另建带编号的目录,例如 recap_demo_2。

剪映草稿怎么打开?

让草稿直接写进剪映的草稿根目录:流程导出时按配置手册把 JIANYING_DRAFT_DIR(或 --jianying-out)指向它,独立导出时把 --out-dir 设成它,然后在剪映的草稿列表里找到这份草稿打开。打开后确认原片、旁白、BGM、字幕和图片叠层都在线可编辑,音量自动化看得见、听得出,也没有离线素材提示。

剪映草稿换电脑后怎么打开?

保持默认的媒体打包(不加 --no-bundle-media 或 --jianying-no-bundle-media,JIANYING_BUNDLE_MEDIA 保持开启),导出器会把视频、音频和图片复制进草稿里的 Resources/local/,并用剪映的草稿占位路径引用它们。搬家时复制整个草稿文件夹,放进新电脑剪映的草稿根目录再打开。导出时就缺失的素材会写进警告、保留原来的外部路径,先把它补齐再重新导出。

预期文件

  • 返回的 draft_dir 包含 draft_content.json、draft_info.json 与 draft_meta_info.json。
  • 打包媒体位于 Resources/local/video/、Resources/local/audio/、Resources/local/image/;缺失文件保留为带警告的外部引用。
  • 同名草稿文件夹里已有内容时,导出器改用带编号的相邻目录(如 recap_demo_2),原有内容保持不动。草稿导出与已合成的 MP4、字幕和 timeline.json 相互独立。
  • 编辑器精剪版与流程快照是两份不同交付。改过的字幕只改显示文字,旁白音频保持原样;从未修改的 timeline.json 再导出一次,得到的是不含编辑器修订的原始起点。选定工程和它仍引用的媒体要一起保留。

检查结果

  • 检查三份草稿 JSON 与引用媒体,再在实际目标桌面/地区版本中测试打开;兼容性以你实际打开的版本为准。
  • 针对排练练习,指令、手势、第二次起拍要保持顺序,并在需要处听得清。既看新旁白位置,也看旧位置的原声音量关键帧;把实际说的话与显示字幕对照。20/16秒两版是示意时长,最终长度以实际素材为准。
  • 检查旁白尾字、音画同步、原声交接、BGM 音量、字幕断行与剪点。草稿引用源媒体,原素材自带的硬字幕会留在画面里,需要时在编辑器里遮罩。
  • 导出 smoke test 覆盖的是本地草稿契约;远程生成、桌面编辑器打开和最终成片要分别检查。

来源

了解 Video Recap Skills全部指南