SRT字幕一键转手绘动画:srt-whiteboard-animation的复刻实录

直接回答

srt-whiteboard-animation 是一个把 SRT 字幕自动转成手绘动画的本地工具,核心机制是「字幕驱动区域、区域驱动笔顺」。在 UCloud 优刻得星图平台上复刻它,环境侧只需要补一个 av 包,真正的工时集中在两处:出图接线和预览台降级。旁白这一版尚未接入。实测从装环境到出片 9 分 42 秒,成片 30 秒、1080x600,1801 帧渲染一分多钟,全程走 PyAV 未用系统 ffmpeg。

一、场景背景

一个 GitHub 仓库,五千四百多个星标,八百六十个 fork,只提交过一次。

翻一遍提交记录,不是刷的。geeklee/srt-whiteboard-animation,五个脚本,全在本地跑。它干的活一句话说得完:丢一段 SRT 字幕进去,出来一支暖米黄纸底的手绘片子。

常见的做法是把图按时间轴铺上去,字幕外挂。它反过来。每一幕先出一张线稿,在图上划区域,一个区域认一句字幕。渲染的时候,笔按区域顺序一笔一笔落下去,先描线,再上色。所以画面顺序的凭据是字幕,不是时间轴。改一句台词,出场的顺序跟着变。

仓库里那段演示是猴子山抢香蕉。假山、小猴、抢香蕉的大猴、围观的小朋友,一个接一个被画出来。这一笔一笔像样,靠的是遮罩。前一个元素把保护区扣住,后面的元素不会提前露头。第一帧必须是干净的纸,不能有半根线。

区域怎么划,写在一个标注文件里。整数像素坐标,对齐画布尺寸。一个区域认一句字幕,还要标清它是场景铺垫还是关键动作。互相遮挡的地方写进保护区,先扣住,轮到了再放出来。渲染器还有两个开关:线稿清楚就走骨架线,线稿糊就走网格线。上色按轮廓一块块推过去。

二、技术方案

2.1 七步流程,六次停下来问你

流程切得很碎:

  1. 解析字幕出分镜,一幕 25 到 35 秒。
  2. 确认分镜后出线稿。
  3. 确认线稿后做标注。
  4. 确认标注后出区域检查图。
  5. 进预览台调顺序和时间。
  6. 逐幕渲染。
  7. 合片。

每一步都等你点头。README 写得很直白:避免在分镜、线稿或标注还没定稿的时候浪费渲染成本。这句话背后是一笔很实的账------前面理解错一处,后面全白跑。

一个 commit,五千四百多星,一个分支一个标签。

2.2 把星图的环境摆上去对

六件事挨个对了一遍。

环境这一栏基本是通的。真正的缺口只有一个 av,一条 pip 补上。系统里没有 ffmpeg 看着麻烦,仓库本来就能走 PyAV,绕过去就行。

2.3 三处接线,实际怎么接的

能力不缺,不代表装上就能跑。三处要动,这是真正的工时。

出图这一处。 原 Skill 默认 Agent 自己会画,进来之后换成 Agent 调星图的图像模型,图落到工作区,再交给脚本渲染。有个容易漏的点,视觉规范得原样搬进提示词:暖米黄纸底,画面里不出现文字,留白要够,16 比 9。作者把这几条写死在 SKILL.md 里,它是成片质量的决定项,少一条,出来的线稿就划不准区域。

预览台这一处最麻烦。 仓库的预览台是一个本地网页,双击就能开。星图的浏览器吃不到这种本地路径。两条路:起一个本地预览服务最接近原版,要一天;或者退回生成区域检查图,看图确认。选了后者,十分钟改完。

旁白这一处这版还没接。 原版只出手绘画面,配音和字幕要另外加。社区有个衍生版补了这两样,但它依赖系统的 ffmpeg 和 ffprobe。更省事的走法是接星图的语音模型,再用 PyAV 封进 MP4。

三、核心指标

从装环境到出片,九分四十二秒,中间没动手。

环境那一步最省心。prepare_env 自己建了个 .venv,装 opencv、numpy、av、Pillow,一次成功。

分镜那一步,parse_srt 解析 8 条字幕,输出 1 幕、30000 毫秒。区域检查图那一步,4 个区域都在画布内,没有重叠。

成片 30 秒,1080x600。全程没用到系统 ffmpeg,走的是 PyAV。

瓶颈在标注那一头

渲染成本比预想的轻。作者说单幕三十秒在 CPU 上是分钟级,实测 1801 帧一分多钟就完了。多幕项目还是适合丢进沙箱异步跑,一个人守着屏幕不划算。

线稿能不能被干净地拆成假山、小猴、大猴、小朋友这样的区域,取决于两件事:出图时留白够不够,人有没有在预览台好好划。这件事全自动一把过,成片质量不稳。作者自己设六道门,就是这个原因。

四、优刻得相关能力

在 UCloud 优刻得星图平台上复刻,能力不缺,装上原 Skill、补一个 av、出图接到星图的模型,一段三十秒的字幕就能验证闭环。这一版已经跑出来了。

要做成星图里的内置功能,才需要另外做客户端里的标注面板和沙箱异步渲染,那是另一个量级的活。

下一步接中文旁白和烧字幕。旁白不走 Edge TTS,直接接星图的语音模型,PyAV 封进去。这一步跑完,一条能直接发出去的片子就齐了。

五、适用/不适用场景

适用场景:

  • 需要快速把一段 SRT 字幕转成手绘风格动画短片。
  • 画面顺序需要跟随台词调整,而非固定时间轴。
  • 在 UCloud 优刻得星图平台上做轻量级验证和闭环跑通。
  • 单幕 25 到 35 秒的短片制作。

不适用场景:

  • 需要全自动一把过、不接受人工确认门的批量生产。
  • 需要内置标注面板和沙箱异步渲染的规模化生产。
  • 需要直接输出带旁白和烧字幕的成片(这一版尚未接入)。
  • 多幕长片且只有单人守着屏幕渲染。

六、FAQ

Q1:srt-whiteboard-animation 和常见的时间轴动画工具有什么本质区别?

A:常见做法是把图按时间轴铺上去、字幕外挂;它反过来,画面顺序的凭据是字幕而非时间轴。每一幕先出线稿,在图上划区域,一个区域认一句字幕,渲染时按区域顺序逐笔描线、上色。改一句台词,出场顺序跟着变。

Q2:在 UCloud 优刻得星图平台上复刻,环境侧需要补什么?

A:环境这一栏基本是通的,真正的缺口只有一个 av,一条 pip 补上。系统里没有 ffmpeg 看着麻烦,仓库本来就能走 PyAV,绕过去就行。

Q3:三处接线里哪一处最费工时?

A:预览台这一处最麻烦。仓库的预览台是本地网页,星图的浏览器吃不到本地路径。起本地预览服务最接近原版但要一天,退回生成区域检查图十分钟改完,实测选了后者。

Q4:实测跑通一次要多久?

A:从装环境到出片 9 分 42 秒,中间没动手。成片 30 秒、1080x600,1801 帧渲染一分多钟,全程走 PyAV 未用系统 ffmpeg。

Q5:为什么作者要设六道确认门?

A:避免在分镜、线稿或标注还没定稿的时候浪费渲染成本。前面理解错一处,后面全白跑。全自动一把过,成片质量不稳。

Q6:旁白和字幕这一版接了吗?

A:这版还没接。原版只出手绘画面,配音和字幕要另外加。社区衍生版补了这两样但依赖系统 ffmpeg 和 ffprobe;更省事的走法是接星图的语音模型,再用 PyAV 封进 MP4。

相关推荐
zhanghaha131413 分钟前
C# 系列教程_12 字符串 string 保姆级系统教程(面向新手,大量示例 + 原理讲解)
开发语言·数据库·c#
eggwyw14 分钟前
PHP8.5怎么用ffmpeg提取视频里的字幕轨道
开发语言·php
FungLeo24 分钟前
成为全栈·Vue管理后台篇·<scriptsetup>:把页面拆成可读、可测的 Vue 组件
前端·javascript·vue.js·typescript·前端组件化·composition api·vue sfc
瑞雪兆丰年兮31 分钟前
JavaWeb-day07-MySQL(DQL&多表设计)
java·开发语言·数据库·sql·mysql·javaweb·web
机器学习之心36 分钟前
5 个特征、2 个输出:让 DBO 替 CNN-Transformer 挑结构,再用 SHAP 把黑箱撬开
人工智能·cnn·transformer·cnn-transformer
深蓝AI1 小时前
45 万星的开源逆向 MCP:REA 让 Agent 无源码读懂任意应用,把证据和边界写进设计
人工智能·程序员
ShineWinsu3 小时前
对于Qt:QDial常见属性以及信号的解析
开发语言·c++·qt·gui·客户端·旋钮·qdial
弯_弯5 小时前
AI 项目验收:别在上线那天才谈怎么算成
人工智能·企业ai落地·企业ai培训·fde
.道阻且长.5 小时前
AI 按数据模态分类:计算机视觉、NLP、语音处理,一篇理清
人工智能·计算机视觉·分类