ai21.net
语言

口播视频的动效剪辑

演示视频

口播视频的动效剪辑 — 1

提示词

Edit my talking-head video into a polished YouTube video with explanatory motion graphics.

INPUT
- Raw video: <path/to/raw.mp4>. Speech is Portuguese; don't translate.
- Target: at most <6:30>. Style: premium, clean, editorial ("Anthropic/Apple level").
- End card: subscribe + follow me on X (<https://x.com/handle>) + "comment what you want to see next".
- Never cover my face. Never show where I live.

STACK
- Remotion (https://remotion.dev/) for the composition, ffmpeg for cuts and encoding, Python for analysis.
- Transcribe with word timestamps using ElevenLabs Scribe. It has precise word boundaries and marks fillers like "hã"/"é".
- If you use Whisper instead: its word ends stretch over pauses, so refine every cut point with the audio energy.

1) PLAN THE CUT
- Make an indexed transcript (word index → text, start, end).
- Choose keep-ranges by word index. Remove fillers, false starts, repeated sentences and weak tangents until it fits the target.
- Put the strongest line (2–4 s) at the very start as a cold-open hook.

2) CUT, FRAME-ACCURATE AND IN SYNC
- Cut points:
- Cut in the silence between words, never inside a word.
- Keep ~50 ms before the first word and ~60 ms after the last word (~160 ms if it ends a sentence).
- Silences inside kept ranges:
- Detect them with a 10 ms RMS envelope. A threshold around −38 dBFS worked here; measure your own noise floor first.
- Shorten any pause over 0.32 s to 0.22 s (0.36 s after a sentence ends).
- Round every boundary to whole frames (30 fps) and merge touching segments.
- Video: ffmpeg split → trim(start_frame, end_frame) → concat, plus a light grade (hqdn3d, eq, colorbalance, unsharp) → intermediate at CRF 14.
- Audio: cut the same boundaries in numpy with 8 ms fades and no overlap. A/V stays in sync.
- QA: re-transcribe the cut and diff it against the intended text. Fix leaked fragments and clipped word starts, then repeat until clean.

3) FACE TRACK
- Detect the face every 0.2 s (Apple Vision or MediaPipe).
- Smooth with a moving average inside each cut segment, never across a jump cut.
- Use it to frame the camera and to place graphics on the side away from the face.

4) DESIGN SYSTEM
- One palette: dark warm stage #14120F, ivory "paper" #F1ECE2, one accent (clay #D97A4E).
- Fonts: Fraunces (serif display), Inter Tight (UI), JetBrains Mono (labels). Add subtle grain and soft glows.
- No gradient text, no neon.
- Camera layout modes, morphing between them in ~0.7 s (cubic in-out):
- full frame;
- split left/right: rounded camera card 856×936, face at 42% of its height, graphics on the other half;
- PIP: 256 px circle over a full-screen paper sheet, for chapter moments.

5) BEAT SHEET (JSON)
- Give every sentence group a visual, cued to word start times in the cut timeline:
- lower third (name/role);
- big numbers with count-up;
- lists that reveal on each spoken item;
- SVG diagrams that draw on;
- timeline, before→after, comparison cards, quotes;
- arrows annotating objects in the room.
- Structure: cold open with kinetic captions → 1.5 s title card → content → end card (CTAs plus a portrait still).

6) BUILD IN REMOTION
- One composition, 1920×1080 at 30 fps. Put `<OffthreadVideo>` (muted) inside a container whose rect and transform come from the layout keyframes plus the face track.
- Each graphic is a `<Sequence>` component. Drive reveals with useCurrentFrame + interpolate/spring (opacity, translateY, blur).
- SVG draw-on: animate strokeDashoffset using the real path length.
- Jump cuts: alternate zoom 1.0 ↔ 1.075 around the face when the picture jumps. Add a 1–2% slow breathing zoom elsewhere and a punch-in on punchlines.
- Deterministic only: no Math.random.
- Check key frames with `npx remotion still`: face uncovered, no clipped text, nothing appearing before its cue.

7) SOUND
- Voice: highpass 80 Hz, light denoise, −2.5 dB at 280 Hz, +2 dB at 3.6 kHz, de-ess, 3:1 compressor.
- Music: royalty-free lo-fi (e.g. Mixkit). Change track per section with 4 s crossfades.
- Duck 9–12 dB under the voice in the speech band, keeping the lows.
- Louder only on the title and end cards.
- SFX: very subtle whooshes on layout changes, pops on reveals, ticks on counters.
- Master: two-pass loudnorm to −14 LUFS, true peak −1.5.

8) RENDER, VERIFY, DELIVER
- Encode: H.264 CRF 16, AAC 320k, BT.709, +faststart.
- Verify:
- duration within the target, −14 LUFS;
- no frozen stretch over 0.3 s;
- a 40-frame contact sheet;
- re-transcribe the final mix: at least 95% of words should match, so the music isn't masking the voice.
- Deliver the MP4, an .srt from the word timings (max 42 chars per line, 2 lines), and YouTube chapters (first at 0:00, each at least 10 s).

RULES
- Show numbers and claims exactly as I say them.
- Check names and spellings on the web before they go on screen.
- No invented stats or testimonials.
- Short, concrete on-screen copy with no AI clichés.
- Don't publish anything without my OK.

中文译文

把我的口播视频剪辑成一支精致的 YouTube 视频,配上讲解性的动效图形。

输入
- 原始视频:<path/to/raw.mp4>。语音是葡萄牙语;不要翻译。
- 目标:最长 <6:30>。风格:高级、干净、编辑感(“Anthropic/Apple 级别”)。
- 结尾卡:订阅 + 在 X 上关注我(<https://x.com/handle>)+ “comment what you want to see next”。
- 绝不要遮住我的脸。绝不要露出我住的地方。

技术栈
- Remotion(https://remotion.dev/)负责合成,ffmpeg 负责切分和编码,Python 负责分析。
- 用 ElevenLabs Scribe 做带词级时间戳的转写。它有精确的词边界,并会标出 “hã”/“é” 这类填充词。
- 如果你改用 Whisper:它的词尾会延伸进停顿里,所以要用音频能量把每个剪切点再精修一遍。

1) 规划剪辑
- 做一份带索引的转写稿(词索引 → 文本、开始、结束)。
- 按词索引选择保留区间。删掉填充词、半截重来的开头、重复的句子和薄弱的跑题,直到长度符合目标。
- 把最强的一句(2–4 s)放在最开头,作为冷开场的钩子。

2) 剪辑,帧级精确且同步
- 剪切点:
- 在词与词之间的静音处剪,绝不要在词中间剪。
- 在第一个词之前保留约 50 ms,在最后一个词之后保留约 60 ms(如果是句末则约 160 ms)。
- 保留区间内的静音:
- 用 10 ms 的 RMS 包络检测它们。这里 −38 dBFS 左右的阈值是有效的;先测你自己的本底噪声。
- 把任何超过 0.32 s 的停顿缩短到 0.22 s(句末之后为 0.36 s)。
- 把每个边界取整到整帧(30 fps),并合并相接的片段。
- 视频:ffmpeg split → trim(start_frame, end_frame) → concat,再加一道轻调色(hqdn3d、eq、colorbalance、unsharp)→ 以 CRF 14 输出中间文件。
- 音频:在 numpy 里按同样的边界剪切,用 8 ms 淡入淡出,且不重叠。音画保持同步。
- QA:把剪好的版本重新转写,并与预期文本做 diff。修掉漏出来的碎片和被切掉开头的词,然后重复直到干净。

3) 人脸跟踪
- 每 0.2 s 检测一次人脸(Apple Vision 或 MediaPipe)。
- 在每个剪切片段内部用移动平均平滑,绝不要跨跳切平滑。
- 用它来给镜头取景,并把图形放在远离脸的一侧。

4) 设计系统
- 一套调色板:深色暖调舞台 #14120F、象牙“纸张” #F1ECE2、一个强调色(陶土 #D97A4E)。
- 字体:Fraunces(衬线展示体)、Inter Tight(UI)、JetBrains Mono(标签)。加细微颗粒和柔和辉光。
- 不要渐变文字,不要霓虹。
- 摄像机布局模式,在它们之间以约 0.7 s 变形过渡(三次缓入缓出):
- 全画幅;
- 左右分屏:圆角摄像机卡片 856×936,人脸位于其高度的 42% 处,图形放在另一半;
- PIP:256 px 的圆形,叠在全屏纸张页面上,用于章节时刻。

5) 节拍表(JSON)
- 给每个句子组配一个视觉,并对齐到剪辑时间轴中词的开始时间:
- 下三分之一(姓名/角色);
- 带数字递增的大数字;
- 每念到一项才揭示的列表;
- 逐渐绘制出来的 SVG 图表;
- 时间轴、before→after、对比卡片、引语;
- 标注房间里物体的箭头。
- 结构:动态字幕冷开场 → 1.5 s 标题卡 → 内容 → 结尾卡(CTA 加一张肖像静帧)。

6) 在 Remotion 中构建
- 一个合成,1920×1080、30 fps。把 `<OffthreadVideo>`(静音)放进一个容器,容器的 rect 和 transform 来自布局关键帧加上人脸跟踪。
- 每个图形都是一个 `<Sequence>` 组件。用 useCurrentFrame + interpolate/spring 驱动揭示(opacity、translateY、blur)。
- SVG draw-on:用真实路径长度来动画 strokeDashoffset。
- 跳切:画面跳变时,围绕人脸交替缩放 1.0 ↔ 1.075。在其他地方加 1–2% 的缓慢呼吸式缩放,并在金句上做 punch-in。
- 只允许确定性:不要 Math.random。
- 用 `npx remotion still` 检查关键帧:脸没有被遮住、没有文字被裁切、没有东西在它的提示点之前出现。

7) 声音
- 人声:80 Hz highpass、轻度降噪、280 Hz 处 −2.5 dB、3.6 kHz 处 +2 dB、去齿音、3:1 压缩。
- 音乐:免版税的 lo-fi(例如 Mixkit)。每段换曲用 4 s 交叉淡化。
- 在人声下方、语音频段内做 9–12 dB 的闪避,保留低频。
- 只在标题卡和结尾卡上更响。
- SFX:布局变化时非常轻微的风声,揭示时的 pop,计数器上的 tick。
- 母带:两遍 loudnorm 到 −14 LUFS,真峰值 −1.5。

8) 渲染、验证、交付
- 编码:H.264 CRF 16、AAC 320k、BT.709、+faststart。
- 验证:
- 时长在目标之内,−14 LUFS;
- 没有超过 0.3 s 的冻结拉伸;
- 一张 40 帧的 contact sheet;
- 把最终混音重新转写:至少 95% 的词应当匹配,这样音乐才没有盖住人声。
- 交付 MP4、一份由词级时间生成的 .srt(每行最多 42 字符,2 行),以及 YouTube 章节(第一章在 0:00,每章至少 10 s)。

规则
- 完全按我说的方式呈现数字和说法。
- 在姓名和拼写出现在屏幕上之前,先上网核对。
- 不要编造统计数据或用户证言。
- 屏幕上用简短、具体的文案,不要 AI 陈词滥调。
- 没有我的同意,不要发布任何东西。

溯源

原作者
condzxyz
发布日期
2026-10-12(由推文 ID 反解)
原始出处
查看原帖 ↗
收录来源
zhuyansen/awesome-opus-5.5-video · 2109454493415023080 · 未声明许可