LIVING-TECH FILMS · MAKING-OF

五片實作脈絡

同一批生科教室素材,如何在你外出的數小時內被自動剪成五支不同風格的成片。
📅 2026-06-21🎬 5 支成片🛠 ffmpeg + deface + PIL🤖 Claude 自動執行

1任務與交付

你出門前交辦三件事,下午七點前備齊:(1) 五支影片的腳本,用網頁+分鏡圖呈現;(2) 五支影片各自製作完成並驗證;(3) 實作脈絡,同樣用網站呈現。

storyboard.html 腳本圖renders/ 五支成片making-of.html(本頁)

素材=一台固定運動攝影機在生科木作課跨 8 天整日連拍(72 段 .mov)。先前已做過水族館 vlog、水庫紀錄片、生科老師期末週、一週年晚餐四支,這次刻意做成完全不同的五種電影語言。

2為何用 ffmpeg 而非 Palmier

你的既有工作流是 Palmier+MCP。但這次實際偵察後改走 ffmpeg 主力,原因如實記錄:

限制(手冊§6/§8 與現場)對自動化的衝擊
你外出,Palmier app 未開 → MCP 回 Editor not available無法用 MCP 建時間軸
一專案一時間軸;切換需 GUI File→Open五支=五專案,無人操作 GUI 無法切換
匯出需在 GUI 右上 Export 手動點無人可按匯出 → 產不出成片檔
deface 去識別、縮時預壓、配樂合成本來就是 ffmpeg 原生工作
結論 ffmpeg 路徑可全自動、可重現、可逐支驗證、可直接產出 MP4,且成片仍能再匯入 Palmier 微調。這不是迴避你的工具,而是在「無人值守」這個前提下唯一能跑完五支的方式——並對你誠實說明。

3流水線架構

每支影片走同一條多趟流水線,每趟產出中間檔、可單獨抽格驗證,最穩健:

① 選鏡+切段 ② 風格濾鏡 ③ deface 去識別 ④ xconcat 交叉淡接 ⑤ 疊字卡/資料層 ⑥ 配樂淡入淡出 ⑦ 抽格驗證

選鏡靠先做的縮圖接觸表(每拍攝日一張 5×5,橫跨 34 分鐘)快速編目「空景/講授/動手/機具/剪影」等鏡頭原型,再指派給五支。

4自製工具(三支可重用)

mktext.py — 透明文字卡產生器

這台 ffmpeg 沒有編入 drawtext(先前字幕都靠 Palmier,所以從沒踩到)。改用 Python PIL 把文字渲染成含 alpha 的 PNG,再用 ffmpeg overlay 疊上——反而能完整控制字型、字距、描邊。JSON 驅動,五片所有字卡共用。

xconcat.py — xfade 交叉淡接串接

把多段同尺寸影片以 xfade 串接,offset 逐段累加;並強制每段正規化到 1920×1080(因 deface 會把畫面墊高到 1088)。

# xfade offset 累加核心
acc = d[0]
for i in 1..n-1:
    offset = acc - D          # D = 交叉淡接秒數
    [prev][n_i] xfade=duration=D:offset=offset
    acc += d[i] - D

build_{C,E,B,D}.sh — 各片段落渲染

每支一個腳本,封裝該片的「選鏡清單+風格濾鏡+deface 旗標+縮時倍速」,背景平行渲染。

5各片風格配方

核心 ffmpeg 配方配樂
A 縮時setpts=PTS/N 縮時 + tmix=8 殘影 + 暈影;空↔滿循環Long Note Two
C 懷舊褪色 curves(提黑)+ 低飽和 + 暖陰影/冷高光 colorbalance + noise 顆粒 + 暈影 + 慢推Beauty Flow
E 監視器冷調低飽和 + 重暈影 + 掃描線 PNG + 綠色 HUD/時間碼 + deface 模糊=遮蔽Echoes of Time v2
B 魏斯置中裁切(對稱)+ 粉彩(提亮、低對比、暖)+ 粉彩章節卡 + 硬切Fig Leaf Times Two
D 偽紀錄自然調 + 局部 zoompan 推近 + deface + 下三分標喜劇字幕 + 假 UIWallpaper
# C 懷舊調色(節錄)
curves=master='0/0.06 0.5/0.5 1/0.95',eq=saturation=0.8,
colorbalance=rs=0.04:bs=-0.05:rh=0.05:bh=-0.04,noise=alls=9:allf=t,vignette

6未成年保護(你的鐵則)

素材全是戴口罩的國中生。依你既有規範「未成年必做 deface」,採三層防護+選鏡迴避

手段用在哪
deface 1.5.0 偵測臉並模糊(--thresh 0.2 --mask-scale 1.3所有出現人物的段落
tmix 多幀平均:移動者化為殘影A 縮時人流
選鏡迴避:剪影/背影/物件/空景C 懷舊、B/E 物件章
風格即遮蔽:E 的模糊=監視器遮蔽美學E 監視器
驗證導向 每支都抽靜格檢查「暫停時是否能辨識個人」。曾發現 tmix=5 對靜坐者不夠 → 加到 tmix=8 並加跑 deface;也發現一段誤選到坐滿學生卻沒 deface 的鏡頭 → 立即換鏡。

7實戰除錯紀錄(9 個雷)

自動化過程中實際踩到並修掉的坑,供日後剪片參考:

① ffmpeg 沒有 drawtext 濾鏡
字幕無法用 ffmpeg 燒。解:改用 Python PIL 產透明 PNG + overlay。
② zsh 不自動分詞
for n in $list 把整串當一個詞。解:改用 zsh 陣列 list=(a b c)
③ PNG 疊圖淡入失效
圖片輸入沒 -loop 1 只存在 t≈0 一格,st=49.5 的 alpha 淡入永遠觸發不到。解:每張字卡輸入加 -loop 1 -framerate 30
④ deface 輸出 1088 高
deface 把 1080 墊到 1088(16 的倍數),xfade 因尺寸不符整支失敗。解:xconcat 內每段先 scale=1920:1080 正規化。
⑤ 字幕缺字(東/個/長/來/們)
Songti.ttc index 0 是簡體,缺繁體專屬字形。解:用 index 3=Songti TC(繁體襯線)。STHeiti 兩款也驗證為繁體齊全。
⑥ 淺色字在亮背景洗掉
褪色片的亮窗區把淺色字吃掉。解:描邊加粗加深(stroke_w 3、深色 alpha 190)。
⑦ 縮時段只剩 0.1 秒
把「來源秒數」當「輸出秒數」:5s ÷50× = 0.1s。解:輸出 5s = 讀 250s 來源再 ÷50。
⑧ 選鏡誤判(空景變滿班)
B 第三章「小塔」誤選到坐滿學生的鏡頭,且未 deface。解:換成已驗證的空桌木框鏡頭。
⑨ tmix=5 匿名不足
靜坐學生仍可辨識。解:tmix 提到 8 並加跑 deface(抽格驗證通過)。

8驗證方法

每支成片都做:ffprobe 確認時長/編碼/音軌存在,再用 ffmpeg -ss 抽多張關鍵時刻靜格實際看過(字卡是否顯示、臉是否匿名、調色是否到位)。本頁的除錯紀錄全部來自這個「抽格→看→修」的迴圈。

9Onshape 三支與發佈上線

第二批素材是 2019 Onshape CAD 研習實錄(26 段、約 21GB)——趙珩宇老師本人入鏡講解與操作 Onshape,畫面中無學生。因此這批不需要 deface(主角是本人、同意入鏡),剪成三支:

做法
教師特色宣傳片 0:3522 個動態短鏡(講解手勢 ↔ CAD B-roll ↔ 完成作品)快接 + 開場品牌卡 / tagline 下三分標 / 聯絡卡 + Inspired 配樂
建模 Speed-run 0:55setpts=PTS/8 把 CAD 螢幕加速 + 步驟字幕(草圖→3D→列印)+ Itty Bitty 8 Bit
精華導覽(章節) 0:44四章主題卡 + 各章 2× 加速段落 + Inspired

發佈上線(GitHub Pages)

全部成片(5 片 + 快切 + Onshape 3 支)以 <video> 嵌入 storyboard.html 的「看片」區,發佈到公開 repo henrychao521/livingtech-filmshenrychao521.github.io/livingtech-films/,並接進主站導覽。

延伸:遮罩特效(MediaPipe 人像分割)

MediaPipe Selfie Segmentation(model_selection=1)對影片逐幀產生「人」遮罩(時間平滑降閃爍;工具 work/segmask.py),再以 ffmpeg maskedmergealphamerge 選擇性調色,輸出五種放上「看片」頁:主體聚光、人像模式(背景模糊)、選擇性彩色、背景抽換(漸層棚景)、主體光暈。同一套遮罩反過來也能做「比方塊更自然的去識別」。

第二批新踩雷 ⑩ 字卡用「・」(U+30FB) STHeiti 無此字形 → 顯示方塊,改用「·」(U+00B7);英文 kicker 誤把中文放進 Futura(無 CJK) → 改純英文。 ⑪ 多個 ffmpeg 同時跑 → CPU 互搶造成合成「假卡死」,改前景單跑即 ~20 秒完成。 ⑫ 改公開站前本機 clone 已落後遠端多個提交 → 務必先 git fetch+同步再改再推。

10成果與交付

標題長度狀態
A一格之內,一個學期(縮時交響曲)0:56✅ 已驗證
C那年秋天,我們做了一個東西(A24 懷舊)0:35✅ 已驗證
E受試者編號 4471(監視器科幻)0:32✅ 已驗證
B林海工藝研究所(魏斯安德森)0:42✅ 已驗證
D生科教室觀察日記(偽紀錄喜劇)0:32✅ 已驗證
SZ快切混剪(跨五風格高速硬切)0:51✅ 已驗證
Onshape · 教師特色宣傳片0:35✅ 已驗證
Onshape · 建模 Speed-run0:55✅ 已驗證
Onshape · 精華導覽(章節)0:44✅ 已驗證
檔案位置 成片在 /Volumes/128G/livingtech-films/renders/;本頁與 storyboard.htmllivingtech-films/ 根目錄;可重用工具與中間檔在 work/。所有 MP4 皆 1080p / H.264 / AAC,可直接播放或再匯入 Palmier 微調。
音樂 皆 Kevin MacLeod(CC BY 4.0),五支不重複、片尾均標註。