一句话剧情告诉你“发生什么”,分镜表要继续回答“每几秒看见什么、从哪儿看、镜头怎么动”。先把事实顺序固定,再给画面分配景别、机位和运镜;镜头语言能让计划更清楚,但不替你验证实际拍摄或视频生成结果。
本文用一条原创虚构剧情练习:雨停后,阿橙在院子里捡到一粒刚发芽的豆子,把它种进窗边花盆;第二天,新叶从泥土里冒出来。练习目标是做一张 5 格、20 秒的分镜表,不写完整剧本,也不生成视频。
先把一句话拆成事实卡
先把原句分成能逐项检查的事实,不急着让模型添加天气、衣服、情绪或旁白:
| 编号 | 事实 |
|---|---|
| F1 | 雨停后,阿橙在院子里。 |
| F2 | 阿橙在地上捡到一粒刚发芽的豆子。 |
| F3 | 阿橙把这粒豆子种进窗边的花盆。 |
| F4 | 第二天,一片新叶从花盆的泥土里冒出来。 |
拆分时保留事件顺序:先发现,再捡起,再种下,最后到第二天看到新叶。事实编号方便复核,但模型把某行标成 F2 并不能证明它真的受 F2 支持。
给每格设时间和镜头字段
本练习先定 20 秒总长、5 格各 4 秒。字段先固定好,再请模型填内容:
- 时间:检查每格相接,最后一格正好到 20 秒。
- 景别:全景交代空间,近景或特写突出豆子和新叶。
- 机位:平视、俯拍或仰拍,说明观众从哪一方向看。
- 运镜:固定、推近、横移等;运镜服务于当前动作,不额外创造剧情。
- 画面与台词:每格只保留一个主要动作;原句没有对白时留空。
- 事实引用:标出支持该格内容的 F 编号,随后仍须人工对照。
用本机 Qwen 起草,再人工改
练习包包含事实卡、固定提示词、原始回答、JSON Schema 请求脚本和人工修订表。在 Ollama 已经运行、且本机已有相应模型标签时,在练习包目录执行:
python3 scripts/run_local.py
脚本只调用本机 http://127.0.0.1:11434/api/chat,将 format 设为 JSON Schema、stream 设为 false,并用 Python 标准库断言格数、时间段、字段值和事实编号。Ollama 官方文档支持在 format 提供 JSON Schema;本练习同时在提示词里说明输出字段。结构化输出只管结构,不判断剧情事实。若模型标签不存在,脚本会报错;它不会替你下载模型。
这次本机使用 qwen3.8-27b:latest,ollama show 报告 27.3B、Q4_K_M 和 qwen35 architecture。单次请求输入 330 tokens、输出 505 tokens、总耗时 48.19 秒。原始结果的时间段、字段和编号通过断言,但它把“第二天新叶冒出”拆成两格重复描述,还把所有运镜都设为固定。手工修订后,将“发现”和“捡起”分开,给发现安排缓慢推近、种植安排横移;由于原句没有台词,所有对白保持空白。
| 时间 | 景别 | 机位 | 运镜 | 画面动作 | 台词 | 事实 |
|---|---|---|---|---|---|---|
| 00–04 秒 | 全景 | 平视 | 固定 | 雨停后的院子里,阿橙站在院中。 | — | F1 |
| 04–08 秒 | 近景 | 俯拍 | 缓慢推近 | 地上有一粒刚发芽的豆子,阿橙的视线停在豆子上。 | — | F2 |
| 08–12 秒 | 特写 | 俯拍 | 固定 | 阿橙把那粒刚发芽的豆子从地上捡起。 | — | F2 |
| 12–16 秒 | 中景 | 平视 | 横移 | 阿橙把豆子种进窗边花盆的泥土里。 | — | F3 |
| 16–20 秒 | 特写 | 平视 | 固定 | 第二天,花盆的泥土里冒出一片新叶。 | — | F4 |
导出前检查
- 顺序与事实卡一致,时间没有重叠或漏段,合计 20 秒。
- 每格只写一个主要可见动作;没有模型自行添加的对白、人物背景或关键道具。
- 运镜只是拍摄建议;没有拍摄设备或视频结果时,不要声称运镜已实际验证。
- 自动检查通过后仍逐格核对事实。模型生成的
fact_refs可能挂错编号,new_facts为空也不能代替人工审稿。 - 本例是本机一次 Qwen 生成和人工修订;不代表分镜质量评分、成片效果或模型准确率。
示例剧情与分镜由本地模型起草、人工修订;封面背景由本机 ComfyUI 生成,标题由脚本排版,封面带有“AI生成封面”标识。