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 · 未聲明授權