▶VIDEO.md

编写 VIDEO.md 拆片包

这篇写给开发视频拆解工具的人,以及手写拆片包的人。它从最小的合格包讲到完整的包,说明每一部分怎么写,模型才用得好。规则在 规范 里;这一页讲怎么写好。

最小的拆片包

四个文件。conformance/valid/minimal 就是这个包。

VIDEO.md:

---
videomd: 1
name: city-walk
description: A two-shot city walk at dusk, from a crossing to a lit shopfront.
source: {file: city-walk.mp4, duration: 8.0}
shots: 2
lang: en
---

# city-walk.mp4

A walk through a crossing at dusk that ends on a lit shopfront.

## Map

```videomd-map
video/timeline.md | 60 | One line per shot
video/shots/*.md | 30 | One file per shot
```

video/timeline.md:

---
videomd: 1
part: timeline
shots: 2
tokens: 60
---

# Timeline

```videomd-timeline
#01 0.0-5.0 | seen people cross a street at dusk
#02 5.0-8.0 | seen a shopfront with warm lights
```

video/shots/01.md(02.md 同理):

---
videomd: 1
part: shot
shot: 1
time: [0.0, 5.0]
tokens: 30
---

# Shot 1

People cross a street at dusk.

检查一下:

pip install videomd
videomd check city-walk/

其他都是可选的。你的工具知道什么,就加什么。

卡片

name:由文件名或标题转成的 slug,小写,用连字符:salted-egg,不要 Salted_Egg final(2)。

description:agent 不打开任何文件、要在多条视频里挑出这一条时读的那一行。先说视频展示或讲了什么,知道的话再说怎么做的:

source:只要手上有文件,就给出整个文件的 sha256。两个工具写的两个包是不是描述同一条视频,就靠它判断。视频来自链接时,给出 url。

lang:你的文字用的语言。所有文字用同一种语言写。

时间线

一行一个镜头,而且这是模型可能整个读完的唯一一个 L2 文件,所以每行要短:seen 写一句话,其他的写几个词。一条 75 镜的视频也应当控制在约 4k token 以内。

镜头文件

前置信息给程序,正文给模型。

正文依次写:看到的;推断的和依据;怎么复刻这一镜。「24 fps source, no sensor noise, letterboxed」这样的证据,能帮模型和复核的人判断结论对不对。

长视频

视频超过几百个镜头时,加上场景,并把时间线拆开:

这样模型先读场景列表(就算是一部长片也只有几千 token),再打开其中一部分时间线。

长镜头

一个十分钟甚至一小时的长镜头,对摄像机来说仍是一个镜头,对读的人来说不是。按内容把它拆成多行时间线,每行讲一件事,这些行对应的镜头文件写同一个 take。镜头内部读的人应该能找到的时刻,用 beats 标出来:产品出现、话题切换、抖包袱。

多画面合成

分屏、画中画、游戏画面叠摄像头、反应视频、主讲人抠像这类画面,在 layers 下列出每个画面层,写明 region、显示的内容,判断了制作方式的话也写上。时间线里用一个简短的 layers 值写同样的内容:layers trailer full frame; webcam inset bottom right。inferred.made 仍然是整个镜头的结论。

运镜、转场和速度

台词和相关视频

主题文件

有话可说才写。每个文件以标题开头,直接进入内容:不要折叠,不要 HTML,不要内嵌图片(图片路径放在镜头文件的 frames 里,或者放进地图)。

生成方专用的主题是 video/x-<name>.md。

概览和地图

VIDEO.md 的正文是大多数问题的答案来源。按模型需要的顺序来写:视频讲了什么、结论、复刻概要、待复核的问题,最后是地图。

地图里:

token 数

用任何分词器数每个文件的正文,或者用规范里的算法:ASCII 字符数 ÷ 4 + 其他字符数 × 0.75。大致准确就行,不用精确。

发布之前

把你的工具加到 实现列表。