音樂宣傳影片
製作一支直式(預設 1080×1920)宣傳影片,給人一種連續、高質感的感覺。以 Logo 開場。App 頁面、封面和播放器透過流暢的攝影機移動彼此銜接。歌曲在畫面下方隨節拍播放。最後以相匹配的結尾卡片收場,讓影片可以循環播放。
這項技能封裝了一個透過多輪真實使用者回饋精煉的工作流程。references/direction.md 中的規則就是這些回饋,轉化為原則。在設計任何東西之前請先閱讀它們:它們是「不錯」和「這就是我想要的」之間的差別。
0. 初步詢問:先要求參考資料
在規劃或建構任何東西之前,先要求使用者提供 3–4 個參考,這些參考應影響輸出。參考資料決定了外觀,所以影片依賴於它們。用一封友善的訊息,連同下面的資產清單一起詢問,這樣使用者只需回答一次。
要求:
- 3–4 個參考:影片(最好:它們帶有動態和節奏)、Reels、圖片或連結。針對每個參考,詢問他們喜歡哪一點:外觀、顏色、字體、過場、節奏、聲音。如果使用者只提供你無法開啟的連結(Instagram、Pinterest、TikTok),要求下載後的檔案或截圖。絕不要聲稱看過你無法開啟的內容。
- 如果他們提供的少於 3 個,再問一次,並解釋更多參考會讓結果更接近。如果他們仍然無法提供,就用現有的資料繼續進行,並說明你做了哪些選擇。
- 如果他們提供的多於 4 個,詢問哪 4 個最重要,或為前幾個加權。
資產清單(在同一則訊息中詢問,並接受任何項目的「你來選」):
- Logo(透明 PNG 為佳)。
- App 截圖(主畫面、資料庫、正在播放),展示真實內容。
- 歌曲:音訊檔案加上每首歌的 Hook 開始和結束時間(使用者知道他們的 Hook;不要從歌詞猜測)。
- 音效包(可選)。
- 官方音樂錄影帶檔案(可選,用於同步片段)。
- 格式、目標長度、影格率(預設 1080×1920,60 fps),以及將張貼到哪裡。
然後好好研究參考資料(參見 references/references-analysis.md):針對動態製作連絡表和密集影格序列。寫一份簡短的參考摘要:調色盤、字體角色、節奏(每小節剪輯數)、過場類型、質感(顆粒、光暈、紙質或無)、文字和圖像如何互動,以及聲音特性。用幾行文字向使用者展示摘要和你的計劃,然後開始建構,無需等待進一步批准,除非有東西阻礙你。
當參考資料與 references/direction.md 中的規則衝突時,首先遵循使用者的明確指示,然後是參考資料,最後是預設值。
1. 檢查環境
你需要 ffmpeg 和 Python,並安裝 numpy, pillow, opencv-python-headless 和 scipy(在工作資料夾中建立虛擬環境)。字型是系統字型;檢查三個字型角色是否都能解析。如果缺少必要的功能,請確切說明缺少什麼並停止依賴的步驟;不要將計劃呈現為完成的影片。
2. 來源確認與驗證資產
- 封面藝術: 絕不要使用截圖中的裁剪部分作為可見封面。它們太模糊,使用者會注意到。使用
scripts/find_cover.py在線上尋找官方美術作品,該腳本會搜尋 Apple/iTunes(最高 3000 px)和 JioSaavn,並將每個候選與截圖裁剪進行匹配。僅接受匹配度約 0.98 或更高的結果,並將來源資訊(來源 URL、標題、藝人、匹配分數)記錄在covers/provenance.json中。如果沒有任何匹配(例如 Spotify 生成的混音或電台),當設計簡單時(例如「喜歡的歌曲」),重新繪製一個清晰的向量版本,否則就略過該項目。 - 歌曲: 複製進來,然後對每首歌執行
scripts/beat_grid.py:拍速、強拍、每半秒的能量,以及最大的能量跳躍(Drop)。向使用者詢問 Hook 時間,而不是從轉錄中推斷。 - 音樂錄影帶:
scripts/av_sync.py會提供影片音訊與歌曲檔案之間的偏移量,這樣畫面和歌曲就能保持對嘴同步。scripts/shot_cuts.py會找出影片本身的剪輯點,這樣裁剪就可以在每個鏡頭中跟隨主體。 - 音效: 描述每個檔案(長度、峰值位置、亮度),賦予它一個角色(輕敲/點擊、咻聲、上升器、彈出、鐘聲、隆隆聲、特殊),並記下每個檔案的峰值偏移量,以便提示精準落在峰值上。
3. 在節拍網格上規劃時間線
- 將影片時間視為歌曲時間,當歌曲播放時(影片時間 = 歌曲時間 + 偏移量)。將場景變化放在強拍上,將彈出和停格動畫步驟放在拍點或八分音符上。
- 典型弧線,根據摘要調整:Logo 開場 → 資料庫或 App 頁面 → 專輯輪播 → 正在播放(動態進度條)→ Drop 時刻(大型動態文字)→ 封面牆 → 交接到下一首歌曲,包含其自身的封面動畫 → 其播放器 → 可選的音樂錄影帶段落 → 粒子結尾進入 Logo → 結尾卡片與開場匹配。
- 場景之間的每個變化都必須是連續的移動:放大某個元素成為下一個場景、匹配剪輯(兩側相同位置上的相同圖像)、或飛越進入暗區。在計劃中列出每個過場的機制。
- 文字規則:沒有文字可以放在美術作品上方,也沒有文字可以藏在 Logo 或封面後面。文字應從物體的邊緣滑出,或透過遮罩線升起,然後完全可見。位於滾動內容上方的標題屬於該內容(世界座標),因此圖塊永遠不會覆蓋它們。
參見 references/direction.md 以獲取完整的視覺規則集及其存在的原因。
4. 建構
從 assets/reference_project/ 中的工作範例開始:render.py(圖像引擎加上完整的 58 秒時間線)、audio.py(混音)和 style.json。它已經包含經過測試的建構模組:
- 帶有模糊預濾波、柔軟陰影和裁切的合成;
- 逐影格底片顆粒和光暈;
- 三種角色的
Text類別(無襯線、襯線斜體、等寬),具有緩入、停格動畫進入和漂移退出; - 遮罩線文字揭示和從物體後面滑出的揭示;
- 帶有按壓效果的輕觸漣漪;向量播放器 UI,包含動態進度條和心形輕觸;重複環結尾卡片;
- 菱形粒子系統(逐片組裝封面;將其抬起進入 Logo);
- 帶有影格混合和逐鏡頭裁剪的音樂錄影帶播放;
- 濾鏡掃掠、封包和音效提示工具。
保留引擎;用新專案的內容替換時間線和內容。閱讀 references/engine-notes.md 以了解架構和已解決的陷阱。
按此順序工作:
- 文字和佈局測試:在時間線上渲染 10–20 張靜止圖片,製作連絡表,查看它,並在進行長時間渲染之前修復佈局問題。
- 混音(
audio.py):它很快,所以測量每秒和每個交接點附近的音量(references/audio.md)。 - 在背景進行完整渲染(對於 60 秒,60 fps 在筆記型電腦上約需 10 分鐘;120 fps 約需 25 分鐘)。不要輪詢;等待完成通知。
5. 品質檢查實際匯出
對最終的 MP4 執行 scripts/motion_qa.py。它會報告影格間的跳躍、停格動畫步驟、凍結影格和異常暗的影格。對於每一個不是故意的步驟或音樂錄影帶剪輯的峰值,提取其周圍的連續影格並進行檢查。然後檢查:
- 時長、fps、影格計數和完整解碼;
- 音量(−11 至 −14 LUFS 整合,峰值約 −1 dBFS,無失真);
- 每秒音量和交接音量;
- 每個過場的兩側;
- 在手機尺寸下的文字可讀性。
誠實報告:你可以測量音訊,但無法聆聽。這樣說,並要求使用者用耳朵檢查。
對於小修復,僅重新渲染受影響的時間範圍(render.py --range a,b),並使用影格精確的修剪將其拼接回主渲染。重新封裝並重新檢查接縫。參見 references/qa-and-delivery.md。
6. 提早交付並反覆迭代
- 一旦版本完成,即使處於較長更改的中途,也立即發送可播放的 MP4。使用者經常問「完成了嗎?」並想在您繼續時觀看。
- 每輪:仔細重讀使用者的話。他們通常打字很快,並在句子中間中斷。精確應用他們要求的内容,保持其他所有內容影格完全一致,並說明改變了什麼。如果訊息被截斷,做清楚的部分,並詢問其餘部分。
- 保留先前的版本(
archive_vN/),並以版本和 fps 命名交付物。
每輪交付物:
- 主要 MP4(用於張貼的 60 fps;僅在要求時提供 120 fps,並說明社交平台最多只能播放 60 fps);
- 相同的影片,僅包含音效,無歌曲(用於搭配平台授權音樂張貼);
- 可編輯的專案壓縮檔:程式碼、樣式設定、含來源的封面、影片中使用的影格、使用的音效、混音 WAV 檔和包含時間線的 README;
- 關於什麼改變了、檢查了什麼、什麼沒檢查的簡短說明,加上提醒:歌曲、封面藝術和影片片段受版權保護:個人編輯沒問題,但平台可能會將公開貼文消音或主張權利。
參考檔案
references/direction.md:從使用者回饋中學到的視覺和編輯規則。設計前請閱讀。references/references-analysis.md:如何研究使用者的 3–4 個參考並撰寫摘要。references/audio.md:歌曲封包(低到高、高到低)、無縫節拍匹配交接、音效擺放、音量。references/engine-notes.md:參考引擎的架構,以及已解決的陷阱。references/qa-and-delivery.md:檢查、部分重新渲染和拼接、編碼、打包。scripts/:beat_grid.py、find_cover.py、av_sync.py、shot_cuts.py、motion_qa.py(使用-h檢視用法)。assets/reference_project/:完整的工作範例(Spotify 宣傳片,"Raw Rich Rare" 接 Drake 的 "National Treasures")。