品味應用程式
管線的後半段。taste-distillation 將參考素材測量為風格包;此技能則根據該風格包生成內容,並剪輯成最終成果。
執行與交付合約
原始實作包含在此處的 scripts/ 目錄中;無需另外簽出 ito-video 儲存庫。安裝 scripts/requirements.txt 以進行本地處理。僅在進行提供者執行時安裝 scripts/requirements-live.txt。除了憑證之外,即時上傳、提交和下載還需要明確設定 TASTE_FORGE_ALLOW_LIVE=1;僅在使用者授權的執行中設定。--dry-run 保持無需憑證狀態,並產生標記的佔位符。不明確的提供者逾時不會重試為新的付費任務。在決定是否再次提交之前,請先檢查提供者請求。
使用已完成的現有 take,無需任何提供者呼叫:
python scripts/pipeline.py --genre example --root stylepacks \
--takes media/take-a.mp4 media/take-b.mp4 --duration 12 --fps 30 \
--out out/review-v1.mp4
--duration 是盡力而為的節奏目標,而非精確執行時間。完整的鏡頭可能產生較短或較長的剪輯;組裝器不會重複片段或添加填充來滿足目標。輸出清單會保留實際的 duration,並添加 duration_contract,其中包含請求與實際秒數、不足、超出以及 cadence_target 政策。至少一個輸出影格的差異會明確發出警告。未提供精確持續時間模式;當需要精確執行時間時,請檢查收據並在交付前修改或拒絕該剪輯。
管線會保留每次執行的評分鏡頭檔案,因為可編輯的 FCPXML 和 EDL 會參考它們。它會拒絕輸出衝突並報告時間軸匯出失敗。已完成的渲染不等於已儲存的編輯器項目或創意核准。在即時編輯前後,請保留來源素材和版本化的項目檢查點;單獨記錄儲存路徑和摘要,與記憶體中的時間軸收據分開。
可供複製使用的 Fal 圖表及其離線輸入編譯器的文件記錄在 workflows/README.md。在提交前編譯簡報和風格方向;不要假設一個斷開連接的 schema 欄位會影響模型提示。在付費執行前,驗證當前端點欄位是否與實際提供者相符。
對於 Blender,請使用完整的紋理化來源 GLB;拓撲重建是單獨命名的衍生作品,絕不能取代該來源。blender_prop.py 支援明確的 --width 1920 --height 1080 --fps 30 --receipt receipt.json,並保留源自風格包的輪廓光和材質紋理。儲存場景與渲染場景不同;檢查收據的狀態和封裝的影像。
對於 Resolve 疊加,使用 taste.resolve.apply_placements,搭配從明確選擇、版本化的目標中注入的物件。將 source_end_mode 設定為該主機上驗證過的慣例。不要假設不同 Resolve 版本之間有包容性的來源結束。適配器會將重疊效果分配在保留的軌道之上,並在每次放置後立即檢查,並在所有附加完成後再次檢查。合成整數必須與已安裝的 API 相符;對於已驗證的 Studio 21 主機,Screen 是 5,而不是歷史建構者不正確的 22。收據僅證明記憶體中的放置。儲存專案,驗證其檢查點,然後檢查精確的渲染輸出,之後再報告交付。
何時啟動
- "製作這個風格的影片" / "套用風格包" / "補充這段素材"
- 將生成的片段組合成具有真實剪輯節奏的作品
- 從外觀中鑄造 3D 道具並將其放回影片中
- 驗證最終作品是否確實符合其參考素材
分工
模型提供內容、動態、構圖和光線結構。風格包提供色彩和節奏。 這是經由測量的,而非風格偏好——請參閱 taste-distillation 以了解數據。實際影響:
- 生成提示不包含任何色彩語言。添加 "色彩:無。渲染中性。調色在之後套用。"
- 保留兩個單獨的標誌:
--brief(發生了什麼:主題、動作、地點) 和--style-steer(看起來如何:外觀風格)。合併它們會將風格詞洩漏到場景中("青色"變成青色物體),並將主題詞洩漏到調色中。 - 模型對局部、可檢查的規則反應遠比全域規則好。 "背景純黑且無光;主體朝向白色"有效;"極端對比"則無效。
生成 TAKE,而非鏡頭
"匹配節奏"的明顯解讀是每個鏡頭生成一次。這在經濟上是荒謬的。一個平均 0.78 秒/鏡頭的參考,對上一個具有 4 秒下限的端點,會將一個 10 秒的作品變成 12 次呼叫,48 個生成秒數用於 10 個使用秒數(21% 效率),以及 12 個不相關的片段拼接成應該是連續的內容。
剪輯師會拍攝較長的 take 並在其中進行剪裁。將鏡頭分組為約 5 秒的 take:3 次呼叫,13 個生成秒數,77% 效率,以及連續的鏡頭實際上是彼此關聯的,因為它們來自同一次生成。
告訴模型你想要什麼形狀,否則它會渲染一個緩慢的鎖定推鏡,並且其中的六次剪裁讀起來像結巴:
"以單一連續 take 拍攝,內部無硬剪輯。它將在編輯中被剪成 6 段,每段約 0.8 秒,因此構圖、主體和光線必須在整個過程中不斷變化——任何 0.8 秒的視窗都必須能夠獨立成為自己的鏡頭。"
剪輯規則
- 重新編碼,絕不串流複製。 串流複製僅在關鍵影格上剪輯,在 0.78 秒時意味著鏡頭長度會將每個邊界四捨五入到最近的 GOP——破壞了管線旨在保留的確切東西。
- 在補充現有素材時,使用其自身的鏡頭邊界。 將基礎影片切成連續片段並按順序播放,只會重新組裝原始內容:每個 "剪輯" 都落在鏡頭中間且不可見。經測量,一個 20 鏡頭的組裝僅註冊了 12 個檢測到的剪輯。檢測真實邊界並每隔第 N 個進行選取,以保證連續選取是不連續的。這將剪輯測量從 1.29 秒移動到 0.83 秒,目標是 0.78 秒。
- 從參考的分佈中取樣鏡頭長度,而不是從其平均值,這樣剪輯會繼承節奏變化,而不是扁平化為均勻的片段。
調色規則
- 當你有片段時,直接測量勝過烘焙 LUT:測量它,匹配其 L* CDF,套用區域色度。
grade_clip_direct達到了 MAE 1.58 和對比度 34.0(目標 34.7)。 - 當片段的直方圖與參考不同時,進行錨定,不要進行 CDF 匹配。 將一個 68% 黑色的生成片段強制匹配到一個繁忙的參考直方圖,會將整個背景從黑色中抬起:背景保留率降至 26.0%(CDF)對比 69.0%(錨定),而 MAE 和對比度看起來仍然很好。預設使用錨定色調。
- 批次大小很重要。 一次對 48 幀進行調色會因記憶體不足而終止程序;6 幀是安全的。
已恢復的 fal 平台行為
這些觀察結果和端點範例來自已恢復的工作流程。請重新檢查當前端點元數據;它們不是對每個未來提供者版本的保證。捆綁的圖表範本記錄了單獨驗證的工作流程輸入,包括明確的生成音訊控制。
這些發現耗費了實際時間。在設計圖表之前請檢查它們。
| 限制 | 詳情 |
|---|---|
| 完全沒有 3D 渲染器 | fal 有 image-to-3d、text-to-3d、3d-to-3d,沒有其他的。每個 3d-to-3d 端點都會輸出另一個網格。沒有 3d-to-image/3d-to-video 類別,因此鑄造的 GLB 無法重新進入 fal 影片圖表。在本地渲染,然後使用 fal-ai/ffmpeg-api/images-to-video。 |
| compose 無法疊加 | fal-ai/ffmpeg-api/compose 拒絕第二個軌道,並顯示 "不支援多個影片軌道"——而且它將 image 軌道計數為影片軌道。它只能排序一個影片軌道。在本地使用 ffmpeg 合成。 |
| compose 關鍵影格是毫秒 | 回應中沒有任何內容說明這點。以秒為單位提交的執行會被接受,並傳回一個短 1000 倍的影片。 |
| extract-frame 僅提供第一/中間/最後 | 無任意時間戳記。將這三個用作三個不同的條件輸入影像。 |
| DAG 中無迴圈、無字串拼接 | 每個鏡頭的扇出必須逐節點編寫,或保持本地處理。 |
| Kling 3.0 沒有 reference-to-video | v3 系列僅有文字/影像/動態控制;reference-to-video 位於 o3 系列:fal-ai/kling-video/o3/pro/reference-to-video。 |
| 前綴不一致 | bytedance/*、tripo3d/*、meshy/*、minimax/*、openai/* 不帶有 fal-ai/ 前綴。kling-video、veo3.1、flux-*、hunyuan-3d、ffmpeg-api 則有。 |
端點選擇
| 插槽 | 最佳 | 價值替代方案 |
|---|---|---|
| 參考→影片 | bytedance/seedance-2.5/reference-to-video (~$0.473/秒 @720p) | fal-ai/kling-video/o3/pro/reference-to-video (~$0.112/秒) |
| 影像→3D | fal-ai/hunyuan-3d/v3.1/pro/image-to-3d ($0.375,最多 8 視角) | tripo3d/h3.1/image-to-3d ($0.20) |
| 文字→3D | fal-ai/hunyuan-3d/v3.1/pro/text-to-3d | tripo3d/h3.1/text-to-3d |
| 拓撲重建 | fal-ai/hunyuan-3d/v3.1/smart-topology ($0.75) | tripo3d/tripo/remesh (~便宜 75 倍) |
| 零件分割 | fal-ai/hunyuan-3d/v3.1/part (僅 FBX) | tripo3d/tripo/segment |
| 文字→影像 | fal-ai/nano-banana-pro ($0.15 固定) | fal-ai/flux-2-pro ($0.03/百萬像素) |
Seedance 的價格約為 Kling o3 的 4 倍(相同 5 秒)。它在多參考保真度(最多 50 個混合影像/影片/音訊參考)上值得這個價格,但在僅根據單一靜態影像設定條件時不值得。
模型 ID 和價格會變動。在承諾任何模型之前,請先向 fal.ai/models 驗證。
3D 分支
python mint3d.py --genre <name> --from-stills 4 --retopo --render
python mint3d.py --genre <name> --prompt "a cracked chrome visor" --render
- 先生成乾淨底片;不要從參考靜態影像中提升。 端點聲明的輸入需求是簡單背景、單一物件、物件佔畫面 >50%。參考影片則相反——拼貼、廣角鏡頭、多個主體、燒錄圖形——它們會產生雕刻噪點。文字→單一物件底片→網格的成本約為 ~$0.15,卻是可用網格與廢棄網格之間的差異。
- 多視圖是按角度命名的欄位,而非列表。
input_image_url(正面,必要),然後是back_image_url、left_image_url、right_image_url、left_front_image_url、right_front_image_url、top_image_url、bottom_image_url。沒有input_image_urls也沒有multi_view旗標——發明它們會使每個鑄造降級為單視圖,同時看似正常運作。錯誤的角度標籤比省略該視圖更糟糕,因為模型會相信它。 - 按鍵名而非位置來定址 GLB。 回應中包含
thumbnailPNG 和一個與model_glb並列的model_urls區塊;取用第一個 URL 只有在鍵名重新排序前有效,而且預覽 PNG 下載正常——直到 Blender 拒絕打開它,才沒有任何錯誤。 - 請求 PBR 貼圖。 沒有它們,網格的光照就像油漆紙板。
- 進行拓撲重建,如果有人會編輯或綁定它。生成的網格密集且雜亂。
- 在本地渲染以閉合迴路。 一旦旋轉台變成影格,它就是素材,而下游每個階段都已經處理素材——對其進行調色、剪輯、作為元素螢幕投放,或將其作為條件參考上傳。當二進位檔在 PATH 上時使用 Blender;將依賴性輕的軟體光柵化器保留為預設值,因為無頭 GL 上下文是容器中最常缺少的東西,而僅能在工作站上運作的渲染器不是管線的一部分。
驗證,然後相信
每個其他階段都聲稱一個結果。檢查它,並檢查分佈形狀,而不僅僅是統計量:
background— L*10 以下的畫面比例與風格包的數據相比。與參考比較,而不是與來源片段比較:一個 68% 黑色的生成來源比任何在 24–55% 範圍內的參考都要黑,因此 "保留來源的黑位" 要求了錯誤的事情,並同樣地原諒了被提升的調色。chroma_mae— 每個區域的 a*/b* 誤差,使用中位數(匹配風格包目標的測量方式;這裡使用平均值會將一個對偏態敏感的統計量與一個穩健的統計量進行比較,並將定義不匹配報告為誤差)。contrast/black_point/white_pointbanding— 空白的 L* 直方圖區間位於被佔用的區間之間。計算總空白區間是無效的:一個合法的暗場景片段具有空白的亮部區間。cadence— 檢測到的平均鏡頭長度與參考的鏡頭長度比較。
注意單位陷阱:OpenCV 會根據 dtype 改變 Lab 慣例。在 float32 上,L* 是 0–100,a*/b* 是有符號的;在 uint8 上,L* 是 0–255,a*/b* 是偏差 +128。混合它們會報告數百的色度誤差。
完整鏈
python pipeline.py --genre <name> --refs a.mov b.mov \
--brief "what happens" --duration 12 \
--base-video existing.mp4 --out out/FINAL.mp4
鑄造 → 蒸餾 → (mint3d) → 套用 → 偽造 → 驗證。階段 1–3 是快取的,因此在簡報上迭代永遠不會重新測量任何東西。--dry-run 會存根每個網路呼叫:計劃、提示、軌道佈局和清單仍然都會被執行。
反模式
| 不要 | 原因 |
|---|---|
| 每個鏡頭生成一次 | 21% 效率,12 個不相關的片段 |
| 將顏色放入提示語 | 經測量無效;偏離了 LUT 所需的 neutral 基底 |
| 串流複製剪輯 | 僅關鍵影格邊界破壞了次秒節奏 |
| 連續剪裁基礎影片 | 重新組裝原始內容;每個剪輯都不可見 |
| 信賴 compose 能疊加 | 它無法;它會拒絕第二個軌道 |
| 向 compose 發送秒數 | 默默變短 1000 倍 |
| 僅根據 MAE 出貨 | 加上背景份額檢查 |
借用素材帶有拍攝應用的 UI
在交付的剪輯中發現的單一最嚴重缺陷:完成的影片運送了其他人的按讚按鈕、觀看計數器和評論氣泡,因為基礎
…
[此處截斷以進行翻譯]