SRT Whiteboard Animation:把字幕自动变成流式手绘白板动画的开源 Skill
摘要
SRT Whiteboard Animation 是一个把 SRT 字幕转换成流式手绘白板动画的开源 Skill,通过分区遮罩、语义化时序和连续笔迹渲染,把口播内容逐幕变成可控的 MP4 视频。
本文目录
SRT Whiteboard Animation是一个把 SRT字幕转换成白板手绘视频的开源 Skill。它不是简单地给字幕套动画模板,而是先理解字幕的叙事顺序,再把画面拆成多个区域,让人物、物体和场景随着口播逐步出现,最终形成“边讲边画”的手绘动画效果。
项目默认采用暖米黄色纸张背景、深灰色素描线条,并用少量红、橙、蓝做概念点缀。它适合知识讲解、故事口播、课程字幕和短视频文案等场景,尤其适合已经有完整 SRT字幕、希望把内容进一步做成视觉化视频的创作者。

项目 README 提供的白板手绘场景示例
它是怎么工作的
这个项目的核心思路可以概括为“字幕驱动、逐步确认”。系统先解析 SRT字幕,并根据内容把整段视频拆成若干场景;随后生成分镜与配图策略,再为每一幕准备统一风格的线稿。线稿确认后,项目会结合字幕内容创建区域标注和时间关系,最后再进入渲染阶段。
真正决定动画节奏的是 `annotation.json`。每个画面元素都会关联自己的区域、绘制顺序、字幕事件和出现时间。例如场景背景可以先出现,关键人物随后加入,动作或变化再继续展开,最后才显示反应或结果。这样做的好处是,绘制顺序来自故事本身,而不是单纯从左到右或从上到下扫描整张图。
项目还专门处理了对象互相遮挡的问题。较早出现的元素可以通过 `protectedRegions` 标出暂时不能显示的区域,避免后续角色或物体在自己的字幕尚未出现时提前“穿帮”。
连续笔迹,而不是简单擦除遮罩
SRT Whiteboard Animation的另一个重点是流式笔迹绘制。每个区域会先执行 `ink` 阶段铺出线稿,再通过 `color` 阶段逐步添彩。最终成片中的笔迹由流式绘制器生成,手部素材会跟随当前绘制位置移动,因此视觉上更接近真实白板手绘,而不是把一张完整图片用矩形遮罩慢慢擦出来。
仓库同时提供了浏览器预览台。打开本地 `assets/preview.html` 后,可以载入场景目录,直接调整元素区域、叙事顺序、出现时间以及字幕关联。对需要反复修改节奏的视频来说,这个预览环节能明显减少重复渲染带来的成本。
从字幕到 MP4的完整流程
项目建议先把字幕拆成大约25~35秒一幕的场景,并保证每一幕只表达一个核心意思。完成分镜后再生成线稿、标注区域,最后逐幕渲染。多幕项目可以在每一幕确认无误后合并成完整视频。
首次运行可以先检查并准备独立 Python环境:
python scripts/prepare_env.py --check
python scripts/prepare_env.py解析 SRT并生成建议分镜:
python scripts/parse_srt.py <字幕.srt> --target-sec 30 --min-sec 25 --max-sec 35生成区域检查图:
python scripts/render_annotation_preview.py <图片路径> <标注路径> <预览图输出路径>完成标注后,可以使用项目生成的 Python解释器渲染单幕:
<ENV_PY> scripts/render_stream_whiteboard.py <图片路径> <标注路径> <输出.mp4> assets/drawing-hand.png \
--ink-path grid --color-fill contour-wipe多幕视频则通过合并脚本输出最终文件:
<ENV_PY> scripts/merge_scenes.py --inputs 幕1.mp4 幕2.mp4 幕3.mp4 --output final.mp4标注文件承担了什么角色
每个元素都使用原图中的整数像素坐标,并通过 `sequence`、`subtitle` 和 `narrativeRole` 与字幕事件建立联系。一个简化的元素配置大致包含区域范围、出现顺序、开始时间、持续时间、遮罩保护区以及手部移动路径。
这种结构把“故事内容”和“绘制动作”连接在了一起。创作者可以先从字幕决定哪些内容什么时候出现,再通过预览台修改空间位置和节奏,而不需要直接进入渲染代码调整大量参数。
适合哪些创作者
如果你的输入已经是结构清晰的口播字幕,这个项目会比较顺手。知识科普、课程讲解、故事型短视频、教育内容和带有明显叙事顺序的脚本,都可以利用它把字幕变成逐步展开的手绘画面。
它目前更像一套可控制、可修改的制作流水线,而不是“一键生成最终视频”的黑盒工具。分镜、线稿、标注和最终动画之间保留了多次人工确认,因此更适合希望控制画面内容和叙事顺序的用户。仓库还提供了真实案例素材、手部素材、字幕解析脚本、标注预览工具、流式绘制器以及多幕合并脚本,整个工作流已经比较完整。
项目基于 Python和 OpenCV等技术构建,并以 MIT License开源。截至本次整理时,GitHub仓库显示约754 Stars、142 Forks。对于想把“字幕 → 分镜 → 手绘动画”这条链路自动化,又不希望完全失去画面控制权的创作者和开发者,它是一个很有针对性的开源实现。