42 秒的宣傳片,沒開過剪輯軟體:用 AI 逐幀拍一張會動的地圖
幫找回毛孩做了一支 42 秒的短片。全程沒有開過剪輯軟體,也沒有錄過螢幕:畫面是程式一格一格算出來的。這篇把做法寫下來,包括中間做壞的那六版。
2026-08-31 作者 William Hsu
先看成品
結構很簡單:一隻狗的照片 → 照片縮成地圖上的一個圖釘 → 地圖拉遠、案件湧現 → 全台灣 → 圖釘飛出去排成網站的封面。
開頭那隻狗是生成的,這件事要先講
片頭的臘腸狗是本機的影片生成模型(MiniMax H3,跑在自己家的顯示卡上)生成的,牠的「走失案件」只存在於錄影用的瀏覽器裡—— 用一段腳本臨時插進地圖,正式網站沒有這筆資料。原因很直接:那個站有人在用來找真的毛孩,塞一筆假資料進去, 是把別人的注意力當道具。畫面效果一模一樣,資料庫乾乾淨淨。
片子裡其他所有圖釘都是地圖上真實的通報案件,「超過八千隻」也是官方開放資料的數字。
地圖不能用錄的
最直覺的做法是叫瀏覽器做鏡頭動畫、錄螢幕。實測馬上放棄:密度拉滿時畫面上有四百多個照片圖釘, 連續縮放會嚴重掉幀,二十秒的拉遠在成品裡幾乎是瞬間跳過去。
改成拍照拼接:只在六個縮放級距各截一張底圖(每階差 1.68 級、約 3.2 倍),中間的過場用 Web Mercator 投影公式 自己算——知道每張圖的中心經緯度和縮放級別,就能算出「上一張的視野」在「下一張」裡是哪一塊, 按指數內插裁切放大,就是等速拉遠。600 格,一格一格輸出。

圖釘要跟底圖分開處理
第一版把整張截圖直接放大,立刻被抓到問題:地圖上的圖釘是固定 68 像素、畫在螢幕上的,不會隨地圖縮放變大變小。 把整張截圖放大,圖釘就跟著忽大忽小,每換一段就「脈動」一次。
正解是底圖與圖釘分開:底圖照常縮放,圖釘另外截、按經緯度換算螢幕位置、以固定大小逐格貼回去。 於是拉遠時案件是一顆一顆「冒出來」的,圖釘永遠一樣大。
圖釘的截法又重做了三次,全是被人眼抓出來的:
- 整張截圖裁一格下來去背——密集處會把鄰居圖釘一起裁進去,一格裡有三隻狗
- 改成每個圖釘單獨顯示再截,用「有圖釘減去沒圖釘」做去背——圖釘的陰影是半透明的, 相減之後陰影那圈連底下的路名一起變成貼圖的一部分
- 最後:截的時候把地圖整個藏掉、頁面背景設成透明,直接得到帶真實透明度的 PNG,陰影才是陰影

旁白與配樂也是合成的
旁白是微軟的台灣男聲(edge-tts),語速放慢 8%,一句一句對著畫面時間軸排。 配樂本來想找免費音樂,後來直接用程式合成:一段氈化鋼琴的琶音,每個音都有起音和衰減的包絡—— 第一版用純正弦波,聽起來是電話按鍵的嗡嗡聲,包絡才是讓它像樂器的關鍵。
七個版本才定稿
這支片總共出了七版,每一版的問題都是人看出來的,不是程式報錯:圖釘拼到鄰居、陰影帶到底圖、 目擊標記混進貼圖、畫質只有 SD、最後一句旁白改了三次。AI 可以把片子拍出來, 但「這裡不對」全部要人指出來。這大概是整件事最真實的分工。
工具本身在 lazetool.com/lost-pet。