# Trailer grammar: three beats

Three trailer-grammar moves — trailer-bumper, a fast-cut hook up front; card-footage-cadence, text cards interleaved with dialogue footage; smash-cut, a slam into stillness.

- Category: rhythm · Tags: shotcraft, remotion, rhythm, opening, transition
- Spec: 1920×1080 @ 30 fps · 4.72s (16:9)
- License: Apache-2.0 · Tier: free
- JSON: https://gimgs.net/motion/trailer-grammar-moves.json
- Kind: remotion
- Source (TSX): https://gimgs.net/motion/trailer-grammar-moves/template.html
- Repo: https://github.com/Vincentwei1021/video-shotcraft
- Credits: video-shotcraft (Vincent Wei) — https://github.com/Vincentwei1021/video-shotcraft
- Page: https://gimgs.net/motion/trailer-grammar-moves.html

## Params

_No params._

Default params (base64url for `?p=`): `e30`

## Prompt

## When to use

The trailer's three structural moments: how the open hooks (A), how the middle converses (B), how the climax closes (C); combined the three form a trailer's skeleton

## Intention

The library's rhythm cards each handle one layer: beat-cut manages cut placement, montage-rhythm manages passage breathing, rhythm-interrupt manages interruption. This card handles **a trailer's structural moments** — not how one shot moves, but how the whole film's three joints connect: A is the opening hook — 0.9 seconds of the most eye-catching shots fast-cut together before the main title, plus a black-screen silent beat before the film opens, "the trailer's trailer"; B is the middle conversation — UI shots alternate hard-cutting with black-background short-phrase cards, both image and text hitting the beat, the third-act structure; C is the climactic full stop — a screen full of roaring motion hard-cuts at its peak into a perfectly still, dead-silent wide shot, noise into silence. Combined, the three form a trailer's skeleton.

## Duration & energy

- Duration: A: ~4.7s / B: ~5s / C: ~4.5s
- Energy: A high / B medium / C high

## Shot recipe (original Chinese — timing, easing, parameter table, known pitfalls)

## 意图
库内节奏卡各管一段：beat-cut 管切点排布、montage-rhythm 管段落呼吸、
rhythm-interrupt 管打断。本卡管**预告片的结构性时刻**——不是某个
镜头怎么动，是整片的三个关节怎么接：A 是开场钩——正片前 0.9 秒塞
三个最抓眼镜头速剪 + 黑场静默一拍再开场，预告片的"预告"；B 是中段
对话——UI 镜头与黑底短语卡互相接拍交替硬切，画面与文字都踩拍点，
第三幕结构；C 是高潮句号——满屏动势轰鸣最高潮一帧硬切成整齐静止
全景死寂，喧闹→死寂。三式合用即一支预告片的骨架。

## 三式选型
| 式 | 做法 | 适用 |
|----|------|------|
| A trailer-bumper | 三镜头各 9f 等长硬切（0/9/18），每镜内部 scale 1→1.04 微推保活；27–33f 纯黑静默，33f 起标题 16f 淡入 + 44px out-cubic 微升 | 正片开场前的钩子；cold open |
| B card-footage-cadence | 七段条件挂载分段（14/22/34/42/52/62 切点）：UI 段带微动（缓推/裁切横移），字卡段黑底白字 1.05→1 落定微缩 | 中段画面与文字对话；卖点三连 |
| C smash-cut | 轰鸣段全 Easing.in(quad)：背景推近 1→1.55 + rotate 1.8°、5 张飞卡错峰加速冲脸 + 速度门控模糊；42f 一帧硬切无动画属性的静止全景 | 全片最高潮的收束句号 |

## 参数表
| 参数 | 典型值 | 调节手感 |
|------|--------|----------|
| A 速剪 | 三镜等长 9f，零过渡；镜头 3 用 origin 58%/40% 放大 2.2x 怼脸特写 | 节拍感靠等长；三镜构图必须明显不同 |
| A 微推 | 每镜内部 scale 1→1.04 线性 | 静帧三连读作幻灯片——命门 |
| A 黑场 | 27–33f 纯黑 #000 空 div，6f | 黑场里放任何东西都毁掉"静默一拍" |
| B 交替 | UI 段 12f 级 ↔ 字卡 8f 级硬切，条件挂载分段=天然零过渡 | 段长可变但要读出"接拍"感 |
| B 字卡 | 黑底白字居中，落定 1.05→1 out-cubic 5f 内完成，其余全静 | 字卡的静 ↔ UI 段的动，质感对比即节奏 |
| C 切点 | 42f 一帧完成全部反差；切前 3f 动势仍在加速 | 绝不减速迎接切点——命门 |
| C 模糊 | 飞卡 blur = 1+4p（p∝瞬时速度），背景恒 1.5px 衬前景 | 速度门控：快才糊，不是全程糊 |
| 收尾 | A 静止 91f / B 45f / C 93f（≥40f） | C 死寂段直接 return 无动画子树，帧函数级真静止 |

## 已知坑
- demo 在灰阶/占位素材上调校通过——参数是调校起点非实战定稿，
  首次实战须以真实素材回验
- A 黑场必须纯黑无物（drop-blackout 判例同族）——黑场是喘息，
  不是又一张字卡
- B 与 cel-flash-stomp/beat-cut 字卡段的分工：那些是字在表演
  （字自己是主角），这是字与画对话（互相接拍）——别混用
- C 死寂段绝对真静止、音乐同帧骤停——声音强依赖，无声版的 smash cut
  只剩一半（sound-design §4.5）；A 三连切每切一声打点、黑场全消音
- C 与 drop-blackout-slam 的区别：那是黑场蓄力再爆（静→爆），
  这是爆完瞬间入定（爆→静）——方向相反，别接错位置

## 参考实现
demos/rhythm/trailer-grammar-moves/
（CardFootageCadence.tsx / SmashCut.tsx / TrailerBumper.tsx）

## Reference implementation (Remotion)

- demos/rhythm/trailer-grammar-moves/CardFootageCadence.tsx — https://raw.githubusercontent.com/Vincentwei1021/video-shotcraft/main/demos/rhythm/trailer-grammar-moves/CardFootageCadence.tsx
- demos/rhythm/trailer-grammar-moves/SmashCut.tsx — https://raw.githubusercontent.com/Vincentwei1021/video-shotcraft/main/demos/rhythm/trailer-grammar-moves/SmashCut.tsx
- demos/rhythm/trailer-grammar-moves/TrailerBumper.tsx — https://raw.githubusercontent.com/Vincentwei1021/video-shotcraft/main/demos/rhythm/trailer-grammar-moves/TrailerBumper.tsx

The component imports shared fixtures from `demos/_fixtures` and helpers from `assets/lib` in the repo; SKILL.md there documents the render workflow.


## Flow

1. **Read the recipe**
   Prompt = when to use, intention, parameter table with typical values and how each one feels, known pitfalls. Treat values as calibrated starting points.
2. **Get the code** — tool: git
   `git clone https://github.com/Vincentwei1021/video-shotcraft && cd video-shotcraft && npm install`
3. **Register + render** — tool: remotion
   `npx remotion render <CompositionId> out.mp4   # component: demos/rhythm/trailer-grammar-moves/CardFootageCadence.tsx, demos/rhythm/trailer-grammar-moves/SmashCut.tsx, demos/rhythm/trailer-grammar-moves/TrailerBumper.tsx`
4. **Or re-implement**
   Port the timing/easing from the recipe to HTML + WAAPI (gimgs motion contract) or any engine; keep the same segment windows and easing.

## Render

Clone https://github.com/Vincentwei1021/video-shotcraft (npm install). The component lives under demos/{category}/{name}/ and imports shared fixtures from demos/_fixtures and helpers from assets/lib. Copy it (with those imports) into a Remotion project, register a <Composition> with the template's width/height/fps/duration in Root.tsx, then `npx remotion render <CompositionId> out.mp4`. SKILL.md in the repo documents the full Claude Code / Codex workflow. The prompt below is the shot recipe (timing, easing, parameter table, pitfalls) — enough to re-implement the shot in HTML/WAAPI or another engine if you prefer.

## Contract

React/Remotion composition (TSX) from the open-source video-shotcraft library (Apache-2.0). It is not a browser-playable template: clone the repo, register the component in a Remotion project and render with `npx remotion render`. The recipe (prompt) describes timing, easing and parameters so you can also re-implement the shot in any engine.
