Communitygithub.com

Video Lite v2

使用 Python + pycairo + ffmpeg + espeak-ng 制作带有真实动态图形(动画标题、动态文字、绘制的符号、神圣几何、图表、图标网格、转场、粒子效果)的短视频 MP4,无需 Node、浏览器或 GPU。专为老旧 32 位机器(i686,2 GB 内存)设计,适用于解说、故事、列表、宣传或演示视频,可添加语音、背景音乐和音效。

Video Lite v2 是什么?

Video Lite v2 是一个轻量级视频生成技能,专为在性能有限的旧硬件(如 32 位 Pentium M,2 GB RAM)上运行而设计。它通过解析 JSON 故事板,利用 Python、pycairo 进行矢量动画渲染,ffmpeg 进行编码,espeak-ng/MBROLA 生成语音,并自动添加程序化背景音乐和音效。支持多种场景类型(标题、动态文字、符号绘制、神圣几何、图标网格、轮盘图等),提供丰富的主题(如神秘、霓虹、终端绿)和转场效果,并能精确同步语音与画面元素。该技能无需 Node.js、Chromium、GPU、AI 模型或网络连接,所有处理均在本地完成。它包含自动化脚本(医生检查、语音设置、故事板创作、渲染、验证及自测试),使得从零开始制作完整的 720p 解说视频(约 90 秒)在旧机器上也仅需 7-8 分钟。

兼容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/jazzautomations/video-lite/tree/HEAD

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

Video Lite v2 是做什么的?

一个从小型故事板 JSON 生成的完成版 MP4 视频。每一帧都是使用 cairo 绘制的矢量艺术(抗锯齿文字、符号、几何图形、发光效果、粒子、摄像机运动、场景转场),并由 ffmpeg 编码;语音由 espeak-ng/MBROLA(支持巴西葡萄牙语和英语)生成,配合一段在语音下方自动降低音量的程序化背景音乐,并在剪辑和揭示时添加嗖嗖/弹出音效。可在老旧 Pentium M 上运行:大约 90 秒的 720p 视频耗时约 7-8 分钟(480p 草稿模式:约 4 分钟)。无需 Node、Chromium、GPU、模型或网络。

<skill-dir> 指的是本 SKILL.md 所在的文件夹。所有命令都从用户的工程文件夹运行;输出文件也放在那里。

黄金路径 —— 请严格按照顺序执行

# 1. 一次性检查机器(同时测量其速度,约 1 分钟)。它会指出缺少什么以及如何修复。
python3 <skill-dir>/scripts/doctor.py
#    没有语音?在 Debian/Ubuntu/antiX 上,该脚本会在 ~/.local 中安装 espeak-ng + MBROLA 巴西葡萄牙语,无需 root 权限:
bash <skill-dir>/scripts/setup_voice.sh

# 2. 从格式(任务)和主题(风格)开始:
python3 <skill-dir>/scripts/compose.py formats   # explainer-motion / story / listicle / explainer / promo / demo
python3 <skill-dir>/scripts/compose.py themes    # mystic, neon, terminal-green, sunset, ocean, paper, mono
python3 <skill-dir>/scripts/compose.py new --format explainer-motion --theme neon --out storyboard.json
#    然后编辑 storyboard.json:所有 "TROQUE:" 占位符必须替换为本视频的真实内容(渲染器会拒绝遗留的占位符)。你可以自由添加、删除或重新排列场景。
#    旁白速度:大约每秒 14 个字符。每个场景一个想法,1-2 句话。

# 3. 渲染。一直运行到 MP4 生成完毕。--draft = 480p,速度更快:在旧机器上优先使用。
python3 <skill-dir>/scripts/render.py storyboard.json --out video.mp4 --draft
python3 <skill-dir>/scripts/render.py storyboard.json --out video.mp4
#    可选:在长时间渲染前查看某一帧(会生成 video.png):
python3 <skill-dir>/scripts/render.py storyboard.json --out video.mp4 --still 12.5

# 4. 验证实际文件(时长、视频+音频流)并查看联系表 PNG。
python3 <skill-dir>/scripts/verify.py video.mp4 --require-audio

不要手动编写 ffmpeg 管道或自行绘制帧:render.py 负责布局、文本适配、动画、时序和同步。如果某一步失败,请阅读其输出信息——它会告诉你需要修改什么。机器慢且赶时间?使用 render.py ... --fast(减少粒子效果,无摄像机运动)。

故事板

{
  "theme": "mystic",
  "voice": "mb-br3",
  "scenes": [
    {"kind": "title", "title": "O Caibalion", "subtitle": "os sete princípios herméticos", "symbol": "☿",
     "narration": "Conheça o Caibalion e seus sete princípios."},
    {"kind": "kinetic", "text": "O Todo é *Mente*",
     "narration": "O primeiro princípio diz: o Todo é mente."},
    {"kind": "bullets", "title": "Na prática", "bullets": ["observe seus pensamentos", "mude o foco", "repita"],
     "narration": ["Observe seus pensamentos.", "Mude o foco.", "E repita todo dia."]},
    {"kind": "wheel", "title": "Os sete princípios", "center": "☿",
     "nodes": ["Mentalismo", "Correspondência", "Vibração", "Polaridade", "Ritmo", "Causa e Efeito", "Gênero"],
     "narration": "Mentalismo, correspondência, vibração, polaridade, ritmo, causa e efeito e gênero."},
    {"kind": "cta", "title": "Leia o livro", "subtitle": "domínio público desde 1908",
     "narration": "Leia e tire suas conclusões."}
  ]
}

顶层字段:theme(主题),voice(语音,pt-br、en-us、es……或 MBROLA 的 mb-br3 / mb-br1 / mb-br4,听起来更不像机器人;若设为 pt-br 且已安装 MBROLA,则默认使用 mb-br3;"none" 表示静音)。语速由 render.py 设置(约 14 字符/秒);"speed": 0.9–1.15 可微调(v1 中的 rate 已被忽略)。可选字段:transition(所有场景通用转场),"music": false(关闭语音下的柔和和弦背景音乐),"sfx": false(关闭嗖嗖/弹出/上升音效),"captions": true(以字幕形式显示旁白;默认关闭——屏幕上显示关键词,语音讲述其余内容)。

每个场景:kind(类型,见下文),narration(旁白),可选的 seconds(秒数,默认等于旁白时长加上短停顿;只能让场景变长),可选的 transition(fade 淡入淡出 | slide 滑动 | zoom 缩放 | wipe 擦除 | iris 虹膜 | cut 硬切;默认使用主题自身的轮换),可选的 camera(auto 慢速缩放/平移,或 none 无)。

将画面与语音同步: narration 可以是一个句子列表。当 bullets、wheel、icons 或 split 场景包含 N 个项目,并且旁白包含 N 个句子(或 N+1 个:第一个作为开场白)时,第 k 个项目会在第 k 个句子开始播放时精确出现:

{"kind": "bullets", "title": "Por quê", "bullets": ["roda em PC velho", "modelos grátis", "testa tudo"],
 "narration": ["Três motivos.", "Roda em computador velho.", "Usa modelos grátis.", "E testa antes de dizer pronto."]}

不要在 narration 中放入链接、电子邮件或文件路径(渲染器会拒绝):请将这些内容显示在屏幕上(cta 副标题)。保持每个句子在 ~110 个字符以内。

场景类型(compose.py kinds 可打印此列表)

kind 类型你看到的画面字段
title 标题大标题逐词显示,下方绘制下划线,顶部可选符号title,subtitle,symbol(可选)
bullets 要点标题 + 逐条显示的项目,每条带图标title,bullets:["文字", {"text": "…", "icon": "fa-rocket"}]
terminal 终端打字效果的终端窗口lines:["$ comando", "saída"]
quote 引用大引号标记,文字淡入,作者滑动进入title(引文),subtitle(作者)
cta 行动号召结尾呼吁:标题弹出,副标题显示在发光按钮中title,subtitle,symbol(可选)
symbol 符号一个巨大的符号逐笔绘制,然后填充并发光,带有光环环symbol,title,subtitle,spin(true/false 是否旋转)
geometry 几何神圣几何逐步绘制,然后发光shape(一个名称或列表),title,subtitle,labels(仅用于 arrows 箭头)
wheel 轮盘圆上的 N 个节点(2–12 个)逐一揭示并带有指向中心的连线;当前节点发光title,nodes:["a", {"label": "b", "icon": "fa-cog"}],center(中心词或符号),active(1..N:高亮该节点)
icons 图标1–8 个图标组成的网格,带标签弹出title,items:[{"icon": "fa-cogs", "label": "motor"}]
kinetic 动态文字大号文字与语音同步出现;*word* = 强调色 + 发光text
split 分屏文字列 + 另一侧的插图title,text 或 bullets,以及 symbol 或 shape,side(right/left:图案在哪一侧)

shape 形状名称:circle 圆形,triangle 三角形,triangle-down 倒三角,square 正方形,hexagon 六边形,hexagram 六芒星,pentagram 五角星,flower 生命之花,seed 生命之种,vesica 鱼形,spiral 黄金螺旋,eye 三角之眼,ouroboros 衔尾蛇,wave 振动波,pendulum 节奏摆,arrows 因果箭头(使用 "labels": ["causa", "efeito", "causa"])。组合形状:"shape": ["circle", "hexagram"]。

symbol/icon/center 可接受(compose.py symbols 列出所有名称):

  • 单个字符:"☿","☤","☯","✡","⚖","∞","🜂"(炼金术),"♀","☉","☽"…
  • Font Awesome 4 名称:"fa-cogs","fa-book","fa-rocket","fa-lightbulb-o","fa-globe","fa-terminal"…
  • 命名符号:"mercurio","caduceu","yin-yang","balanca","fogo","agua","olho"…
  • 表情符号:"🔥","🚀","💡"(有颜色;以弹出方式显示,不是逐笔绘制)。

一个完整的约 90 秒示例(赫尔墨斯主义,神秘主题,包含所有插图类型):<skill-dir>/examples/caibalion.json。

快速获得良好品位

  • 变化场景类型:同一类型不要连续出现 3 个场景;交替使用文字密集型(bullets 要点,split 分屏)和视觉型(symbol 符号,geometry 几何,kinetic 动态文字,wheel 轮盘)。
  • 标题要简短(≤ 5 个词),副标题 ≤ 10 个词,要点每个 ≤ 6 个词,最多 5 个要点。
  • 对于 N 项列表:先用一个 wheel 轮盘做概览,然后每个项目用一个场景(symbol 符号/geometry 几何),或者再次使用 wheel 并添加 "active": k。
  • 主题:mystic 神秘(靛蓝/金色,衬线字体,星光),neon 霓虹(洋红/青色,合成网格),terminal-green 终端绿(代码风格),sunset 日落,ocean 海洋,paper 纸张(浅色,衬线字体),mono 单一色。

测试

python3 <skill-dir>/scripts/selftest.py 会以草稿模式短暂渲染每种场景类型,并用 ffprobe 检查生成的 MP4(exit 0 表示通过)。添加 --voice 参数还会测试 espeak 和字幕功能。

相关技能