SuperAPI AI 工具集

cutting-rhythm

设计与创作

查看项目

更新于 10-15 11:24

技能介绍

Cutting rhythm 是 video-agent 技能中关于剪辑节奏的指南,核心观点是:即使切点帧级准确,如果时机不对,成片依然难看。文档指出三个杠杆几乎决定了全部节奏效果,并对应到三个可设置的具体项:

  • 画面突兀、每刀都像重击 → 拆分剪辑,把声音剪辑从画面剪辑上移开 → 每个片段的 audio_lead
  • 拖沓、死气沉沉、大量空白 → 停顿长度,把间隙压缩到一个节拍 → tighten 命令
  • 单调、机械、没有重点 → 镜头长度,变化停留时长,向高潮加速 → 片段时长

对任何剪辑列表运行 edl --report,它会告诉你缺了这三者中的哪一个。

一、拆分剪辑(J/L 切)——流畅度提升最大的一招

画面和声音在同一帧变化的剪辑称为 butt cut,它会自我暴露。真正的剪辑会让两者错开,让观众的耳朵带着他们跨过视觉变化,使切点消失。

  • J 切:下一个片段的声音先于其画面到达。你会在问题结尾处听到答案开始。几乎用于每一处对话/访谈切点。
  • L 切:当前片段的声音延续到下一个画面之上。你继续听到说话者,同时切到他们所描述的内容。用于切出镜头、B-roll、反应镜头。

一个字段同时表达两者——正值前导,负值滞后:

{"src": "b.mp4", "start": 12.0, "end": 20.0, "audio_lead": 0.4} // J-cut into this clip {"src": "c.mp4", "start": 30.0, "end": 38.0, "audio_lead": -0.5} // L-cut out of the previous

典型数值:对话切点 0.2–0.5 秒,纪录片切出镜头 0.5–1.0 秒,在持续旁白下铺 B-roll 时最多约 2 秒。低于约 0.15 秒就听不出来——等于白做。

使用位置:连续思路内部的切点。不要拆分那些本应是硬断点的切点——场景变化、章节边界或预告片结尾的落点需要那种重击感。

渲染器让视频和音频保持在独立的拼接链上,因此前导不会导致下游任何失步——前导会相互抵消回到匹配的总量。

二、切点实际放在哪里

在静音处切,而不是在词上切。用 transcribe --words 获取内容,用 speech-segments 获取位置;静音边界才是真相(whisper 词时间有 ±0.3–0.7 秒抖动)。snap --to silence 可一次性对整个 EDL 执行此操作。

保留呼吸。句子前的吸气属于那个句子。切掉它是典型的“为什么这听起来又急又闷”的错误。

在运动中切,而不是绕着运动切。在主体运动时(手势挥到一半、转头、迈步)放置的切点会隐藏自己;在两个静止时刻之间切会暴露自己。绝不要在手势的峰值处切——在它刚开始后或即将落定前切。

匹配出点和入点的能量。从广角静止镜头切到快速手持镜头会被读作错误,除非音频提供了动机。

三、停顿语法——自然,而非死寂

“把这段收紧”几乎从不意味着删内容,而是缩短间隙。

uv run video-agent tighten talk.mp4 -o edit.json --target-gap 0.5 --min-gap 1.0 uv run video-agent edl edit.json -o out.mp4

tighten 从每个长停顿的中间移除时间,因此一句话结尾的呼吸和下一句前的吸气都得以保留。--target-gap 的参考:

  • 干脆 / 社交 / 解说:target-gap 0.25–0.35,min-gap 0.6
  • 普通口播、vlog、教程:target-gap 0.4–0.6,min-gap 1.0
  • 纪录片、工作坊——让它呼吸:target-gap 0.7–1.0,min-gap 1.5

不要均匀收紧。笑点或揭示之后的停顿是有作用的——那是观众用来笑或思考的节拍。运行 tighten 后在 EDL 中手动把这些加宽回来。均匀的节奏正是让剪辑听起来像机器制作的原因。

这与去除填充词不同:后者删掉口头的 um/uh;本操作保留每个词,只缩短词与词之间的空间。先运行 filler-removal,再运行 tighten。

四、镜头长度——干脆感

变化停留时长。如果 edl --report 显示变化度低于约 15%,那么无论选段多好,剪辑列表都是单调的。目标是长短混合。

向高潮加速。预告片/蒙太奇希望镜头长度在推进中逐渐缩短——例如 3.0、2.6、2.0、1.5、1.0,然后是回报。

保持最后一个镜头。结尾需要空气。最后一个镜头应达到或高于平均值,绝不要是片中最紧的切点。

重击之后保持。笑点、揭示或大视觉需要在下一次切之前有一个节拍,否则它落不下来。

有效的预告片结构:钩子(≤2 秒,在前两秒内)→ 铺垫(逐渐加长的背景镜头)→ 转折(问题/冲突)→ 高潮(最快剪辑)→ 落点(一个保持的镜头 + 标题)。

五、按节拍剪辑

uv run video-agent beats inputs/music.mp3 # bpm + beat grid uv run video-agent snap edit.json -o snapped.json
--to beats --ref inputs/music.mp3 --tolerance 0.4

snap --to beats 移动每个切点,使其落在输出时间线(累计运行时间)的节拍上——这才是“按节拍剪辑”的含义;把源时间戳对齐到节拍是没有意义的。在 --tolerance 内没有节拍的切点保持不动。

如果音乐床从曲目中段开始,把它的入点作为 --offset 传入(与 EDL 的 music.start 相同),否则网格会偏移。

速度报告使用约 120 BPM 的先验,以避免经典的半速锁定。如果报告的 BPM 看起来是你预期的一半或两倍,网格在音乐上仍然有效(它是一个节拍层级)——只是比预期更粗或更细。

六、审查循环

uv run video-agent edl edit.json -o /dev/null --report --dry-run # pacing, no render uv run video-agent edl edit.json -o draft.mp4 --draft # fast 480p check uv run video-agent edl edit.json -o final.mp4 # deliverable

--report 以条形图打印每个镜头长度,并对上述三种失败模式给出警告。渲染前先读它——它是免费的,能捕捉到 JSON 中看不见的单调。--draft 仅供你自己验证;根据无部分预览规则,用户只看到一个成品文件。

陷阱

  • audio_lead 需要有素材可借。一个在源中从 0.2 秒开始的片段做 J 切,只有 0.2 秒可借——渲染器会报错,而不是静默缩短。
  • 第一个片段不能有 audio_lead——它前面没有东西。它会被忽略并给出警告。
  • 切出镜头(vsrc)必须与其覆盖的音频长度相同,否则画面和声音会在剩余剪辑中分离。渲染器现在会拒绝不匹配。
  • 切点由渲染器量化到帧网格,因此 snap/tighten 产生的时间(不是整数)不会让画面与声音漂移。
  • 顺序:filler-removal → tighten → 结构/拆分剪辑 → 节拍对齐 → 其他一切。在设置拆分剪辑后再收紧会使前导失效。